From 40f5df35aa4780823d1198399b7ebe5feba9ca77 Mon Sep 17 00:00:00 2001 From: vsr Date: Tue, 5 Jun 2012 11:33:32 +0000 Subject: [PATCH] Merge from V6_5_BR 05/06/2012 --- GEOM_version.h.in | 2 +- Makefile.am | 2 +- adm_local/Makefile.am | 2 +- adm_local/cmake_files/FindGEOM.cmake | 2 +- adm_local/cmake_files/Makefile.am | 2 +- adm_local/unix/Makefile.am | 2 +- adm_local/unix/config_files/Makefile.am | 2 +- adm_local/unix/config_files/check_GEOM.m4 | 2 +- adm_local/unix/config_files/check_GUI.m4 | 2 +- adm_local/unix/config_files/check_OpenCV.m4 | 4 +- adm_local/unix/make_common_starter.am | 2 +- bin/Makefile.am | 2 +- bin/addvars2notebook_GEOM.py | 2 +- bin/geom_setenv.py | 2 +- build_cmake | 2 +- build_cmake.bat | 2 +- build_configure | 2 +- clean_configure | 2 +- configure.ac | 95 +- doc/Makefile.am | 2 +- doc/docutils/Makefile.am | 2 +- doc/salome/Makefile.am | 2 +- doc/salome/gui/GEOM/Makefile.am | 2 +- doc/salome/gui/GEOM/doxyfile.in | 2 +- doc/salome/gui/GEOM/doxyfile_py.in | 2 +- doc/salome/gui/GEOM/doxyfile_tui.in | 2 +- doc/salome/gui/GEOM/images/bring_example.png | Bin 53635 -> 0 bytes doc/salome/gui/GEOM/images/chamfer1.png | Bin 11671 -> 24982 bytes doc/salome/gui/GEOM/images/chamfer2.png | Bin 16389 -> 31698 bytes doc/salome/gui/GEOM/images/chamfer3.png | Bin 15243 -> 30252 bytes doc/salome/gui/GEOM/images/chamfer4.png | Bin 15226 -> 30392 bytes .../GEOM/images/contour_detect_snapshot.png | Bin 0 -> 2996 bytes .../images/contour_detection_example2.png | Bin 0 -> 549536 bytes doc/salome/gui/GEOM/images/feature_detect.png | Bin 0 -> 540 bytes .../gui/GEOM/images/feature_detection_dlg.png | Bin 0 -> 22831 bytes .../GEOM/images/feature_detection_dlg2.png | Bin 0 -> 18370 bytes .../GEOM/images/feature_detection_dlg3.png | Bin 0 -> 28100 bytes doc/salome/gui/GEOM/images/fillet1.png | Bin 11195 -> 23714 bytes doc/salome/gui/GEOM/images/fillet2.png | Bin 14518 -> 27969 bytes doc/salome/gui/GEOM/images/fillet3.png | Bin 14448 -> 28000 bytes doc/salome/gui/GEOM/images/front1.png | Bin 0 -> 3682 bytes doc/salome/gui/GEOM/images/front2.png | Bin 0 -> 3680 bytes doc/salome/gui/GEOM/images/import_picture.png | Bin 0 -> 519 bytes doc/salome/gui/GEOM/images/material.png | Bin 0 -> 33790 bytes doc/salome/gui/GEOM/images/material_VTK.png | Bin 25134 -> 33334 bytes doc/salome/gui/GEOM/images/material_back.png | Bin 37898 -> 0 bytes doc/salome/gui/GEOM/images/material_front.png | Bin 37505 -> 0 bytes .../gui/GEOM/images/occ_view_camera_dump.png | Bin 0 -> 682 bytes .../gui/GEOM/images/picture_import_dlg.png | Bin 0 -> 17692 bytes doc/salome/gui/GEOM/images/pref15.png | Bin 0 -> 46204 bytes doc/salome/gui/GEOM/images/rectangle_icon.png | Bin 0 -> 361 bytes doc/salome/gui/GEOM/images/sketcher_dlg.png | Bin 39913 -> 40318 bytes doc/salome/gui/GEOM/images/sketcher_dlg2.png | Bin 0 -> 28647 bytes doc/salome/gui/GEOM/input/angle.doc | 20 + doc/salome/gui/GEOM/input/basic_prop.doc | 17 + doc/salome/gui/GEOM/input/boudaries.doc | 18 + doc/salome/gui/GEOM/input/bounding_box.doc | 25 + doc/salome/gui/GEOM/input/bring_to_front.doc | 17 +- doc/salome/gui/GEOM/input/center_mass.doc | 16 + .../GEOM/input/check_compound_of_blocks.doc | 33 + .../GEOM/input/check_self_intersections.doc | 22 + doc/salome/gui/GEOM/input/check_shape.doc | 18 + doc/salome/gui/GEOM/input/color.doc | 7 +- .../gui/GEOM/input/creating_filling.doc | 14 +- .../gui/GEOM/input/creating_sketcher.doc | 89 +- .../GEOM/input/creating_topological_obj.doc | 17 + .../GEOM/input/extruded_boss_operation.doc | 28 +- .../gui/GEOM/input/extruded_cut_operation.doc | 24 +- doc/salome/gui/GEOM/input/features.doc | 20 + doc/salome/gui/GEOM/input/free_faces.doc | 19 + .../input/geometrical_object_properties.doc | 5 +- .../gui/GEOM/input/geometry_preferences.doc | 93 + .../gui/GEOM/input/importing_picture.doc | 32 + doc/salome/gui/GEOM/input/index.doc | 32 +- doc/salome/gui/GEOM/input/inertia.doc | 21 + doc/salome/gui/GEOM/input/material.doc | 179 +- doc/salome/gui/GEOM/input/min_distance.doc | 16 + .../GEOM/input/multi_rotation_operation.doc | 9 +- .../input/multi_translation_operation.doc | 13 +- doc/salome/gui/GEOM/input/normal.doc | 16 + doc/salome/gui/GEOM/input/pictures.doc | 12 + .../gui/GEOM/input/point_coordinates.doc | 15 + .../gui/GEOM/input/repairing_operations.doc | 2 +- .../gui/GEOM/input/shape_recognition.doc | 98 + doc/salome/gui/GEOM/input/tolerance.doc | 17 + .../GEOM/input/transformation_operations.doc | 8 - .../gui/GEOM/input/transforming_geom_objs.doc | 11 +- doc/salome/gui/GEOM/input/tui_angle.doc | 53 + .../gui/GEOM/input/tui_basic_properties.doc | 26 + .../gui/GEOM/input/tui_bounding_box.doc | 17 + .../gui/GEOM/input/tui_center_of_mass.doc | 25 + .../input/tui_check_compound_of_blocks.doc | 27 + .../input/tui_check_self_intersections.doc | 17 + doc/salome/gui/GEOM/input/tui_check_shape.doc | 17 + .../gui/GEOM/input/tui_free_boundaries.doc | 85 + doc/salome/gui/GEOM/input/tui_free_faces.doc | 52 + doc/salome/gui/GEOM/input/tui_inertia.doc | 20 + .../gui/GEOM/input/tui_measurement_tools.doc | 437 +---- .../gui/GEOM/input/tui_min_distance.doc | 15 + doc/salome/gui/GEOM/input/tui_normal_face.doc | 23 + .../gui/GEOM/input/tui_point_coordinates.doc | 27 + .../gui/GEOM/input/tui_swig_examples.doc | 1 + .../gui/GEOM/input/tui_test_measures.doc | 54 + doc/salome/gui/GEOM/input/tui_tolerance.doc | 20 + .../GEOM/input/tui_topological_geom_objs.doc | 261 +++ doc/salome/gui/GEOM/input/tui_whatis.doc | 15 + .../GEOM/input/using_boolean_operations.doc | 2 +- .../GEOM/input/using_measurement_tools.doc | 291 +-- .../gui/GEOM/input/viewing_geom_obj.doc | 8 +- doc/salome/gui/GEOM/input/whatis.doc | 27 + doc/salome/gui/GEOM/static/footer.html | 2 +- doc/salome/gui/Makefile.am | 2 +- doc/salome/tui/Makefile.am | 13 +- doc/salome/tui/doxyfile.in | 4 +- doc/salome/tui/static/footer.html | 2 +- idl/GEOM_Gen.idl | 13 +- idl/GEOM_Superv.idl | 2 +- idl/Makefile.am | 14 +- resources/GEOMCatalog.xml.in | 2 +- resources/GEOM_en.xml | 2 +- resources/GEOM_fr.xml | 2 +- resources/Makefile.am | 6 +- resources/SalomeApp.xml.in | 5 +- resources/rectangle.png | Bin 0 -> 361 bytes resources/shading.png | Bin 997 -> 751 bytes resources/shading_with_edges.png | Bin 0 -> 730 bytes resources/wireframe.png | Bin 0 -> 568 bytes src/ARCHIMEDE/ARCHIMEDE.pro | 56 - src/ARCHIMEDE/Archimede_VolumeSection.cxx | 2 +- src/ARCHIMEDE/Archimede_VolumeSection.hxx | 2 +- src/ARCHIMEDE/Makefile.am | 2 +- src/AdvancedGUI/AdvancedGUI.cxx | 2 +- src/AdvancedGUI/AdvancedGUI.h | 2 +- src/AdvancedGUI/AdvancedGUI_PipeTShapeDlg.cxx | 2 +- src/AdvancedGUI/AdvancedGUI_PipeTShapeDlg.h | 2 +- src/AdvancedGUI/Makefile.am | 2 +- src/BREPExport/BREPExport.cxx | 2 +- src/BREPExport/BREPExport.pro | 47 - src/BREPExport/Makefile.am | 2 +- src/BREPImport/BREPImport.cxx | 2 +- src/BREPImport/BREPImport.pro | 47 - src/BREPImport/Makefile.am | 2 +- src/BasicGUI/BasicGUI.cxx | 2 +- src/BasicGUI/BasicGUI.h | 2 +- src/BasicGUI/BasicGUI.pro | 73 - src/BasicGUI/BasicGUI_ArcDlg.cxx | 2 +- src/BasicGUI/BasicGUI_ArcDlg.h | 2 +- src/BasicGUI/BasicGUI_CircleDlg.cxx | 2 +- src/BasicGUI/BasicGUI_CircleDlg.h | 2 +- src/BasicGUI/BasicGUI_CurveDlg.cxx | 2 +- src/BasicGUI/BasicGUI_CurveDlg.h | 2 +- src/BasicGUI/BasicGUI_EllipseDlg.cxx | 2 +- src/BasicGUI/BasicGUI_EllipseDlg.h | 2 +- src/BasicGUI/BasicGUI_LineDlg.cxx | 2 +- src/BasicGUI/BasicGUI_LineDlg.h | 2 +- src/BasicGUI/BasicGUI_MarkerDlg.cxx | 2 +- src/BasicGUI/BasicGUI_MarkerDlg.h | 2 +- src/BasicGUI/BasicGUI_ParamCurveWidget.cxx | 2 +- src/BasicGUI/BasicGUI_ParamCurveWidget.h | 2 +- src/BasicGUI/BasicGUI_PlaneDlg.cxx | 2 +- src/BasicGUI/BasicGUI_PlaneDlg.h | 2 +- src/BasicGUI/BasicGUI_PointDlg.cxx | 2 +- src/BasicGUI/BasicGUI_PointDlg.h | 2 +- src/BasicGUI/BasicGUI_VectorDlg.cxx | 2 +- src/BasicGUI/BasicGUI_VectorDlg.h | 2 +- src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx | 2 +- src/BasicGUI/BasicGUI_WorkingPlaneDlg.h | 2 +- src/BasicGUI/Makefile.am | 2 +- src/BlocksGUI/BlocksGUI.cxx | 2 +- src/BlocksGUI/BlocksGUI.h | 2 +- src/BlocksGUI/BlocksGUI_BlockDlg.cxx | 2 +- src/BlocksGUI/BlocksGUI_BlockDlg.h | 2 +- src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx | 2 +- src/BlocksGUI/BlocksGUI_ExplodeDlg.h | 2 +- src/BlocksGUI/BlocksGUI_PropagateDlg.cxx | 2 +- src/BlocksGUI/BlocksGUI_PropagateDlg.h | 2 +- src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx | 2 +- src/BlocksGUI/BlocksGUI_QuadFaceDlg.h | 2 +- src/BlocksGUI/BlocksGUI_TrsfDlg.cxx | 2 +- src/BlocksGUI/BlocksGUI_TrsfDlg.h | 2 +- src/BlocksGUI/Makefile.am | 2 +- src/BooleanGUI/BooleanGUI.cxx | 2 +- src/BooleanGUI/BooleanGUI.h | 2 +- src/BooleanGUI/BooleanGUI.pro | 59 - src/BooleanGUI/BooleanGUI_Dialog.cxx | 2 +- src/BooleanGUI/BooleanGUI_Dialog.h | 2 +- src/BooleanGUI/Makefile.am | 2 +- src/BuildGUI/BuildGUI.cxx | 2 +- src/BuildGUI/BuildGUI.h | 2 +- src/BuildGUI/BuildGUI.pro | 64 - src/BuildGUI/BuildGUI_CompoundDlg.cxx | 2 +- src/BuildGUI/BuildGUI_CompoundDlg.h | 2 +- src/BuildGUI/BuildGUI_EdgeDlg.cxx | 2 +- src/BuildGUI/BuildGUI_EdgeDlg.h | 2 +- src/BuildGUI/BuildGUI_FaceDlg.cxx | 3 +- src/BuildGUI/BuildGUI_FaceDlg.h | 2 +- src/BuildGUI/BuildGUI_ShellDlg.cxx | 2 +- src/BuildGUI/BuildGUI_ShellDlg.h | 2 +- src/BuildGUI/BuildGUI_SolidDlg.cxx | 2 +- src/BuildGUI/BuildGUI_SolidDlg.h | 2 +- src/BuildGUI/BuildGUI_WireDlg.cxx | 2 +- src/BuildGUI/BuildGUI_WireDlg.h | 2 +- src/BuildGUI/Makefile.am | 2 +- src/DisplayGUI/DisplayGUI.cxx | 63 +- src/DisplayGUI/DisplayGUI.h | 7 +- src/DisplayGUI/DisplayGUI.pro | 66 - src/DisplayGUI/Makefile.am | 2 +- src/DlgRef/DlgRef.cxx | 2 +- src/DlgRef/DlgRef.h | 2 +- src/DlgRef/DlgRef.pro | 148 -- src/DlgRef/Makefile.am | 2 +- src/EntityGUI/EntityGUI.cxx | 2 +- src/EntityGUI/EntityGUI.h | 2 +- src/EntityGUI/EntityGUI.pro | 70 - src/EntityGUI/EntityGUI_3DSketcherDlg.cxx | 2 +- src/EntityGUI/EntityGUI_3DSketcherDlg.h | 2 +- .../EntityGUI_FeatureDetectorDlg.cxx | 23 +- src/EntityGUI/EntityGUI_FeatureDetectorDlg.h | 5 + src/EntityGUI/EntityGUI_PictureImportDlg.cxx | 6 +- src/EntityGUI/EntityGUI_PictureImportDlg.h | 2 +- src/EntityGUI/EntityGUI_SketcherDlg.cxx | 64 +- src/EntityGUI/EntityGUI_SketcherDlg.h | 2 +- src/EntityGUI/EntityGUI_SubShapeDlg.cxx | 74 +- src/EntityGUI/EntityGUI_SubShapeDlg.h | 2 +- src/EntityGUI/EntityGUI_Widgets.cxx | 2 +- src/EntityGUI/EntityGUI_Widgets.h | 2 +- src/EntityGUI/Makefile.am | 2 +- src/GEOM/GEOM.pro | 80 - src/GEOM/GEOM_Application.cxx | 2 +- src/GEOM/GEOM_Application.hxx | 2 +- src/GEOM/GEOM_Application.ixx | 2 +- src/GEOM/GEOM_Application.jxx | 2 +- ...teratorOfDataMapOfAsciiStringTransient.hxx | 2 +- ...ratorOfDataMapOfAsciiStringTransient_0.cxx | 2 +- ...MapNodeOfDataMapOfAsciiStringTransient.hxx | 2 +- ...pNodeOfDataMapOfAsciiStringTransient_0.cxx | 2 +- .../GEOM_DataMapOfAsciiStringTransient.hxx | 3 +- .../GEOM_DataMapOfAsciiStringTransient_0.cxx | 2 +- src/GEOM/GEOM_Engine.cxx | 3 +- src/GEOM/GEOM_Engine.hxx | 3 +- src/GEOM/GEOM_Function.cxx | 3 +- src/GEOM/GEOM_Function.hxx | 2 +- src/GEOM/GEOM_IOperations.cxx | 2 +- src/GEOM/GEOM_IOperations.hxx | 2 +- src/GEOM/GEOM_ISubShape.hxx | 2 +- src/GEOM/GEOM_Object.cxx | 2 +- src/GEOM/GEOM_Object.hxx | 2 +- src/GEOM/GEOM_PythonDump.cxx | 2 +- src/GEOM/GEOM_PythonDump.hxx | 2 +- src/GEOM/GEOM_Solver.cxx | 2 +- src/GEOM/GEOM_Solver.hxx | 2 +- src/GEOM/GEOM_SubShapeDriver.cxx | 2 +- src/GEOM/GEOM_SubShapeDriver.hxx | 2 +- src/GEOM/Handle_GEOM_Application.hxx | 2 +- ...MapNodeOfDataMapOfAsciiStringTransient.hxx | 2 +- src/GEOM/Makefile.am | 5 +- src/GEOMAlgo/BlockFix.cdl | 12 +- src/GEOMAlgo/BlockFix.cxx | 248 ++- src/GEOMAlgo/BlockFix.hxx | 63 +- src/GEOMAlgo/BlockFix.ixx | 4 +- src/GEOMAlgo/BlockFix.jxx | 2 +- src/GEOMAlgo/BlockFix_BlockFixAPI.cdl | 22 +- src/GEOMAlgo/BlockFix_BlockFixAPI.cxx | 22 +- src/GEOMAlgo/BlockFix_BlockFixAPI.hxx | 20 +- src/GEOMAlgo/BlockFix_BlockFixAPI.ixx | 20 +- src/GEOMAlgo/BlockFix_BlockFixAPI.jxx | 2 +- src/GEOMAlgo/BlockFix_BlockFixAPI.lxx | 12 +- src/GEOMAlgo/BlockFix_CheckTool.cdl | 16 +- src/GEOMAlgo/BlockFix_CheckTool.cxx | 18 +- src/GEOMAlgo/BlockFix_CheckTool.hxx | 24 +- src/GEOMAlgo/BlockFix_CheckTool.ixx | 4 +- src/GEOMAlgo/BlockFix_CheckTool.jxx | 2 +- .../BlockFix_PeriodicSurfaceModifier.cdl | 26 +- .../BlockFix_PeriodicSurfaceModifier.cxx | 61 +- .../BlockFix_PeriodicSurfaceModifier.hxx | 24 +- .../BlockFix_PeriodicSurfaceModifier.ixx | 20 +- .../BlockFix_PeriodicSurfaceModifier.jxx | 2 +- src/GEOMAlgo/BlockFix_SphereSpaceModifier.cdl | 26 +- src/GEOMAlgo/BlockFix_SphereSpaceModifier.cxx | 67 +- src/GEOMAlgo/BlockFix_SphereSpaceModifier.hxx | 24 +- src/GEOMAlgo/BlockFix_SphereSpaceModifier.ixx | 20 +- src/GEOMAlgo/BlockFix_SphereSpaceModifier.jxx | 2 +- src/GEOMAlgo/BlockFix_UnionEdges.cdl | 16 +- src/GEOMAlgo/BlockFix_UnionEdges.cxx | 229 ++- src/GEOMAlgo/BlockFix_UnionEdges.hxx | 24 +- src/GEOMAlgo/BlockFix_UnionEdges.ixx | 4 +- src/GEOMAlgo/BlockFix_UnionEdges.jxx | 2 +- src/GEOMAlgo/BlockFix_UnionFaces.cdl | 18 +- src/GEOMAlgo/BlockFix_UnionFaces.cxx | 3 +- src/GEOMAlgo/BlockFix_UnionFaces.hxx | 20 +- src/GEOMAlgo/BlockFix_UnionFaces.ixx | 4 +- src/GEOMAlgo/BlockFix_UnionFaces.jxx | 2 +- src/{GEOMAlgo_NEW => GEOMAlgo}/FILES | 0 src/GEOMAlgo/GEOMAlgo.cdl | 527 +++--- src/GEOMAlgo/GEOMAlgo.pro | 247 --- src/GEOMAlgo/GEOMAlgo_Algo.cdl | 64 - src/GEOMAlgo/GEOMAlgo_Algo.cxx | 20 +- src/GEOMAlgo/GEOMAlgo_Algo.hxx | 112 +- src/GEOMAlgo/GEOMAlgo_Algo.ixx | 27 - src/GEOMAlgo/GEOMAlgo_Algo.jxx | 25 - src/GEOMAlgo/GEOMAlgo_Builder.cdl | 255 --- src/GEOMAlgo/GEOMAlgo_Builder.cxx | 64 +- src/GEOMAlgo/GEOMAlgo_Builder.hxx | 399 ++-- src/GEOMAlgo/GEOMAlgo_Builder.ixx | 27 - src/GEOMAlgo/GEOMAlgo_Builder.jxx | 37 - src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl | 107 -- src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx | 31 +- src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx | 165 +- src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx | 27 - src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx | 31 - src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl | 83 - src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx | 113 +- src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx | 157 +- src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx | 27 - src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx | 28 - src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl | 115 -- src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx | 34 +- src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx | 176 +- src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx | 27 - src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx | 31 - src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl | 70 - src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx | 118 +- src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx | 132 +- src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx | 27 - src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx | 25 - src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl | 49 - src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx | 25 +- src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx | 91 +- src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx | 27 - src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx | 28 - src/GEOMAlgo/GEOMAlgo_Builder_0.cxx | 8 +- src/GEOMAlgo/GEOMAlgo_Builder_1.cxx | 76 +- src/GEOMAlgo/GEOMAlgo_Builder_2.cxx | 105 +- src/GEOMAlgo/GEOMAlgo_Builder_3.cxx | 51 +- src/GEOMAlgo/GEOMAlgo_Builder_4.cxx | 29 +- src/GEOMAlgo/GEOMAlgo_Clsf.cdl | 77 - src/GEOMAlgo/GEOMAlgo_Clsf.cxx | 29 +- src/GEOMAlgo/GEOMAlgo_Clsf.hxx | 128 +- src/GEOMAlgo/GEOMAlgo_Clsf.ixx | 76 - src/GEOMAlgo/GEOMAlgo_Clsf.jxx | 34 - src/GEOMAlgo/GEOMAlgo_ClsfBox.cdl | 72 - src/GEOMAlgo/GEOMAlgo_ClsfBox.cxx | 36 +- src/GEOMAlgo/GEOMAlgo_ClsfBox.hxx | 107 +- src/GEOMAlgo/GEOMAlgo_ClsfBox.ixx | 77 - src/GEOMAlgo/GEOMAlgo_ClsfBox.jxx | 34 - src/GEOMAlgo/GEOMAlgo_ClsfSolid.cdl | 58 - src/GEOMAlgo/GEOMAlgo_ClsfSolid.cxx | 23 +- src/GEOMAlgo/GEOMAlgo_ClsfSolid.hxx | 101 +- src/GEOMAlgo/GEOMAlgo_ClsfSolid.ixx | 74 - src/GEOMAlgo/GEOMAlgo_ClsfSolid.jxx | 25 - src/GEOMAlgo/GEOMAlgo_ClsfSurf.cdl | 72 - src/GEOMAlgo/GEOMAlgo_ClsfSurf.cxx | 27 +- src/GEOMAlgo/GEOMAlgo_ClsfSurf.hxx | 117 +- src/GEOMAlgo/GEOMAlgo_ClsfSurf.ixx | 77 - src/GEOMAlgo/GEOMAlgo_ClsfSurf.jxx | 31 - src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl | 67 - src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cxx | 19 +- src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.hxx | 112 +- src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx | 27 - src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx | 28 - ...pIteratorOfDataMapOfOrientedShapeShape.hxx | 98 +- ...teratorOfDataMapOfOrientedShapeShape_0.cxx | 54 - ...taMapIteratorOfDataMapOfPassKeyInteger.hxx | 105 +- ...MapIteratorOfDataMapOfPassKeyInteger_0.cxx | 57 - ...apIteratorOfDataMapOfPassKeyShapeShape.hxx | 100 +- ...IteratorOfDataMapOfPassKeyShapeShape_0.cxx | 57 - ...aMapIteratorOfDataMapOfRealListOfShape.hxx | 105 +- ...apIteratorOfDataMapOfRealListOfShape_0.cxx | 57 - ...aMapIteratorOfDataMapOfShapeMapOfShape.hxx | 130 +- ...apIteratorOfDataMapOfShapeMapOfShape_0.cxx | 59 - ...lgo_DataMapIteratorOfDataMapOfShapePnt.hxx | 130 +- ...o_DataMapIteratorOfDataMapOfShapePnt_0.cxx | 59 - ...go_DataMapIteratorOfDataMapOfShapeReal.hxx | 104 +- ..._DataMapIteratorOfDataMapOfShapeReal_0.cxx | 57 - ...ataMapIteratorOfDataMapOfShapeShapeSet.hxx | 62 +- ...aMapIteratorOfDataMapOfShapeShapeSet_0.cxx | 60 - ...taMapNodeOfDataMapOfOrientedShapeShape.hxx | 92 - ...MapNodeOfDataMapOfOrientedShapeShape_0.cxx | 109 -- ...o_DataMapNodeOfDataMapOfPassKeyInteger.hxx | 98 - ...DataMapNodeOfDataMapOfPassKeyInteger_0.cxx | 114 -- ...ataMapNodeOfDataMapOfPassKeyShapeShape.hxx | 96 - ...aMapNodeOfDataMapOfPassKeyShapeShape_0.cxx | 112 -- ..._DataMapNodeOfDataMapOfRealListOfShape.hxx | 98 - ...ataMapNodeOfDataMapOfRealListOfShape_0.cxx | 112 -- ..._DataMapNodeOfDataMapOfShapeMapOfShape.hxx | 102 -- ...ataMapNodeOfDataMapOfShapeMapOfShape_0.cxx | 117 -- ...EOMAlgo_DataMapNodeOfDataMapOfShapePnt.hxx | 102 -- ...MAlgo_DataMapNodeOfDataMapOfShapePnt_0.cxx | 117 -- ...OMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx | 98 - ...Algo_DataMapNodeOfDataMapOfShapeReal_0.cxx | 113 -- ...go_DataMapNodeOfDataMapOfShapeShapeSet.hxx | 102 -- ..._DataMapNodeOfDataMapOfShapeShapeSet_0.cxx | 115 -- .../GEOMAlgo_DataMapOfOrientedShapeShape.hxx | 107 +- ...GEOMAlgo_DataMapOfOrientedShapeShape_0.cxx | 55 - .../GEOMAlgo_DataMapOfPassKeyInteger.hxx | 113 +- .../GEOMAlgo_DataMapOfPassKeyInteger_0.cxx | 60 - .../GEOMAlgo_DataMapOfPassKeyShapeShape.hxx | 110 +- .../GEOMAlgo_DataMapOfPassKeyShapeShape_0.cxx | 60 - .../GEOMAlgo_DataMapOfRealListOfShape.hxx | 116 +- .../GEOMAlgo_DataMapOfRealListOfShape_0.cxx | 60 - .../GEOMAlgo_DataMapOfShapeMapOfShape.hxx | 163 +- .../GEOMAlgo_DataMapOfShapeMapOfShape_0.cxx | 62 - src/GEOMAlgo/GEOMAlgo_DataMapOfShapePnt.hxx | 163 +- src/GEOMAlgo/GEOMAlgo_DataMapOfShapePnt_0.cxx | 62 - src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx | 137 +- .../GEOMAlgo_DataMapOfShapeReal_0.cxx | 60 - .../GEOMAlgo_DataMapOfShapeShapeSet.hxx | 106 +- .../GEOMAlgo_DataMapOfShapeShapeSet_0.cxx | 63 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl | 117 -- src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cxx | 66 +- src/GEOMAlgo/GEOMAlgo_FinderShapeOn.hxx | 155 +- src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx | 27 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx | 37 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl | 144 -- src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cxx | 29 +- src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.hxx | 225 +-- src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx | 27 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx | 46 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cdl | 140 -- src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cxx | 116 +- src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.hxx | 210 +-- src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.ixx | 27 - src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.jxx | 43 - src/GEOMAlgo/GEOMAlgo_FinderShapeOnQuad.cxx | 8 +- src/GEOMAlgo/GEOMAlgo_FinderShapeOnQuad.hxx | 2 +- src/GEOMAlgo/GEOMAlgo_GetInPlace.cxx | 18 +- src/GEOMAlgo/GEOMAlgo_GetInPlace.hxx | 148 +- src/GEOMAlgo/GEOMAlgo_GetInPlace_1.cxx | 76 +- src/GEOMAlgo/GEOMAlgo_GetInPlace_2.cxx | 20 +- src/GEOMAlgo/GEOMAlgo_GetInPlace_3.cxx | 26 +- src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl | 83 - src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx | 81 +- src/GEOMAlgo/GEOMAlgo_GlueAnalyser.hxx | 137 +- src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx | 27 - src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx | 31 - src/GEOMAlgo/GEOMAlgo_GlueDetector.cxx | 323 +++- src/GEOMAlgo/GEOMAlgo_GlueDetector.hxx | 91 +- src/GEOMAlgo/GEOMAlgo_Gluer.cdl | 161 -- src/GEOMAlgo/GEOMAlgo_Gluer.cxx | 158 +- src/GEOMAlgo/GEOMAlgo_Gluer.hxx | 240 ++- src/GEOMAlgo/GEOMAlgo_Gluer.ixx | 27 - src/GEOMAlgo/GEOMAlgo_Gluer.jxx | 49 - src/GEOMAlgo/GEOMAlgo_Gluer2.cxx | 114 +- src/GEOMAlgo/GEOMAlgo_Gluer2.hxx | 222 ++- src/GEOMAlgo/GEOMAlgo_Gluer2_1.cxx | 3 +- src/GEOMAlgo/GEOMAlgo_Gluer2_2.cxx | 24 +- src/GEOMAlgo/GEOMAlgo_Gluer2_3.cxx | 109 +- src/GEOMAlgo/GEOMAlgo_GluerAlgo.cxx | 62 +- src/GEOMAlgo/GEOMAlgo_GluerAlgo.hxx | 71 +- src/GEOMAlgo/GEOMAlgo_HAlgo.cdl | 59 - src/GEOMAlgo/GEOMAlgo_HAlgo.cxx | 23 +- src/GEOMAlgo/GEOMAlgo_HAlgo.hxx | 103 +- src/GEOMAlgo/GEOMAlgo_HAlgo.ixx | 75 - src/GEOMAlgo/GEOMAlgo_HAlgo.jxx | 25 - ...aMapNodeOfIndexedDataMapOfIntegerShape.hxx | 135 -- ...apNodeOfIndexedDataMapOfIntegerShape_0.cxx | 98 - ...deOfIndexedDataMapOfPassKeyListOfShape.hxx | 147 -- ...OfIndexedDataMapOfPassKeyListOfShape_0.cxx | 104 -- ...ndexedDataMapOfPassKeyShapeListOfShape.hxx | 139 -- ...exedDataMapOfPassKeyShapeListOfShape_0.cxx | 101 -- ...dDataMapNodeOfIndexedDataMapOfShapeBox.hxx | 139 -- ...ataMapNodeOfIndexedDataMapOfShapeBox_0.cxx | 101 -- ...apNodeOfIndexedDataMapOfShapeShapeInfo.hxx | 136 -- ...NodeOfIndexedDataMapOfShapeShapeInfo_0.cxx | 98 - ...ataMapNodeOfIndexedDataMapOfShapeState.hxx | 138 -- ...aMapNodeOfIndexedDataMapOfShapeState_0.cxx | 98 - .../GEOMAlgo_IndexedDataMapOfIntegerShape.hxx | 117 +- ...EOMAlgo_IndexedDataMapOfIntegerShape_0.cxx | 58 - ...lgo_IndexedDataMapOfPassKeyListOfShape.hxx | 147 -- ...o_IndexedDataMapOfPassKeyListOfShape_0.cxx | 61 - ...ndexedDataMapOfPassKeyShapeListOfShape.hxx | 161 +- ...exedDataMapOfPassKeyShapeListOfShape_0.cxx | 61 - .../GEOMAlgo_IndexedDataMapOfShapeBox.hxx | 158 +- .../GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx | 61 - ...EOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx | 158 +- ...MAlgo_IndexedDataMapOfShapeShapeInfo_0.cxx | 58 - .../GEOMAlgo_IndexedDataMapOfShapeState.hxx | 178 +- .../GEOMAlgo_IndexedDataMapOfShapeState_0.cxx | 58 - src/GEOMAlgo/GEOMAlgo_KindOfBounds.hxx | 10 +- src/GEOMAlgo/GEOMAlgo_KindOfClosed.hxx | 11 +- src/GEOMAlgo/GEOMAlgo_KindOfName.hxx | 10 +- src/GEOMAlgo/GEOMAlgo_KindOfShape.hxx | 11 +- ...lgo_ListIteratorOfListOfCoupleOfShapes.hxx | 131 +- ...o_ListIteratorOfListOfCoupleOfShapes_0.cxx | 53 - .../GEOMAlgo_ListIteratorOfListOfPnt.hxx | 130 +- .../GEOMAlgo_ListIteratorOfListOfPnt_0.cxx | 53 - ...EOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx | 119 -- ...MAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx | 96 - src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx | 119 -- .../GEOMAlgo_ListNodeOfListOfPnt_0.cxx | 96 - .../GEOMAlgo_ListOfCoupleOfShapes.hxx | 186 +- .../GEOMAlgo_ListOfCoupleOfShapes_0.cxx | 50 - src/GEOMAlgo/GEOMAlgo_ListOfPnt.hxx | 185 +- src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx | 50 - src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx | 7 +- src/GEOMAlgo/GEOMAlgo_PassKey.cdl | 101 -- src/GEOMAlgo/GEOMAlgo_PassKey.cxx | 48 +- src/GEOMAlgo/GEOMAlgo_PassKey.hxx | 160 +- src/GEOMAlgo/GEOMAlgo_PassKey.ixx | 27 - src/GEOMAlgo/GEOMAlgo_PassKey.jxx | 28 - src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl | 49 - src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cxx | 10 +- src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.hxx | 93 +- src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx | 27 - src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx | 28 - src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl | 97 - src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx | 40 +- src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx | 158 +- src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx | 27 - src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx | 31 - .../GEOMAlgo_PassKeyShapeMapHasher.cdl | 49 - .../GEOMAlgo_PassKeyShapeMapHasher.cxx | 10 +- .../GEOMAlgo_PassKeyShapeMapHasher.hxx | 98 +- .../GEOMAlgo_PassKeyShapeMapHasher.ixx | 27 - .../GEOMAlgo_PassKeyShapeMapHasher.jxx | 28 - src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl | 78 - src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cxx | 62 +- src/GEOMAlgo/GEOMAlgo_ShapeAlgo.hxx | 90 +- src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx | 27 - src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx | 31 - src/GEOMAlgo/GEOMAlgo_ShapeInfo.cdl | 206 --- src/GEOMAlgo/GEOMAlgo_ShapeInfo.cxx | 200 +- src/GEOMAlgo/GEOMAlgo_ShapeInfo.hxx | 308 ++-- src/GEOMAlgo/GEOMAlgo_ShapeInfo.ixx | 24 - src/GEOMAlgo/GEOMAlgo_ShapeInfo.jxx | 34 - src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller.cdl | 148 -- src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller.cxx | 110 +- src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller.hxx | 201 +- src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller.ixx | 24 - src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller.jxx | 49 - src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller_1.cxx | 5 +- src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl | 88 - src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx | 30 +- src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx | 117 +- src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx | 27 - src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx | 31 - src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl | 67 - src/GEOMAlgo/GEOMAlgo_ShapeSolid.cxx | 16 +- src/GEOMAlgo/GEOMAlgo_ShapeSolid.hxx | 120 +- src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx | 27 - src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx | 31 - src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl | 53 - src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx | 74 +- src/GEOMAlgo/GEOMAlgo_ShellSolid.hxx | 101 +- src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx | 27 - src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx | 25 - src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl | 58 - src/GEOMAlgo/GEOMAlgo_SolidSolid.cxx | 30 +- src/GEOMAlgo/GEOMAlgo_SolidSolid.hxx | 104 +- src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx | 27 - src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx | 28 - src/GEOMAlgo/GEOMAlgo_Splitter.cdl | 103 -- src/GEOMAlgo/GEOMAlgo_Splitter.cxx | 4 +- src/GEOMAlgo/GEOMAlgo_Splitter.hxx | 179 +- src/GEOMAlgo/GEOMAlgo_Splitter.ixx | 27 - src/GEOMAlgo/GEOMAlgo_Splitter.jxx | 31 - src/GEOMAlgo/GEOMAlgo_State.hxx | 22 +- src/GEOMAlgo/GEOMAlgo_StateCollector.cdl | 50 - src/GEOMAlgo/GEOMAlgo_StateCollector.cxx | 18 +- src/GEOMAlgo/GEOMAlgo_StateCollector.hxx | 98 +- src/GEOMAlgo/GEOMAlgo_StateCollector.ixx | 27 - src/GEOMAlgo/GEOMAlgo_StateCollector.jxx | 25 - src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl | 97 - src/GEOMAlgo/GEOMAlgo_SurfaceTools.cxx | 40 +- src/GEOMAlgo/GEOMAlgo_SurfaceTools.hxx | 168 +- src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx | 27 - src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx | 43 - src/GEOMAlgo/GEOMAlgo_Tools.cdl | 123 -- src/GEOMAlgo/GEOMAlgo_Tools.cxx | 59 +- src/GEOMAlgo/GEOMAlgo_Tools.hxx | 206 +-- src/GEOMAlgo/GEOMAlgo_Tools.ixx | 27 - src/GEOMAlgo/GEOMAlgo_Tools.jxx | 52 - src/GEOMAlgo/GEOMAlgo_Tools3D.cdl | 254 --- src/GEOMAlgo/GEOMAlgo_Tools3D.cxx | 110 +- src/GEOMAlgo/GEOMAlgo_Tools3D.hxx | 273 ++- src/GEOMAlgo/GEOMAlgo_Tools3D.ixx | 27 - src/GEOMAlgo/GEOMAlgo_Tools3D.jxx | 61 - src/GEOMAlgo/GEOMAlgo_Tools_1.cxx | 36 +- src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl | 51 - src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx | 38 +- src/GEOMAlgo/GEOMAlgo_VertexSolid.hxx | 95 +- src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx | 27 - src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx | 25 - src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl | 84 - src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx | 18 +- src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx | 146 +- src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx | 27 - src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx | 28 - src/GEOMAlgo/GEOMAlgo_WESScaler.cdl | 121 -- src/GEOMAlgo/GEOMAlgo_WESScaler.cxx | 50 +- src/GEOMAlgo/GEOMAlgo_WESScaler.hxx | 176 +- src/GEOMAlgo/GEOMAlgo_WESScaler.ixx | 24 - src/GEOMAlgo/GEOMAlgo_WESScaler.jxx | 34 - src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl | 70 - src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx | 26 +- src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx | 120 +- src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx | 27 - src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx | 34 - src/GEOMAlgo/GEOMAlgo_WireSolid.cdl | 50 - src/GEOMAlgo/GEOMAlgo_WireSolid.cxx | 22 +- src/GEOMAlgo/GEOMAlgo_WireSolid.hxx | 97 +- src/GEOMAlgo/GEOMAlgo_WireSolid.ixx | 27 - src/GEOMAlgo/GEOMAlgo_WireSolid.jxx | 25 - src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl | 89 - src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx | 81 +- src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx | 132 +- src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx | 27 - src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx | 34 - src/GEOMAlgo/Handle_BlockFix_BlockFixAPI.hxx | 28 +- ...andle_BlockFix_PeriodicSurfaceModifier.hxx | 28 +- .../Handle_BlockFix_SphereSpaceModifier.hxx | 28 +- src/GEOMAlgo/Handle_GEOMAlgo_Clsf.hxx | 75 - src/GEOMAlgo/Handle_GEOMAlgo_ClsfBox.hxx | 75 - src/GEOMAlgo/Handle_GEOMAlgo_ClsfSolid.hxx | 72 - src/GEOMAlgo/Handle_GEOMAlgo_ClsfSurf.hxx | 75 - ...taMapNodeOfDataMapOfOrientedShapeShape.hxx | 40 - ...o_DataMapNodeOfDataMapOfPassKeyInteger.hxx | 43 - ...ataMapNodeOfDataMapOfPassKeyShapeShape.hxx | 40 - ..._DataMapNodeOfDataMapOfRealListOfShape.hxx | 43 - ..._DataMapNodeOfDataMapOfShapeMapOfShape.hxx | 43 - ...EOMAlgo_DataMapNodeOfDataMapOfShapePnt.hxx | 43 - ...OMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx | 43 - ...go_DataMapNodeOfDataMapOfShapeShapeSet.hxx | 43 - src/GEOMAlgo/Handle_GEOMAlgo_HAlgo.hxx | 75 - ...aMapNodeOfIndexedDataMapOfIntegerShape.hxx | 75 - ...deOfIndexedDataMapOfPassKeyListOfShape.hxx | 92 - ...ndexedDataMapOfPassKeyShapeListOfShape.hxx | 75 - ...dDataMapNodeOfIndexedDataMapOfShapeBox.hxx | 75 - ...apNodeOfIndexedDataMapOfShapeShapeInfo.hxx | 72 - ...ataMapNodeOfIndexedDataMapOfShapeState.hxx | 75 - ...EOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx | 75 - .../Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx | 75 - src/GEOMAlgo/Makefile.am | 227 +-- src/GEOMAlgo_NEW/BlockFix.cdl | 67 - src/GEOMAlgo_NEW/BlockFix.cxx | 216 --- src/GEOMAlgo_NEW/BlockFix.hxx | 106 -- src/GEOMAlgo_NEW/BlockFix.ixx | 27 - src/GEOMAlgo_NEW/BlockFix.jxx | 28 - src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.cdl | 68 - src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.cxx | 66 - src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.hxx | 94 - src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.ixx | 77 - src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.jxx | 31 - src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.lxx | 73 - src/GEOMAlgo_NEW/BlockFix_CheckTool.cdl | 67 - src/GEOMAlgo_NEW/BlockFix_CheckTool.cxx | 279 --- src/GEOMAlgo_NEW/BlockFix_CheckTool.hxx | 120 -- src/GEOMAlgo_NEW/BlockFix_CheckTool.ixx | 27 - src/GEOMAlgo_NEW/BlockFix_CheckTool.jxx | 28 - .../BlockFix_PeriodicSurfaceModifier.cdl | 135 -- .../BlockFix_PeriodicSurfaceModifier.cxx | 250 --- .../BlockFix_PeriodicSurfaceModifier.hxx | 140 -- .../BlockFix_PeriodicSurfaceModifier.ixx | 79 - .../BlockFix_PeriodicSurfaceModifier.jxx | 49 - .../BlockFix_SphereSpaceModifier.cdl | 139 -- .../BlockFix_SphereSpaceModifier.cxx | 262 --- .../BlockFix_SphereSpaceModifier.hxx | 141 -- .../BlockFix_SphereSpaceModifier.ixx | 79 - .../BlockFix_SphereSpaceModifier.jxx | 49 - src/GEOMAlgo_NEW/BlockFix_UnionEdges.cdl | 49 - src/GEOMAlgo_NEW/BlockFix_UnionEdges.cxx | 398 ---- src/GEOMAlgo_NEW/BlockFix_UnionEdges.hxx | 100 - src/GEOMAlgo_NEW/BlockFix_UnionEdges.ixx | 27 - src/GEOMAlgo_NEW/BlockFix_UnionEdges.jxx | 31 - src/GEOMAlgo_NEW/BlockFix_UnionFaces.cdl | 65 - src/GEOMAlgo_NEW/BlockFix_UnionFaces.cxx | 721 -------- src/GEOMAlgo_NEW/BlockFix_UnionFaces.hxx | 90 - src/GEOMAlgo_NEW/BlockFix_UnionFaces.ixx | 27 - src/GEOMAlgo_NEW/BlockFix_UnionFaces.jxx | 31 - src/GEOMAlgo_NEW/GEOMAlgo.cdl | 342 ---- src/GEOMAlgo_NEW/GEOMAlgo_Algo.cxx | 90 - src/GEOMAlgo_NEW/GEOMAlgo_Algo.hxx | 75 - src/GEOMAlgo_NEW/GEOMAlgo_Builder.cxx | 416 ----- src/GEOMAlgo_NEW/GEOMAlgo_Builder.hxx | 224 --- src/GEOMAlgo_NEW/GEOMAlgo_BuilderArea.cxx | 142 -- src/GEOMAlgo_NEW/GEOMAlgo_BuilderArea.hxx | 112 -- src/GEOMAlgo_NEW/GEOMAlgo_BuilderFace.cxx | 711 -------- src/GEOMAlgo_NEW/GEOMAlgo_BuilderFace.hxx | 91 - src/GEOMAlgo_NEW/GEOMAlgo_BuilderShape.cxx | 133 -- src/GEOMAlgo_NEW/GEOMAlgo_BuilderShape.hxx | 105 -- src/GEOMAlgo_NEW/GEOMAlgo_BuilderSolid.cxx | 931 ---------- src/GEOMAlgo_NEW/GEOMAlgo_BuilderSolid.hxx | 77 - src/GEOMAlgo_NEW/GEOMAlgo_BuilderTools.cxx | 291 --- src/GEOMAlgo_NEW/GEOMAlgo_BuilderTools.hxx | 47 - src/GEOMAlgo_NEW/GEOMAlgo_Builder_0.cxx | 64 - src/GEOMAlgo_NEW/GEOMAlgo_Builder_1.cxx | 360 ---- src/GEOMAlgo_NEW/GEOMAlgo_Builder_2.cxx | 984 ---------- src/GEOMAlgo_NEW/GEOMAlgo_Builder_3.cxx | 768 -------- src/GEOMAlgo_NEW/GEOMAlgo_Builder_4.cxx | 316 ---- src/GEOMAlgo_NEW/GEOMAlgo_Clsf.cxx | 107 -- src/GEOMAlgo_NEW/GEOMAlgo_Clsf.hxx | 87 - src/GEOMAlgo_NEW/GEOMAlgo_ClsfBox.cxx | 222 --- src/GEOMAlgo_NEW/GEOMAlgo_ClsfBox.hxx | 97 - src/GEOMAlgo_NEW/GEOMAlgo_ClsfSolid.cxx | 141 -- src/GEOMAlgo_NEW/GEOMAlgo_ClsfSolid.hxx | 69 - src/GEOMAlgo_NEW/GEOMAlgo_ClsfSurf.cxx | 141 -- src/GEOMAlgo_NEW/GEOMAlgo_ClsfSurf.hxx | 81 - src/GEOMAlgo_NEW/GEOMAlgo_CoupleOfShapes.cxx | 86 - src/GEOMAlgo_NEW/GEOMAlgo_CoupleOfShapes.hxx | 64 - ...pIteratorOfDataMapOfOrientedShapeShape.hxx | 32 - ...taMapIteratorOfDataMapOfPassKeyInteger.hxx | 31 - ...apIteratorOfDataMapOfPassKeyShapeShape.hxx | 31 - ...aMapIteratorOfDataMapOfRealListOfShape.hxx | 31 - ...aMapIteratorOfDataMapOfShapeMapOfShape.hxx | 31 - ...lgo_DataMapIteratorOfDataMapOfShapePnt.hxx | 31 - ...go_DataMapIteratorOfDataMapOfShapeReal.hxx | 32 - ...ataMapIteratorOfDataMapOfShapeShapeSet.hxx | 32 - .../GEOMAlgo_DataMapOfOrientedShapeShape.hxx | 42 - .../GEOMAlgo_DataMapOfPassKeyInteger.hxx | 41 - .../GEOMAlgo_DataMapOfPassKeyShapeShape.hxx | 40 - .../GEOMAlgo_DataMapOfRealListOfShape.hxx | 43 - .../GEOMAlgo_DataMapOfShapeMapOfShape.hxx | 44 - .../GEOMAlgo_DataMapOfShapePnt.hxx | 44 - .../GEOMAlgo_DataMapOfShapeReal.hxx | 41 - .../GEOMAlgo_DataMapOfShapeShapeSet.hxx | 42 - src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn.cxx | 616 ------- src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn.hxx | 120 -- src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn1.cxx | 854 --------- src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn1.hxx | 145 -- src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn2.cxx | 845 --------- src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn2.hxx | 136 -- .../GEOMAlgo_FinderShapeOnQuad.cxx | 144 -- .../GEOMAlgo_FinderShapeOnQuad.hxx | 61 - src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace.cxx | 1151 ------------ src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace.hxx | 324 ---- src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace_1.cxx | 401 ---- src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace_2.cxx | 232 --- src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace_3.cxx | 172 -- src/GEOMAlgo_NEW/GEOMAlgo_GlueAnalyser.cxx | 466 ----- src/GEOMAlgo_NEW/GEOMAlgo_GlueAnalyser.hxx | 86 - src/GEOMAlgo_NEW/GEOMAlgo_GlueDetector.cxx | 611 ------- src/GEOMAlgo_NEW/GEOMAlgo_GlueDetector.hxx | 99 - src/GEOMAlgo_NEW/GEOMAlgo_Gluer.cxx | 1178 ------------ src/GEOMAlgo_NEW/GEOMAlgo_Gluer.hxx | 164 -- src/GEOMAlgo_NEW/GEOMAlgo_Gluer2.cxx | 649 ------- src/GEOMAlgo_NEW/GEOMAlgo_Gluer2.hxx | 187 -- src/GEOMAlgo_NEW/GEOMAlgo_Gluer2_1.cxx | 322 ---- src/GEOMAlgo_NEW/GEOMAlgo_Gluer2_2.cxx | 156 -- src/GEOMAlgo_NEW/GEOMAlgo_Gluer2_3.cxx | 359 ---- src/GEOMAlgo_NEW/GEOMAlgo_GluerAlgo.cxx | 146 -- src/GEOMAlgo_NEW/GEOMAlgo_GluerAlgo.hxx | 98 - src/GEOMAlgo_NEW/GEOMAlgo_HAlgo.cxx | 83 - src/GEOMAlgo_NEW/GEOMAlgo_HAlgo.hxx | 75 - .../GEOMAlgo_IndexedDataMapOfIntegerShape.hxx | 44 - ...ndexedDataMapOfPassKeyShapeListOfShape.hxx | 43 - .../GEOMAlgo_IndexedDataMapOfShapeBox.hxx | 44 - ...EOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx | 43 - .../GEOMAlgo_IndexedDataMapOfShapeState.hxx | 43 - src/GEOMAlgo_NEW/GEOMAlgo_KindOfClosed.hxx | 36 - src/GEOMAlgo_NEW/GEOMAlgo_KindOfShape.hxx | 44 - ...lgo_ListIteratorOfListOfCoupleOfShapes.hxx | 31 - .../GEOMAlgo_ListIteratorOfListOfPnt.hxx | 32 - .../GEOMAlgo_ListOfCoupleOfShapes.hxx | 33 - src/GEOMAlgo_NEW/GEOMAlgo_ListOfPnt.hxx | 35 - src/GEOMAlgo_NEW/GEOMAlgo_PWireEdgeSet.hxx | 35 - src/GEOMAlgo_NEW/GEOMAlgo_PassKey.cxx | 240 --- src/GEOMAlgo_NEW/GEOMAlgo_PassKey.hxx | 104 -- .../GEOMAlgo_PassKeyMapHasher.cxx | 47 - .../GEOMAlgo_PassKeyMapHasher.hxx | 51 - src/GEOMAlgo_NEW/GEOMAlgo_PassKeyShape.cxx | 229 --- src/GEOMAlgo_NEW/GEOMAlgo_PassKeyShape.hxx | 105 -- .../GEOMAlgo_PassKeyShapeMapHasher.cxx | 47 - .../GEOMAlgo_PassKeyShapeMapHasher.hxx | 52 - src/GEOMAlgo_NEW/GEOMAlgo_ShapeAlgo.cxx | 114 -- src/GEOMAlgo_NEW/GEOMAlgo_ShapeAlgo.hxx | 85 - src/GEOMAlgo_NEW/GEOMAlgo_ShapeInfo.cxx | 890 --------- src/GEOMAlgo_NEW/GEOMAlgo_ShapeInfo.hxx | 202 --- src/GEOMAlgo_NEW/GEOMAlgo_ShapeInfoFiller.cxx | 818 --------- src/GEOMAlgo_NEW/GEOMAlgo_ShapeInfoFiller.hxx | 123 -- .../GEOMAlgo_ShapeInfoFiller_1.cxx | 761 -------- src/GEOMAlgo_NEW/GEOMAlgo_ShapeSet.cxx | 177 -- src/GEOMAlgo_NEW/GEOMAlgo_ShapeSet.hxx | 92 - src/GEOMAlgo_NEW/GEOMAlgo_ShapeSolid.cxx | 82 - src/GEOMAlgo_NEW/GEOMAlgo_ShapeSolid.hxx | 73 - src/GEOMAlgo_NEW/GEOMAlgo_ShellSolid.cxx | 371 ---- src/GEOMAlgo_NEW/GEOMAlgo_ShellSolid.hxx | 61 - src/GEOMAlgo_NEW/GEOMAlgo_SolidSolid.cxx | 203 --- src/GEOMAlgo_NEW/GEOMAlgo_SolidSolid.hxx | 65 - src/GEOMAlgo_NEW/GEOMAlgo_Splitter.cxx | 339 ---- src/GEOMAlgo_NEW/GEOMAlgo_Splitter.hxx | 98 - src/GEOMAlgo_NEW/GEOMAlgo_State.hxx | 40 - src/GEOMAlgo_NEW/GEOMAlgo_StateCollector.cxx | 92 - src/GEOMAlgo_NEW/GEOMAlgo_StateCollector.hxx | 56 - src/GEOMAlgo_NEW/GEOMAlgo_SurfaceTools.cxx | 270 --- src/GEOMAlgo_NEW/GEOMAlgo_SurfaceTools.hxx | 94 - src/GEOMAlgo_NEW/GEOMAlgo_Tools.cxx | 612 ------- src/GEOMAlgo_NEW/GEOMAlgo_Tools.hxx | 120 -- src/GEOMAlgo_NEW/GEOMAlgo_Tools3D.cxx | 1301 ------------- src/GEOMAlgo_NEW/GEOMAlgo_Tools3D.hxx | 240 --- src/GEOMAlgo_NEW/GEOMAlgo_Tools_1.cxx | 341 ---- src/GEOMAlgo_NEW/GEOMAlgo_VertexSolid.cxx | 239 --- src/GEOMAlgo_NEW/GEOMAlgo_VertexSolid.hxx | 58 - src/GEOMAlgo_NEW/GEOMAlgo_WESCorrector.cxx | 439 ----- src/GEOMAlgo_NEW/GEOMAlgo_WESCorrector.hxx | 87 - src/GEOMAlgo_NEW/GEOMAlgo_WESScaler.cxx | 267 --- src/GEOMAlgo_NEW/GEOMAlgo_WESScaler.hxx | 110 -- src/GEOMAlgo_NEW/GEOMAlgo_WireEdgeSet.cxx | 95 - src/GEOMAlgo_NEW/GEOMAlgo_WireEdgeSet.hxx | 73 - src/GEOMAlgo_NEW/GEOMAlgo_WireSolid.cxx | 173 -- src/GEOMAlgo_NEW/GEOMAlgo_WireSolid.hxx | 58 - src/GEOMAlgo_NEW/GEOMAlgo_WireSplitter.cxx | 876 --------- src/GEOMAlgo_NEW/GEOMAlgo_WireSplitter.hxx | 83 - .../Handle_BlockFix_BlockFixAPI.hxx | 92 - ...andle_BlockFix_PeriodicSurfaceModifier.hxx | 92 - .../Handle_BlockFix_SphereSpaceModifier.hxx | 92 - src/GEOMAlgo_NEW/Makefile.am | 225 --- src/GEOMBase/GEOMBase.cxx | 2 +- src/GEOMBase/GEOMBase.h | 2 +- src/GEOMBase/GEOMBase.pro | 74 - src/GEOMBase/GEOMBase_Helper.cxx | 15 +- src/GEOMBase/GEOMBase_Helper.h | 9 +- src/GEOMBase/GEOMBase_Skeleton.cxx | 2 +- src/GEOMBase/GEOMBase_Skeleton.h | 2 +- src/GEOMBase/GEOM_GEOMBase.hxx | 2 +- src/GEOMBase/GEOM_GenericObjPtr.cxx | 2 +- src/GEOMBase/GEOM_GenericObjPtr.h | 2 +- src/GEOMBase/GEOM_Operation.cxx | 2 +- src/GEOMBase/GEOM_Operation.h | 2 +- src/GEOMBase/Makefile.am | 2 +- src/GEOMClient/GEOMClient.pro | 58 - src/GEOMClient/GEOM_Client.cxx | 2 +- src/GEOMClient/GEOM_Client.hxx | 2 +- src/GEOMClient/Makefile.am | 2 +- .../GEOMFiltersSelection.pro | 72 - .../GEOM_CompoundFilter.cxx | 2 +- .../GEOM_CompoundFilter.h | 2 +- src/GEOMFiltersSelection/GEOM_EdgeFilter.cxx | 2 +- src/GEOMFiltersSelection/GEOM_EdgeFilter.h | 2 +- src/GEOMFiltersSelection/GEOM_FaceFilter.cxx | 2 +- src/GEOMFiltersSelection/GEOM_FaceFilter.h | 2 +- .../GEOM_LogicalFilter.cxx | 2 +- src/GEOMFiltersSelection/GEOM_LogicalFilter.h | 2 +- src/GEOMFiltersSelection/GEOM_OCCFilter.cxx | 2 +- src/GEOMFiltersSelection/GEOM_OCCFilter.h | 2 +- .../GEOM_PreviewFilter.cxx | 2 +- src/GEOMFiltersSelection/GEOM_PreviewFilter.h | 2 +- .../GEOM_SelectionFilter.cxx | 2 +- .../GEOM_SelectionFilter.h | 2 +- src/GEOMFiltersSelection/GEOM_TypeFilter.cxx | 2 +- src/GEOMFiltersSelection/GEOM_TypeFilter.h | 2 +- src/GEOMFiltersSelection/Makefile.am | 2 +- src/GEOMGUI/GEOMGUI.cxx | 2 +- src/GEOMGUI/GEOMGUI.h | 2 +- src/GEOMGUI/GEOMGUI.pro | 83 - src/GEOMGUI/GEOMGUI_OCCSelector.cxx | 2 +- src/GEOMGUI/GEOMGUI_OCCSelector.h | 2 +- src/GEOMGUI/GEOMGUI_Selection.cxx | 69 +- src/GEOMGUI/GEOMGUI_Selection.h | 3 +- src/GEOMGUI/GEOM_Displayer.cxx | 407 ++--- src/GEOMGUI/GEOM_Displayer.h | 2 +- src/GEOMGUI/GEOM_GEOMGUI.hxx | 2 +- src/GEOMGUI/GEOM_images.ts | 14 +- src/GEOMGUI/GEOM_msg_en.ts | 103 +- src/GEOMGUI/GEOM_msg_fr.ts | 535 +++--- src/GEOMGUI/GeometryGUI.cxx | 58 +- src/GEOMGUI/GeometryGUI.h | 3 +- src/GEOMGUI/GeometryGUI_Operations.h | 6 +- src/GEOMGUI/GeometryGUI_Swig.cxx | 2 +- src/GEOMGUI/GeometryGUI_Swig.hxx | 2 +- src/GEOMGUI/GeometryGUI_Swig.i | 2 +- src/GEOMGUI/Makefile.am | 2 +- .../BRepBuilderAPI_GTransform_21423.cxx | 111 -- .../BRepBuilderAPI_GTransform_21423.hxx | 137 -- .../BRepBuilderAPI_ModifyShape_21423.cxx | 144 -- .../BRepBuilderAPI_ModifyShape_21423.hxx | 129 -- .../BRepBuilderAPI_NurbsConvert_21423.cxx | 58 - .../BRepBuilderAPI_NurbsConvert_21423.hxx | 95 - src/GEOMImpl/BRepTools_Modifier_21423.cxx | 539 ------ src/GEOMImpl/BRepTools_Modifier_21423.hxx | 118 -- ...epTools_NurbsConvertModification_21423.cxx | 662 ------- ...epTools_NurbsConvertModification_21423.hxx | 141 -- src/GEOMImpl/GEOMImpl.pro | 126 -- src/GEOMImpl/GEOMImpl_3DSketcherDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_3DSketcherDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_ArcDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_ArcDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_ArchimedeDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_ArchimedeDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_Block6Explorer.cxx | 12 +- src/GEOMImpl/GEOMImpl_Block6Explorer.hxx | 3 +- src/GEOMImpl/GEOMImpl_BlockDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_BlockDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_BooleanDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_BooleanDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_BoxDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_BoxDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_ChamferDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_ChamferDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_CircleDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_CircleDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_ConeDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_ConeDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_CopyDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_CopyDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_CylinderDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_CylinderDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_DiskDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_DiskDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_EllipseDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_EllipseDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_ExportDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_ExportDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_FaceDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_FaceDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_Fillet1d.cxx | 3 +- src/GEOMImpl/GEOMImpl_Fillet1d.hxx | 2 +- src/GEOMImpl/GEOMImpl_Fillet1dDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_Fillet1dDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_Fillet2dDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_Fillet2dDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_FilletDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_FilletDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_FillingDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_FillingDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_Gen.cxx | 2 +- src/GEOMImpl/GEOMImpl_Gen.hxx | 2 +- src/GEOMImpl/GEOMImpl_GlueDriver.cxx | 9 +- src/GEOMImpl/GEOMImpl_GlueDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_HealingDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_HealingDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_I3DSketcher.hxx | 2 +- src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx | 63 +- src/GEOMImpl/GEOMImpl_IAdvancedOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_IArc.hxx | 2 +- src/GEOMImpl/GEOMImpl_IArchimede.hxx | 2 +- src/GEOMImpl/GEOMImpl_IBasicOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_IBasicOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_IBlockTrsf.hxx | 2 +- src/GEOMImpl/GEOMImpl_IBlocks.hxx | 2 +- src/GEOMImpl/GEOMImpl_IBlocksOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_IBlocksOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_IBoolean.hxx | 2 +- src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_IBox.hxx | 2 +- src/GEOMImpl/GEOMImpl_IChamfer.hxx | 2 +- src/GEOMImpl/GEOMImpl_ICircle.hxx | 2 +- src/GEOMImpl/GEOMImpl_ICone.hxx | 2 +- src/GEOMImpl/GEOMImpl_ICopy.hxx | 2 +- src/GEOMImpl/GEOMImpl_ICurvesOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_ICurvesOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_ICylinder.hxx | 2 +- src/GEOMImpl/GEOMImpl_IDisk.hxx | 2 +- src/GEOMImpl/GEOMImpl_IEllipse.hxx | 2 +- src/GEOMImpl/GEOMImpl_IFace.hxx | 2 +- src/GEOMImpl/GEOMImpl_IFillet.hxx | 2 +- src/GEOMImpl/GEOMImpl_IFillet1d.hxx | 2 +- src/GEOMImpl/GEOMImpl_IFillet2d.hxx | 2 +- src/GEOMImpl/GEOMImpl_IFilling.hxx | 2 +- src/GEOMImpl/GEOMImpl_IGlue.hxx | 2 +- src/GEOMImpl/GEOMImpl_IGroupOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_IGroupOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_IHealing.hxx | 2 +- src/GEOMImpl/GEOMImpl_IHealingOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_IHealingOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_IImportExport.hxx | 2 +- src/GEOMImpl/GEOMImpl_IInsertOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_IInsertOperations.hxx | 3 +- src/GEOMImpl/GEOMImpl_ILine.hxx | 2 +- src/GEOMImpl/GEOMImpl_ILocalOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_ILocalOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_IMarker.hxx | 2 +- src/GEOMImpl/GEOMImpl_IMeasure.hxx | 2 +- src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx | 3 +- src/GEOMImpl/GEOMImpl_IMeasureOperations.hxx | 3 +- src/GEOMImpl/GEOMImpl_IMirror.hxx | 2 +- src/GEOMImpl/GEOMImpl_IOffset.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPartition.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPipe.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPipeBiNormal.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPipeDiffSect.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPipeShellSect.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPipeTShape.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPlane.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPoint.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPolyline.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPosition.hxx | 2 +- src/GEOMImpl/GEOMImpl_IPrism.hxx | 2 +- src/GEOMImpl/GEOMImpl_IRevolution.hxx | 2 +- src/GEOMImpl/GEOMImpl_IRotate.hxx | 2 +- src/GEOMImpl/GEOMImpl_IScale.hxx | 2 +- src/GEOMImpl/GEOMImpl_IShapes.hxx | 2 +- src/GEOMImpl/GEOMImpl_IShapesOperations.cxx | 125 +- src/GEOMImpl/GEOMImpl_IShapesOperations.hxx | 11 +- src/GEOMImpl/GEOMImpl_ISketcher.hxx | 2 +- src/GEOMImpl/GEOMImpl_ISphere.hxx | 2 +- src/GEOMImpl/GEOMImpl_ISpline.hxx | 2 +- src/GEOMImpl/GEOMImpl_IThruSections.hxx | 2 +- src/GEOMImpl/GEOMImpl_ITorus.hxx | 2 +- .../GEOMImpl_ITransformOperations.cxx | 3 +- .../GEOMImpl_ITransformOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_ITranslate.hxx | 2 +- src/GEOMImpl/GEOMImpl_IVector.hxx | 2 +- src/GEOMImpl/GEOMImpl_ImportDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_ImportDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_LineDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_LineDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_MarkerDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_MarkerDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_MeasureDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_MeasureDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_MirrorDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_MirrorDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_OffsetDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_OffsetDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_PartitionDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_PartitionDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_PipeDriver.cxx | 34 +- src/GEOMImpl/GEOMImpl_PipeDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_PipeTShapeDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_PipeTShapeDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_PlaneDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_PlaneDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_PointDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_PointDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_PolylineDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_PolylineDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_PositionDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_PositionDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_PrismDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_PrismDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx | 13 +- src/GEOMImpl/GEOMImpl_ProjectionDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_RevolutionDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_RevolutionDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_RotateDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_RotateDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_ScaleDriver.cxx | 7 +- src/GEOMImpl/GEOMImpl_ScaleDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_ShapeDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_ShapeDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_SketcherDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_SketcherDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_SphereDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_SphereDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_SplineDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_SplineDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_ThruSectionsDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_ThruSectionsDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_TorusDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_TorusDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_TranslateDriver.cxx | 2 +- src/GEOMImpl/GEOMImpl_TranslateDriver.hxx | 2 +- src/GEOMImpl/GEOMImpl_Types.hxx | 3 +- src/GEOMImpl/GEOMImpl_VectorDriver.cxx | 3 +- src/GEOMImpl/GEOMImpl_VectorDriver.hxx | 2 +- src/GEOMImpl/GEOM_GEOMImpl.hxx | 2 +- ...epTools_NurbsConvertModification_21423.hxx | 27 - src/GEOMImpl/Makefile.am | 23 +- src/GEOMToolsGUI/GEOMToolsGUI.cxx | 3 +- src/GEOMToolsGUI/GEOMToolsGUI.h | 2 +- src/GEOMToolsGUI/GEOMToolsGUI.pro | 63 - src/GEOMToolsGUI/GEOMToolsGUI_1.cxx | 57 +- .../GEOMToolsGUI_DeflectionDlg.cxx | 2 +- src/GEOMToolsGUI/GEOMToolsGUI_DeflectionDlg.h | 2 +- src/GEOMToolsGUI/GEOMToolsGUI_DeleteDlg.cxx | 2 +- src/GEOMToolsGUI/GEOMToolsGUI_DeleteDlg.h | 2 +- .../GEOMToolsGUI_LineWidthDlg.cxx | 2 +- src/GEOMToolsGUI/GEOMToolsGUI_LineWidthDlg.h | 2 +- src/GEOMToolsGUI/GEOMToolsGUI_MarkerDlg.cxx | 3 +- src/GEOMToolsGUI/GEOMToolsGUI_MarkerDlg.h | 2 +- .../GEOMToolsGUI_MaterialPropertiesDlg.cxx | 1439 +++++---------- .../GEOMToolsGUI_MaterialPropertiesDlg.h | 146 +- src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.cxx | 2 +- src/GEOMToolsGUI/GEOMToolsGUI_NbIsosDlg.h | 2 +- src/GEOMToolsGUI/GEOMToolsGUI_PublishDlg.cxx | 2 +- src/GEOMToolsGUI/GEOMToolsGUI_PublishDlg.h | 2 +- .../GEOMToolsGUI_TransparencyDlg.cxx | 2 +- .../GEOMToolsGUI_TransparencyDlg.h | 2 +- src/GEOMToolsGUI/GEOM_ToolsGUI.hxx | 2 +- src/GEOMToolsGUI/Makefile.am | 2 +- src/GEOM_I/GEOM_DumpPython.cc | 2 +- src/GEOM_I/GEOM_GEOM_I.hxx | 2 +- src/GEOM_I/GEOM_Gen_i.cc | 2 +- src/GEOM_I/GEOM_Gen_i.hh | 2 +- src/GEOM_I/GEOM_I.pro | 92 - src/GEOM_I/GEOM_I3DPrimOperations_i.cc | 2 +- src/GEOM_I/GEOM_I3DPrimOperations_i.hh | 2 +- src/GEOM_I/GEOM_IAdvancedOperations_i.cc | 2 +- src/GEOM_I/GEOM_IAdvancedOperations_i.hh | 2 +- src/GEOM_I/GEOM_IBasicOperations_i.cc | 2 +- src/GEOM_I/GEOM_IBasicOperations_i.hh | 2 +- src/GEOM_I/GEOM_IBlocksOperations_i.cc | 2 +- src/GEOM_I/GEOM_IBlocksOperations_i.hh | 2 +- src/GEOM_I/GEOM_IBooleanOperations_i.cc | 2 +- src/GEOM_I/GEOM_IBooleanOperations_i.hh | 2 +- src/GEOM_I/GEOM_ICurvesOperations_i.cc | 2 +- src/GEOM_I/GEOM_ICurvesOperations_i.hh | 2 +- src/GEOM_I/GEOM_IGroupOperations_i.cc | 2 +- src/GEOM_I/GEOM_IGroupOperations_i.hh | 2 +- src/GEOM_I/GEOM_IHealingOperations_i.cc | 5 +- src/GEOM_I/GEOM_IHealingOperations_i.hh | 2 +- src/GEOM_I/GEOM_IInsertOperations_i.cc | 3 +- src/GEOM_I/GEOM_IInsertOperations_i.hh | 3 +- src/GEOM_I/GEOM_ILocalOperations_i.cc | 2 +- src/GEOM_I/GEOM_ILocalOperations_i.hh | 2 +- src/GEOM_I/GEOM_IMeasureOperations_i.cc | 3 +- src/GEOM_I/GEOM_IMeasureOperations_i.hh | 3 +- src/GEOM_I/GEOM_IOperations_i.cc | 2 +- src/GEOM_I/GEOM_IOperations_i.hh | 2 +- src/GEOM_I/GEOM_IShapesOperations_i.cc | 33 +- src/GEOM_I/GEOM_IShapesOperations_i.hh | 5 +- src/GEOM_I/GEOM_ITransformOperations_i.cc | 2 +- src/GEOM_I/GEOM_ITransformOperations_i.hh | 2 +- src/GEOM_I/GEOM_Object_i.cc | 2 +- src/GEOM_I/GEOM_Object_i.hh | 2 +- src/GEOM_I/Makefile.am | 5 +- src/GEOM_I_Superv/GEOM_I_Superv.hxx | 2 +- src/GEOM_I_Superv/GEOM_List_i.hh | 2 +- src/GEOM_I_Superv/GEOM_Superv_i.cc | 2 +- src/GEOM_I_Superv/GEOM_Superv_i.hh | 2 +- src/GEOM_I_Superv/Makefile.am | 5 +- src/GEOM_PY/Makefile.am | 2 +- src/GEOM_PY/__init__.py | 2 +- src/GEOM_PY/geomtools.py | 2 +- src/GEOM_PY/sketcher.py | 3 +- src/GEOM_PY/structelem/Makefile.am | 2 +- src/GEOM_PY/structelem/__init__.py | 2 +- src/GEOM_PY/structelem/orientation.py | 2 +- src/GEOM_PY/structelem/parts.py | 16 +- src/GEOM_SWIG/GEOM_Nut.py | 2 +- src/GEOM_SWIG/GEOM_ObjectInfo.py | 2 +- src/GEOM_SWIG/GEOM_Partition1.py | 2 +- src/GEOM_SWIG/GEOM_Partition2.py | 2 +- src/GEOM_SWIG/GEOM_Partition3.py | 2 +- src/GEOM_SWIG/GEOM_Partition4.py | 2 +- src/GEOM_SWIG/GEOM_Partition5.py | 2 +- src/GEOM_SWIG/GEOM_Sketcher.py | 2 +- src/GEOM_SWIG/GEOM_Spanner.py | 2 +- src/GEOM_SWIG/GEOM_TestAll.py | 2 +- src/GEOM_SWIG/GEOM_TestHealing.py | 2 +- src/GEOM_SWIG/GEOM_TestMeasures.py | 3 +- src/GEOM_SWIG/GEOM_TestOthers.py | 6 +- src/GEOM_SWIG/GEOM_blocks.py | 2 +- src/GEOM_SWIG/GEOM_cyl2complementary.py | 2 +- src/GEOM_SWIG/GEOM_example.py | 2 +- src/GEOM_SWIG/GEOM_example2.py | 2 +- src/GEOM_SWIG/GEOM_example3.py | 2 +- src/GEOM_SWIG/GEOM_example4.py | 2 +- src/GEOM_SWIG/GEOM_example5.py | 2 +- src/GEOM_SWIG/GEOM_example6.py | 2 +- src/GEOM_SWIG/GEOM_example7.py | 2 +- src/GEOM_SWIG/GEOM_moteur.py | 2 +- src/GEOM_SWIG/GEOM_shared_modules.py | 2 +- src/GEOM_SWIG/GEOM_shellSolid.py | 2 +- src/GEOM_SWIG/GEOM_tube_geom.py | 2 +- src/GEOM_SWIG/GEOM_tube_geom_gg2.py | 2 +- src/GEOM_SWIG/GEOM_usinggeom.py | 2 +- src/GEOM_SWIG/Makefile.am | 2 +- src/GEOM_SWIG/PAL_MESH_019_020_geometry.py | 2 +- src/GEOM_SWIG/PAL_MESH_028_geometry.py | 2 +- src/GEOM_SWIG/PAL_MESH_030_geometry.py | 2 +- src/GEOM_SWIG/PAL_MESH_033_geometry.py | 2 +- src/GEOM_SWIG/PAL_MESH_035_geometry.py | 2 +- src/GEOM_SWIG/batchmode_geompy.py | 2 +- src/GEOM_SWIG/geompy.py | 2 +- src/GEOM_SWIG/geompyDC.py | 100 +- src/GEOM_SWIG_WITHIHM/Makefile.am | 2 +- src/GEOM_SWIG_WITHIHM/libGEOM_Swig.i | 2 +- src/GenerationGUI/GenerationGUI.cxx | 2 +- src/GenerationGUI/GenerationGUI.h | 2 +- src/GenerationGUI/GenerationGUI.pro | 64 - .../GenerationGUI_FillingDlg.cxx | 2 +- src/GenerationGUI/GenerationGUI_FillingDlg.h | 2 +- src/GenerationGUI/GenerationGUI_PipeDlg.cxx | 2 +- src/GenerationGUI/GenerationGUI_PipeDlg.h | 2 +- src/GenerationGUI/GenerationGUI_PrismDlg.cxx | 2 +- src/GenerationGUI/GenerationGUI_PrismDlg.h | 2 +- src/GenerationGUI/GenerationGUI_RevolDlg.cxx | 3 +- src/GenerationGUI/GenerationGUI_RevolDlg.h | 2 +- src/GenerationGUI/Makefile.am | 2 +- src/GroupGUI/GroupGUI.cxx | 2 +- src/GroupGUI/GroupGUI.h | 2 +- src/GroupGUI/GroupGUI_GroupDlg.cxx | 32 +- src/GroupGUI/GroupGUI_GroupDlg.h | 2 +- src/GroupGUI/Makefile.am | 2 +- src/IGESExport/IGESExport.cxx | 3 +- src/IGESExport/IGESExport.pro | 47 - src/IGESExport/Makefile.am | 2 +- src/IGESImport/IGESImport.cxx | 2 +- src/IGESImport/IGESImport.pro | 47 - src/IGESImport/Makefile.am | 2 +- src/Makefile.am | 20 +- src/Material/Makefile.am | 3 +- src/Material/Material.h | 2 +- src/Material/Material_Model.cxx | 952 +++++----- src/Material/Material_Model.h | 80 +- src/Material/Material_ResourceMgr.cxx | 369 +--- src/Material/Material_ResourceMgr.h | 4 +- src/Material/resources/SalomeMaterial.xml | 183 +- src/MeasureGUI/Makefile.am | 3 +- src/MeasureGUI/MeasureGUI.cxx | 3 +- src/MeasureGUI/MeasureGUI.h | 2 +- src/MeasureGUI/MeasureGUI_AngleDlg.cxx | 3 +- src/MeasureGUI/MeasureGUI_AngleDlg.h | 2 +- src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_BndBoxDlg.h | 2 +- src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_CenterMassDlg.h | 2 +- .../MeasureGUI_CheckCompoundOfBlocksDlg.cxx | 2 +- .../MeasureGUI_CheckCompoundOfBlocksDlg.h | 2 +- .../MeasureGUI_CheckSelfIntersectionsDlg.cxx | 3 +- .../MeasureGUI_CheckSelfIntersectionsDlg.h | 3 +- src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_CheckShapeDlg.h | 2 +- src/MeasureGUI/MeasureGUI_DistanceDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_DistanceDlg.h | 2 +- src/MeasureGUI/MeasureGUI_InertiaDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_InertiaDlg.h | 2 +- src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h | 2 +- src/MeasureGUI/MeasureGUI_NormaleDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_NormaleDlg.h | 2 +- src/MeasureGUI/MeasureGUI_PointDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_PointDlg.h | 2 +- src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_PropertiesDlg.h | 2 +- src/MeasureGUI/MeasureGUI_Skeleton.cxx | 2 +- src/MeasureGUI/MeasureGUI_Skeleton.h | 2 +- src/MeasureGUI/MeasureGUI_WhatisDlg.cxx | 2 +- src/MeasureGUI/MeasureGUI_WhatisDlg.h | 2 +- src/MeasureGUI/MeasureGUI_Widgets.cxx | 2 +- src/MeasureGUI/MeasureGUI_Widgets.h | 2 +- src/{NMTDS_NEW => NMTDS}/FILES | 0 ...aMapNodeOfDataMapOfIntegerMapOfInteger.hxx | 72 - ...pOfIntegerIndexedDataMapOfShapeInteger.hxx | 75 - ...aMapNodeOfIndexedDataMapOfIntegerShape.hxx | 75 - ...apNodeOfIndexedDataMapOfShapeBndSphere.hxx | 72 - ...dDataMapNodeOfIndexedDataMapOfShapeBox.hxx | 75 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 75 - .../Handle_NMTDS_ListNodeOfListOfPair.hxx | 43 - ...ndle_NMTDS_ListNodeOfListOfPairBoolean.hxx | 43 - .../Handle_NMTDS_ListNodeOfListOfPassKey.hxx | 75 - ...e_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx | 75 - ...dle_NMTDS_StdMapNodeOfMapOfPairBoolean.hxx | 43 - .../Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx | 75 - ..._NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx | 75 - src/NMTDS/Makefile.am | 164 +- src/NMTDS/NMTDS.cdl | 152 +- src/NMTDS/NMTDS.pro | 117 -- src/NMTDS/NMTDS_BndSphere.cdl | 78 - src/NMTDS/NMTDS_BndSphere.cxx | 4 +- src/NMTDS/NMTDS_BndSphere.hxx | 118 +- src/NMTDS/NMTDS_BndSphere.ixx | 24 - src/NMTDS/NMTDS_BndSphere.jxx | 25 - src/NMTDS/NMTDS_BndSphere.lxx | 2 +- src/NMTDS/NMTDS_BndSphereTree.cxx | 2 +- src/NMTDS/NMTDS_BndSphereTree.hxx | 2 +- src/NMTDS/NMTDS_BoxBndTree.cxx | 2 +- src/NMTDS/NMTDS_BoxBndTree.hxx | 2 +- .../NMTDS_CArray1OfIndexRange.cxx | 80 +- src/NMTDS/NMTDS_CArray1OfIndexRange.hxx | 209 +-- src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx | 41 - ...IteratorOfDataMapOfIntegerMapOfInteger.hxx | 101 +- ...eratorOfDataMapOfIntegerMapOfInteger_0.cxx | 54 - ...aMapNodeOfDataMapOfIntegerMapOfInteger.hxx | 131 -- ...apNodeOfDataMapOfIntegerMapOfInteger_0.cxx | 100 - .../NMTDS_DataMapOfIntegerMapOfInteger.hxx | 106 +- .../NMTDS_DataMapOfIntegerMapOfInteger_0.cxx | 57 - src/NMTDS/NMTDS_IndexRange.cdl | 58 - src/NMTDS/NMTDS_IndexRange.cxx | 5 +- src/NMTDS/NMTDS_IndexRange.hxx | 111 +- src/NMTDS/NMTDS_IndexRange.ixx | 27 - src/NMTDS/NMTDS_IndexRange.jxx | 25 - ...pOfIntegerIndexedDataMapOfShapeInteger.hxx | 135 -- ...fIntegerIndexedDataMapOfShapeInteger_0.cxx | 98 - ...aMapNodeOfIndexedDataMapOfIntegerShape.hxx | 135 -- ...apNodeOfIndexedDataMapOfIntegerShape_0.cxx | 98 - ...apNodeOfIndexedDataMapOfShapeBndSphere.hxx | 136 -- ...NodeOfIndexedDataMapOfShapeBndSphere_0.cxx | 98 - ...dDataMapNodeOfIndexedDataMapOfShapeBox.hxx | 139 -- ...ataMapNodeOfIndexedDataMapOfShapeBox_0.cxx | 101 -- ...pOfIntegerIndexedDataMapOfShapeInteger.hxx | 152 -- ...fIntegerIndexedDataMapOfShapeInteger_0.cxx | 58 - .../NMTDS_IndexedDataMapOfIntegerShape.hxx | 153 +- .../NMTDS_IndexedDataMapOfIntegerShape_0.cxx | 58 - .../NMTDS_IndexedDataMapOfShapeBndSphere.hxx | 137 +- ...NMTDS_IndexedDataMapOfShapeBndSphere_0.cxx | 58 - src/NMTDS/NMTDS_IndexedDataMapOfShapeBox.hxx | 162 +- .../NMTDS_IndexedDataMapOfShapeBox_0.cxx | 61 - src/NMTDS/NMTDS_InterfPool.cdl | 150 -- src/NMTDS/NMTDS_InterfPool.cxx | 5 +- src/NMTDS/NMTDS_InterfPool.hxx | 288 ++- src/NMTDS/NMTDS_InterfPool.ixx | 24 - src/NMTDS/NMTDS_InterfPool.jxx | 45 - src/NMTDS/NMTDS_InterfType.hxx | 13 +- src/NMTDS/NMTDS_Iterator.cdl | 96 - src/NMTDS/NMTDS_Iterator.cxx | 6 +- src/NMTDS/NMTDS_Iterator.hxx | 225 ++- src/NMTDS/NMTDS_Iterator.ixx | 27 - src/NMTDS/NMTDS_Iterator.jxx | 31 - src/NMTDS/NMTDS_IteratorCheckerSI.cdl | 41 - src/NMTDS/NMTDS_IteratorCheckerSI.cxx | 7 +- src/NMTDS/NMTDS_IteratorCheckerSI.hxx | 84 +- src/NMTDS/NMTDS_IteratorCheckerSI.ixx | 24 - src/NMTDS/NMTDS_IteratorCheckerSI.jxx | 22 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 132 +- ...xedDataMapOfShapeAncestorsSuccessors_0.cxx | 53 - src/NMTDS/NMTDS_ListIteratorOfListOfPair.hxx | 159 +- .../NMTDS_ListIteratorOfListOfPairBoolean.hxx | 159 +- ...MTDS_ListIteratorOfListOfPairBoolean_0.cxx | 52 - .../NMTDS_ListIteratorOfListOfPair_0.cxx | 52 - .../NMTDS_ListIteratorOfListOfPassKey.hxx | 132 +- ...TDS_ListIteratorOfListOfPassKeyBoolean.hxx | 132 +- ...S_ListIteratorOfListOfPassKeyBoolean_0.cxx | 53 - .../NMTDS_ListIteratorOfListOfPassKey_0.cxx | 53 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 119 -- ...xedDataMapOfShapeAncestorsSuccessors_0.cxx | 96 - src/NMTDS/NMTDS_ListNodeOfListOfPair.hxx | 105 -- .../NMTDS_ListNodeOfListOfPairBoolean.hxx | 105 -- .../NMTDS_ListNodeOfListOfPairBoolean_0.cxx | 66 - src/NMTDS/NMTDS_ListNodeOfListOfPair_0.cxx | 66 - src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx | 119 -- .../NMTDS_ListNodeOfListOfPassKeyBoolean.hxx | 119 -- ...NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx | 96 - src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx | 96 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 186 +- ...xedDataMapOfShapeAncestorsSuccessors_0.cxx | 50 - src/NMTDS/NMTDS_ListOfPair.hxx | 199 +- src/NMTDS/NMTDS_ListOfPairBoolean.hxx | 199 +- src/NMTDS/NMTDS_ListOfPairBoolean_0.cxx | 49 - src/NMTDS/NMTDS_ListOfPair_0.cxx | 49 - src/NMTDS/NMTDS_ListOfPassKey.hxx | 186 +- src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx | 186 +- src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx | 50 - src/NMTDS/NMTDS_ListOfPassKey_0.cxx | 50 - .../NMTDS_MapIteratorOfMapOfPairBoolean.hxx | 129 +- .../NMTDS_MapIteratorOfMapOfPairBoolean_0.cxx | 54 - src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx | 97 +- ...NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx | 97 +- ...TDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx | 55 - .../NMTDS_MapIteratorOfMapOfPassKey_0.cxx | 55 - src/NMTDS/NMTDS_MapOfPairBoolean.hxx | 158 +- src/NMTDS/NMTDS_MapOfPairBoolean_0.cxx | 54 - src/NMTDS/NMTDS_MapOfPassKey.hxx | 128 +- src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx | 128 +- src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx | 55 - src/NMTDS/NMTDS_MapOfPassKey_0.cxx | 55 - src/NMTDS/NMTDS_PInterfPool.hxx | 8 +- src/NMTDS/NMTDS_PIterator.hxx | 8 +- src/NMTDS/NMTDS_PShapesDataStructure.hxx | 5 +- src/NMTDS/NMTDS_Pair.cdl | 66 - src/NMTDS/NMTDS_Pair.cxx | 5 +- src/NMTDS/NMTDS_Pair.hxx | 174 +- src/NMTDS/NMTDS_Pair.ixx | 26 - src/NMTDS/NMTDS_Pair.jxx | 24 - src/NMTDS/NMTDS_PairBoolean.cdl | 52 - src/NMTDS/NMTDS_PairBoolean.cxx | 5 +- src/NMTDS/NMTDS_PairBoolean.hxx | 150 +- src/NMTDS/NMTDS_PairBoolean.ixx | 26 - src/NMTDS/NMTDS_PairBoolean.jxx | 24 - src/NMTDS/NMTDS_PairMapHasher.cdl | 46 - src/NMTDS/NMTDS_PairMapHasher.cxx | 5 +- src/NMTDS/NMTDS_PairMapHasher.hxx | 137 +- src/NMTDS/NMTDS_PairMapHasher.ixx | 26 - src/NMTDS/NMTDS_PairMapHasher.jxx | 27 - src/NMTDS/NMTDS_PassKey.cdl | 98 - src/NMTDS/NMTDS_PassKey.cxx | 8 +- src/NMTDS/NMTDS_PassKey.hxx | 183 +- src/NMTDS/NMTDS_PassKey.ixx | 27 - src/NMTDS/NMTDS_PassKey.jxx | 28 - src/NMTDS/NMTDS_PassKeyBoolean.cdl | 53 - src/NMTDS/NMTDS_PassKeyBoolean.cxx | 4 +- src/NMTDS/NMTDS_PassKeyBoolean.hxx | 107 +- src/NMTDS/NMTDS_PassKeyBoolean.ixx | 27 - src/NMTDS/NMTDS_PassKeyBoolean.jxx | 25 - src/NMTDS/NMTDS_PassKeyMapHasher.cdl | 48 - src/NMTDS/NMTDS_PassKeyMapHasher.cxx | 4 +- src/NMTDS/NMTDS_PassKeyMapHasher.hxx | 92 +- src/NMTDS/NMTDS_PassKeyMapHasher.ixx | 27 - src/NMTDS/NMTDS_PassKeyMapHasher.jxx | 28 - src/NMTDS/NMTDS_PassKeyShape.cdl | 93 - src/NMTDS/NMTDS_PassKeyShape.cxx | 5 +- src/NMTDS/NMTDS_PassKeyShape.hxx | 190 +- src/NMTDS/NMTDS_PassKeyShape.ixx | 24 - src/NMTDS/NMTDS_PassKeyShape.jxx | 28 - src/NMTDS/NMTDS_PassKeyShapeMapHasher.cdl | 45 - src/NMTDS/NMTDS_PassKeyShapeMapHasher.cxx | 4 +- src/NMTDS/NMTDS_PassKeyShapeMapHasher.hxx | 93 +- src/NMTDS/NMTDS_PassKeyShapeMapHasher.ixx | 24 - src/NMTDS/NMTDS_PassKeyShapeMapHasher.jxx | 25 - src/NMTDS/NMTDS_ShapesDataStructure.cdl | 102 -- src/NMTDS/NMTDS_ShapesDataStructure.cxx | 5 +- src/NMTDS/NMTDS_ShapesDataStructure.hxx | 220 +-- src/NMTDS/NMTDS_ShapesDataStructure.ixx | 27 - src/NMTDS/NMTDS_ShapesDataStructure.jxx | 40 - .../NMTDS_StdMapNodeOfMapOfPairBoolean.hxx | 110 -- .../NMTDS_StdMapNodeOfMapOfPairBoolean_0.cxx | 71 - src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx | 124 -- .../NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx | 124 -- ...MTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx | 101 -- .../NMTDS_StdMapNodeOfMapOfPassKey_0.cxx | 101 -- src/NMTDS/NMTDS_Tools.cdl | 61 - src/NMTDS/NMTDS_Tools.cxx | 8 +- src/NMTDS/NMTDS_Tools.hxx | 124 +- src/NMTDS/NMTDS_Tools.ixx | 24 - src/NMTDS/NMTDS_Tools.jxx | 31 - src/NMTDS_NEW/Makefile.am | 112 -- src/NMTDS_NEW/NMTDS.cdl | 94 - src/NMTDS_NEW/NMTDS_BndSphere.cxx | 57 - src/NMTDS_NEW/NMTDS_BndSphere.hxx | 73 - src/NMTDS_NEW/NMTDS_BndSphere.lxx | 108 -- src/NMTDS_NEW/NMTDS_BndSphereTree.cxx | 89 - src/NMTDS_NEW/NMTDS_BndSphereTree.hxx | 53 - src/NMTDS_NEW/NMTDS_BoxBndTree.cxx | 92 - src/NMTDS_NEW/NMTDS_BoxBndTree.hxx | 56 - src/NMTDS_NEW/NMTDS_CArray1OfIndexRange.hxx | 121 -- ...IteratorOfDataMapOfIntegerMapOfInteger.hxx | 32 - .../NMTDS_DataMapOfIntegerMapOfInteger.hxx | 40 - src/NMTDS_NEW/NMTDS_IndexRange.cxx | 79 - src/NMTDS_NEW/NMTDS_IndexRange.hxx | 62 - .../NMTDS_IndexedDataMapOfIntegerShape.hxx | 42 - .../NMTDS_IndexedDataMapOfShapeBndSphere.hxx | 45 - .../NMTDS_IndexedDataMapOfShapeBox.hxx | 44 - src/NMTDS_NEW/NMTDS_InterfPool.cxx | 301 --- src/NMTDS_NEW/NMTDS_InterfPool.hxx | 120 -- src/NMTDS_NEW/NMTDS_InterfType.hxx | 44 - src/NMTDS_NEW/NMTDS_Iterator.cxx | 467 ----- src/NMTDS_NEW/NMTDS_Iterator.hxx | 102 -- src/NMTDS_NEW/NMTDS_IteratorCheckerSI.cxx | 223 --- src/NMTDS_NEW/NMTDS_IteratorCheckerSI.hxx | 45 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 32 - .../NMTDS_ListIteratorOfListOfPair.hxx | 32 - .../NMTDS_ListIteratorOfListOfPairBoolean.hxx | 32 - .../NMTDS_ListIteratorOfListOfPassKey.hxx | 32 - ...TDS_ListIteratorOfListOfPassKeyBoolean.hxx | 32 - ...dexedDataMapOfShapeAncestorsSuccessors.hxx | 34 - src/NMTDS_NEW/NMTDS_ListOfPair.hxx | 34 - src/NMTDS_NEW/NMTDS_ListOfPairBoolean.hxx | 34 - src/NMTDS_NEW/NMTDS_ListOfPassKey.hxx | 34 - src/NMTDS_NEW/NMTDS_ListOfPassKeyBoolean.hxx | 34 - .../NMTDS_MapIteratorOfMapOfPairBoolean.hxx | 33 - .../NMTDS_MapIteratorOfMapOfPassKey.hxx | 33 - ...NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx | 33 - src/NMTDS_NEW/NMTDS_MapOfPairBoolean.hxx | 40 - src/NMTDS_NEW/NMTDS_MapOfPassKey.hxx | 40 - src/NMTDS_NEW/NMTDS_MapOfPassKeyBoolean.hxx | 40 - src/NMTDS_NEW/NMTDS_PInterfPool.hxx | 32 - src/NMTDS_NEW/NMTDS_PIterator.hxx | 32 - src/NMTDS_NEW/NMTDS_PShapesDataStructure.hxx | 32 - src/NMTDS_NEW/NMTDS_Pair.cxx | 149 -- src/NMTDS_NEW/NMTDS_Pair.hxx | 72 - src/NMTDS_NEW/NMTDS_PairBoolean.cxx | 69 - src/NMTDS_NEW/NMTDS_PairBoolean.hxx | 57 - src/NMTDS_NEW/NMTDS_PairMapHasher.cxx | 44 - src/NMTDS_NEW/NMTDS_PairMapHasher.hxx | 48 - src/NMTDS_NEW/NMTDS_PassKey.cxx | 362 ---- src/NMTDS_NEW/NMTDS_PassKey.hxx | 103 -- src/NMTDS_NEW/NMTDS_PassKeyBoolean.cxx | 72 - src/NMTDS_NEW/NMTDS_PassKeyBoolean.hxx | 60 - src/NMTDS_NEW/NMTDS_PassKeyMapHasher.cxx | 47 - src/NMTDS_NEW/NMTDS_PassKeyMapHasher.hxx | 52 - src/NMTDS_NEW/NMTDS_PassKeyShape.cxx | 227 --- src/NMTDS_NEW/NMTDS_PassKeyShape.hxx | 100 - src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.cxx | 44 - src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.hxx | 48 - src/NMTDS_NEW/NMTDS_ShapesDataStructure.cxx | 389 ---- src/NMTDS_NEW/NMTDS_ShapesDataStructure.hxx | 74 - src/NMTDS_NEW/NMTDS_Tools.cxx | 180 -- src/NMTDS_NEW/NMTDS_Tools.hxx | 62 - src/{NMTTools_NEW => NMTTools}/FILES | 0 ..._DataMapNodeOfDataMapOfIntegerFaceInfo.hxx | 75 - ...pNodeOfDataMapOfIntegerListOfPaveBlock.hxx | 75 - ...eOfIndexedDataMapOfIndexedMapOfInteger.hxx | 75 - ...IndexedDataMapOfShapeIndexedMapOfShape.hxx | 75 - ...apNodeOfIndexedDataMapOfShapePaveBlock.hxx | 75 - ...e_NMTTools_ListNodeOfListOfCommonBlock.hxx | 75 - ...NMTTools_ListNodeOfListOfCoupleOfShape.hxx | 75 - ...le_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx | 75 - src/NMTTools/Makefile.am | 78 +- src/NMTTools/NMTTools.cdl | 149 +- src/NMTTools/NMTTools.pro | 127 -- src/NMTTools/NMTTools_CheckerSI.cdl | 64 - src/NMTTools/NMTTools_CheckerSI.cxx | 51 +- src/NMTTools/NMTTools_CheckerSI.hxx | 115 +- src/NMTTools/NMTTools_CheckerSI.ixx | 24 - src/NMTTools/NMTTools_CheckerSI.jxx | 22 - src/NMTTools/NMTTools_CheckerSI_1.cxx | 20 +- src/NMTTools/NMTTools_CommonBlock.cdl | 108 -- src/NMTTools/NMTTools_CommonBlock.cxx | 34 +- src/NMTTools/NMTTools_CommonBlock.hxx | 142 +- src/NMTTools/NMTTools_CommonBlock.ixx | 27 - src/NMTTools/NMTTools_CommonBlock.jxx | 34 - src/NMTTools/NMTTools_CommonBlockAPI.cdl | 74 - src/NMTTools/NMTTools_CommonBlockAPI.cxx | 14 +- src/NMTTools/NMTTools_CommonBlockAPI.hxx | 115 +- src/NMTTools/NMTTools_CommonBlockAPI.ixx | 27 - src/NMTTools/NMTTools_CommonBlockAPI.jxx | 37 - .../NMTTools_CommonBlockPool.cxx | 84 +- src/NMTTools/NMTTools_CommonBlockPool.hxx | 167 +- src/NMTTools/NMTTools_CommonBlockPool_0.cxx | 41 - src/NMTTools/NMTTools_CoupleOfShape.cdl | 59 - src/NMTTools/NMTTools_CoupleOfShape.cxx | 14 +- src/NMTTools/NMTTools_CoupleOfShape.hxx | 103 +- src/NMTTools/NMTTools_CoupleOfShape.ixx | 27 - src/NMTTools/NMTTools_CoupleOfShape.jxx | 28 - src/NMTTools/NMTTools_DEProcessor.cdl | 125 -- src/NMTTools/NMTTools_DEProcessor.cxx | 68 +- src/NMTTools/NMTTools_DEProcessor.hxx | 159 +- src/NMTTools/NMTTools_DEProcessor.ixx | 27 - src/NMTTools/NMTTools_DEProcessor.jxx | 40 - ...aMapIteratorOfDataMapOfIntegerFaceInfo.hxx | 104 +- ...apIteratorOfDataMapOfIntegerFaceInfo_0.cxx | 57 - ...ratorOfDataMapOfIntegerListOfPaveBlock.hxx | 104 +- ...torOfDataMapOfIntegerListOfPaveBlock_0.cxx | 57 - ..._DataMapNodeOfDataMapOfIntegerFaceInfo.hxx | 134 -- ...ataMapNodeOfDataMapOfIntegerFaceInfo_0.cxx | 103 -- ...pNodeOfDataMapOfIntegerListOfPaveBlock.hxx | 134 -- ...odeOfDataMapOfIntegerListOfPaveBlock_0.cxx | 103 -- .../NMTTools_DataMapOfIntegerFaceInfo.hxx | 147 +- .../NMTTools_DataMapOfIntegerFaceInfo_0.cxx | 60 - ...TTools_DataMapOfIntegerListOfPaveBlock.hxx | 136 +- ...ools_DataMapOfIntegerListOfPaveBlock_0.cxx | 60 - src/NMTTools/NMTTools_FaceInfo.cdl | 161 -- src/NMTTools/NMTTools_FaceInfo.cxx | 4 +- src/NMTTools/NMTTools_FaceInfo.hxx | 195 +- src/NMTTools/NMTTools_FaceInfo.ixx | 27 - src/NMTTools/NMTTools_FaceInfo.jxx | 31 - src/NMTTools/NMTTools_FaceInfo.lxx | 30 +- ...eOfIndexedDataMapOfIndexedMapOfInteger.hxx | 135 -- ...fIndexedDataMapOfIndexedMapOfInteger_0.cxx | 98 - ...IndexedDataMapOfShapeIndexedMapOfShape.hxx | 139 -- ...dexedDataMapOfShapeIndexedMapOfShape_0.cxx | 101 -- ...apNodeOfIndexedDataMapOfShapePaveBlock.hxx | 139 -- ...NodeOfIndexedDataMapOfShapePaveBlock_0.cxx | 101 -- ...ls_IndexedDataMapOfIndexedMapOfInteger.hxx | 161 +- ..._IndexedDataMapOfIndexedMapOfInteger_0.cxx | 58 - ...IndexedDataMapOfShapeIndexedMapOfShape.hxx | 165 +- ...dexedDataMapOfShapeIndexedMapOfShape_0.cxx | 61 - ...MTTools_IndexedDataMapOfShapePaveBlock.hxx | 164 +- ...Tools_IndexedDataMapOfShapePaveBlock_0.cxx | 61 - ...TTools_ListIteratorOfListOfCommonBlock.hxx | 131 +- ...ools_ListIteratorOfListOfCommonBlock_0.cxx | 53 - ...ools_ListIteratorOfListOfCoupleOfShape.hxx | 131 +- ...ls_ListIteratorOfListOfCoupleOfShape_0.cxx | 53 - .../NMTTools_ListNodeOfListOfCommonBlock.hxx | 119 -- ...NMTTools_ListNodeOfListOfCommonBlock_0.cxx | 96 - ...NMTTools_ListNodeOfListOfCoupleOfShape.hxx | 119 -- ...TTools_ListNodeOfListOfCoupleOfShape_0.cxx | 96 - src/NMTTools/NMTTools_ListOfCommonBlock.hxx | 187 +- src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx | 50 - src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx | 187 +- .../NMTTools_ListOfCoupleOfShape_0.cxx | 50 - .../NMTTools_MapIteratorOfMapOfPaveBlock.hxx | 98 +- ...NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx | 55 - src/NMTTools/NMTTools_MapOfPaveBlock.hxx | 128 +- src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx | 55 - src/NMTTools/NMTTools_PPaveFiller.hxx | 7 +- src/NMTTools/NMTTools_PaveFiller.cdl | 538 ------ src/NMTTools/NMTTools_PaveFiller.cxx | 91 +- src/NMTTools/NMTTools_PaveFiller.hxx | 581 +++--- src/NMTTools/NMTTools_PaveFiller.ixx | 27 - src/NMTTools/NMTTools_PaveFiller.jxx | 103 -- src/NMTTools/NMTTools_PaveFiller_0.cxx | 22 +- src/NMTTools/NMTTools_PaveFiller_1.cxx | 16 +- src/NMTTools/NMTTools_PaveFiller_2.cxx | 20 +- src/NMTTools/NMTTools_PaveFiller_3.cxx | 30 +- src/NMTTools/NMTTools_PaveFiller_4.cxx | 25 +- src/NMTTools/NMTTools_PaveFiller_5.cxx | 94 +- src/NMTTools/NMTTools_PaveFiller_6.cxx | 102 +- src/NMTTools/NMTTools_PaveFiller_7.cxx | 23 +- src/NMTTools/NMTTools_PaveFiller_8.cxx | 42 +- src/NMTTools/NMTTools_PaveFiller_9.cxx | 8 +- .../NMTTools_StdMapNodeOfMapOfPaveBlock.hxx | 124 -- .../NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx | 101 -- src/NMTTools/NMTTools_Tools.cdl | 95 - src/NMTTools/NMTTools_Tools.cxx | 70 +- src/NMTTools/NMTTools_Tools.hxx | 153 +- src/NMTTools/NMTTools_Tools.ixx | 27 - src/NMTTools/NMTTools_Tools.jxx | 58 - src/NMTTools_NEW/Makefile.am | 97 - src/NMTTools_NEW/NMTTools.cdl | 129 -- src/NMTTools_NEW/NMTTools_CheckerSI.cxx | 180 -- src/NMTTools_NEW/NMTTools_CheckerSI.hxx | 69 - src/NMTTools_NEW/NMTTools_CheckerSI_1.cxx | 159 -- src/NMTTools_NEW/NMTTools_CommonBlock.cxx | 248 --- src/NMTTools_NEW/NMTTools_CommonBlock.hxx | 91 - src/NMTTools_NEW/NMTTools_CommonBlockAPI.cxx | 135 -- src/NMTTools_NEW/NMTTools_CommonBlockAPI.hxx | 74 - src/NMTTools_NEW/NMTTools_CommonBlockPool.hxx | 122 -- src/NMTTools_NEW/NMTTools_CoupleOfShape.cxx | 67 - src/NMTTools_NEW/NMTTools_CoupleOfShape.hxx | 61 - src/NMTTools_NEW/NMTTools_DEProcessor.cxx | 568 ------ src/NMTTools_NEW/NMTTools_DEProcessor.hxx | 117 -- ...aMapIteratorOfDataMapOfIntegerFaceInfo.hxx | 32 - ...ratorOfDataMapOfIntegerListOfPaveBlock.hxx | 14 - .../NMTTools_DataMapOfIntegerFaceInfo.hxx | 40 - ...TTools_DataMapOfIntegerListOfPaveBlock.hxx | 41 - src/NMTTools_NEW/NMTTools_FaceInfo.cxx | 28 - src/NMTTools_NEW/NMTTools_FaceInfo.hxx | 124 -- src/NMTTools_NEW/NMTTools_FaceInfo.lxx | 136 -- ...ls_IndexedDataMapOfIndexedMapOfInteger.hxx | 42 - ...IndexedDataMapOfShapeIndexedMapOfShape.hxx | 47 - ...MTTools_IndexedDataMapOfShapePaveBlock.hxx | 40 - ...TTools_ListIteratorOfListOfCommonBlock.hxx | 31 - ...ools_ListIteratorOfListOfCoupleOfShape.hxx | 31 - .../NMTTools_ListOfCommonBlock.hxx | 33 - .../NMTTools_ListOfCoupleOfShape.hxx | 33 - .../NMTTools_MapIteratorOfMapOfPaveBlock.hxx | 33 - src/NMTTools_NEW/NMTTools_MapOfPaveBlock.hxx | 40 - src/NMTTools_NEW/NMTTools_PPaveFiller.hxx | 35 - src/NMTTools_NEW/NMTTools_PaveFiller.cxx | 303 ---- src/NMTTools_NEW/NMTTools_PaveFiller.hxx | 500 ----- src/NMTTools_NEW/NMTTools_PaveFiller_0.cxx | 128 -- src/NMTTools_NEW/NMTTools_PaveFiller_1.cxx | 163 -- src/NMTTools_NEW/NMTTools_PaveFiller_2.cxx | 275 --- src/NMTTools_NEW/NMTTools_PaveFiller_3.cxx | 155 -- src/NMTTools_NEW/NMTTools_PaveFiller_4.cxx | 1613 ----------------- src/NMTTools_NEW/NMTTools_PaveFiller_5.cxx | 662 ------- src/NMTTools_NEW/NMTTools_PaveFiller_6.cxx | 1605 ---------------- src/NMTTools_NEW/NMTTools_PaveFiller_7.cxx | 817 --------- src/NMTTools_NEW/NMTTools_PaveFiller_8.cxx | 830 --------- src/NMTTools_NEW/NMTTools_PaveFiller_9.cxx | 127 -- src/NMTTools_NEW/NMTTools_Tools.cxx | 614 ------- src/NMTTools_NEW/NMTTools_Tools.hxx | 99 - src/OBJECT/GEOM_AISShape.cxx | 59 +- src/OBJECT/GEOM_AISShape.hxx | 9 +- src/OBJECT/GEOM_AISShape.ixx | 2 +- src/OBJECT/GEOM_AISShape.jxx | 2 +- src/OBJECT/GEOM_AISTrihedron.cxx | 2 +- src/OBJECT/GEOM_AISTrihedron.hxx | 2 +- src/OBJECT/GEOM_AISVector.cxx | 2 +- src/OBJECT/GEOM_AISVector.hxx | 2 +- src/OBJECT/GEOM_Actor.cxx | 55 +- src/OBJECT/GEOM_Actor.h | 6 +- src/OBJECT/GEOM_Constants.h | 5 +- src/OBJECT/GEOM_DeviceActor.cxx | 16 +- src/OBJECT/GEOM_DeviceActor.h | 5 +- src/OBJECT/GEOM_InteractiveObject.cxx | 2 +- src/OBJECT/GEOM_InteractiveObject.hxx | 2 +- src/OBJECT/GEOM_InteractiveObject.ixx | 2 +- src/OBJECT/GEOM_InteractiveObject.jxx | 2 +- src/OBJECT/GEOM_OBJECT_defs.hxx | 2 +- src/OBJECT/GEOM_OCCReader.cxx | 3 +- src/OBJECT/GEOM_OCCReader.h | 2 +- src/OBJECT/GEOM_PainterPolyDataMapper.cxx | 2 +- src/OBJECT/GEOM_PainterPolyDataMapper.h | 2 +- src/OBJECT/GEOM_SmartPtr.h | 2 +- .../GEOM_VTKPropertyMaterial.cxx} | 76 +- .../GEOM_VTKPropertyMaterial.hxx} | 106 +- src/OBJECT/GEOM_VTKTrihedron.cxx | 2 +- src/OBJECT/GEOM_VTKTrihedron.hxx | 2 +- src/OBJECT/Handle_GEOM_AISShape.hxx | 2 +- src/OBJECT/Handle_GEOM_InteractiveObject.hxx | 2 +- src/OBJECT/Makefile.am | 4 +- src/OBJECT/OBJECT.pro | 76 - src/OCC2VTK/GEOM_EdgeSource.cxx | 3 +- src/OCC2VTK/GEOM_EdgeSource.h | 2 +- src/OCC2VTK/GEOM_FaceSource.cxx | 2 +- src/OCC2VTK/GEOM_FaceSource.h | 2 +- src/OCC2VTK/GEOM_ShadingFace.cxx | 2 +- src/OCC2VTK/GEOM_ShadingFace.h | 2 +- src/OCC2VTK/GEOM_VertexSource.cxx | 2 +- src/OCC2VTK/GEOM_VertexSource.h | 2 +- src/OCC2VTK/GEOM_WireframeFace.cxx | 2 +- src/OCC2VTK/GEOM_WireframeFace.h | 2 +- src/OCC2VTK/Makefile.am | 2 +- src/OCC2VTK/OCC2VTK.h | 2 +- src/OCC2VTK/OCC2VTK_Tools.cxx | 2 +- src/OCC2VTK/OCC2VTK_Tools.h | 2 +- src/OperationGUI/Makefile.am | 2 +- src/OperationGUI/OperationGUI.cxx | 2 +- src/OperationGUI/OperationGUI.h | 2 +- .../OperationGUI_ArchimedeDlg.cxx | 2 +- src/OperationGUI/OperationGUI_ArchimedeDlg.h | 2 +- src/OperationGUI/OperationGUI_ChamferDlg.cxx | 10 +- src/OperationGUI/OperationGUI_ChamferDlg.h | 2 +- src/OperationGUI/OperationGUI_ClippingDlg.cxx | 2 +- src/OperationGUI/OperationGUI_ClippingDlg.h | 2 +- .../OperationGUI_ExtrudedFeatureDlg.cxx | 9 +- .../OperationGUI_ExtrudedFeatureDlg.h | 4 +- .../OperationGUI_Fillet1d2dDlg.cxx | 3 +- src/OperationGUI/OperationGUI_Fillet1d2dDlg.h | 2 +- src/OperationGUI/OperationGUI_FilletDlg.cxx | 2 +- src/OperationGUI/OperationGUI_FilletDlg.h | 2 +- .../OperationGUI_GetShapesOnShapeDlg.cxx | 2 +- .../OperationGUI_GetShapesOnShapeDlg.h | 2 +- .../OperationGUI_GetSharedShapesDlg.cxx | 2 +- .../OperationGUI_GetSharedShapesDlg.h | 2 +- src/OperationGUI/OperationGUI_MaterialDlg.cxx | 2 +- src/OperationGUI/OperationGUI_MaterialDlg.h | 2 +- .../OperationGUI_PartitionDlg.cxx | 3 +- src/OperationGUI/OperationGUI_PartitionDlg.h | 2 +- src/PrimitiveGUI/Makefile.am | 2 +- src/PrimitiveGUI/PrimitiveGUI.cxx | 2 +- src/PrimitiveGUI/PrimitiveGUI.h | 2 +- src/PrimitiveGUI/PrimitiveGUI.pro | 63 - src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx | 2 +- src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h | 2 +- src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx | 2 +- src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h | 2 +- src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx | 2 +- src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h | 2 +- src/PrimitiveGUI/PrimitiveGUI_DiskDlg.cxx | 2 +- src/PrimitiveGUI/PrimitiveGUI_DiskDlg.h | 2 +- src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx | 2 +- src/PrimitiveGUI/PrimitiveGUI_FaceDlg.h | 2 +- src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx | 2 +- src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h | 2 +- src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx | 2 +- src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h | 2 +- src/RepairGUI/Makefile.am | 2 +- src/RepairGUI/RepairGUI.cxx | 2 +- src/RepairGUI/RepairGUI.h | 2 +- .../RepairGUI_ChangeOrientationDlg.cxx | 2 +- .../RepairGUI_ChangeOrientationDlg.h | 2 +- src/RepairGUI/RepairGUI_CloseContourDlg.cxx | 2 +- src/RepairGUI/RepairGUI_CloseContourDlg.h | 2 +- src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx | 2 +- src/RepairGUI/RepairGUI_DivideEdgeDlg.h | 2 +- src/RepairGUI/RepairGUI_FreeBoundDlg.cxx | 2 +- src/RepairGUI/RepairGUI_FreeBoundDlg.h | 2 +- src/RepairGUI/RepairGUI_FreeFacesDlg.cxx | 2 +- src/RepairGUI/RepairGUI_FreeFacesDlg.h | 2 +- src/RepairGUI/RepairGUI_GlueDlg.cxx | 2 +- src/RepairGUI/RepairGUI_GlueDlg.h | 2 +- src/RepairGUI/RepairGUI_LimitToleranceDlg.cxx | 2 +- src/RepairGUI/RepairGUI_LimitToleranceDlg.h | 2 +- .../RepairGUI_RemoveExtraEdgesDlg.cxx | 2 +- src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h | 2 +- src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx | 2 +- src/RepairGUI/RepairGUI_RemoveHolesDlg.h | 2 +- src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx | 2 +- src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h | 2 +- src/RepairGUI/RepairGUI_SewingDlg.cxx | 2 +- src/RepairGUI/RepairGUI_SewingDlg.h | 2 +- src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx | 16 +- src/RepairGUI/RepairGUI_ShapeProcessDlg.h | 2 +- src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx | 2 +- src/RepairGUI/RepairGUI_SuppressFacesDlg.h | 2 +- src/SKETCHER/Makefile.am | 2 +- src/SKETCHER/SKETCHER.pro | 56 - src/SKETCHER/Sketcher_Profile.cxx | 3 +- src/SKETCHER/Sketcher_Profile.hxx | 2 +- src/STEPExport/Makefile.am | 2 +- src/STEPExport/STEPExport.cxx | 2 +- src/STEPExport/STEPExport.pro | 47 - src/STEPImport/Makefile.am | 3 +- src/STEPImport/STEPImport.cxx | 3 +- src/STEPImport/STEPImport.pro | 47 - src/STLExport/Makefile.am | 2 +- src/STLExport/STLExport.cxx | 2 +- src/STLExport/STLExport.pro | 47 - src/ShHealOper/Makefile.am | 2 +- src/ShHealOper/ShHealOper.pro | 79 - .../ShHealOper_ChangeOrientation.cxx | 3 +- .../ShHealOper_ChangeOrientation.hxx | 2 +- src/ShHealOper/ShHealOper_CloseContour.cxx | 2 +- src/ShHealOper/ShHealOper_CloseContour.hxx | 2 +- src/ShHealOper/ShHealOper_EdgeDivide.cxx | 2 +- src/ShHealOper/ShHealOper_EdgeDivide.hxx | 2 +- src/ShHealOper/ShHealOper_FillHoles.cxx | 3 +- src/ShHealOper/ShHealOper_FillHoles.hxx | 2 +- src/ShHealOper/ShHealOper_RemoveFace.cxx | 2 +- src/ShHealOper/ShHealOper_RemoveFace.hxx | 2 +- .../ShHealOper_RemoveInternalWires.cxx | 2 +- .../ShHealOper_RemoveInternalWires.hxx | 2 +- src/ShHealOper/ShHealOper_Sewing.cxx | 2 +- src/ShHealOper/ShHealOper_Sewing.hxx | 2 +- src/ShHealOper/ShHealOper_ShapeProcess.cxx | 2 +- src/ShHealOper/ShHealOper_ShapeProcess.hxx | 2 +- src/ShHealOper/ShHealOper_SpiltCurve2d.hxx | 2 +- src/ShHealOper/ShHealOper_SplitCurve2d.cxx | 2 +- src/ShHealOper/ShHealOper_SplitCurve2d.hxx | 2 +- src/ShHealOper/ShHealOper_SplitCurve3d.cxx | 2 +- src/ShHealOper/ShHealOper_SplitCurve3d.hxx | 2 +- src/ShHealOper/ShHealOper_Tool.cxx | 2 +- src/ShHealOper/ShHealOper_Tool.hxx | 2 +- src/ShapeRecognition/Makefile.am | 2 +- .../ShapeRec_FeatureDetector.cxx | 5 +- .../ShapeRec_FeatureDetector.hxx | 3 +- src/TransformationGUI/Makefile.am | 2 +- src/TransformationGUI/TransformationGUI.cxx | 2 +- src/TransformationGUI/TransformationGUI.h | 2 +- src/TransformationGUI/TransformationGUI.pro | 66 - .../TransformationGUI_MirrorDlg.cxx | 2 +- .../TransformationGUI_MirrorDlg.h | 2 +- .../TransformationGUI_MultiRotationDlg.cxx | 2 +- .../TransformationGUI_MultiRotationDlg.h | 2 +- .../TransformationGUI_MultiTranslationDlg.cxx | 2 +- .../TransformationGUI_MultiTranslationDlg.h | 2 +- .../TransformationGUI_OffsetDlg.cxx | 2 +- .../TransformationGUI_OffsetDlg.h | 2 +- .../TransformationGUI_PositionDlg.cxx | 2 +- .../TransformationGUI_PositionDlg.h | 2 +- .../TransformationGUI_ProjectionDlg.cxx | 13 +- .../TransformationGUI_ProjectionDlg.h | 2 +- .../TransformationGUI_RotationDlg.cxx | 3 +- .../TransformationGUI_RotationDlg.h | 2 +- .../TransformationGUI_ScaleDlg.cxx | 2 +- .../TransformationGUI_ScaleDlg.h | 2 +- .../TransformationGUI_TranslationDlg.cxx | 2 +- .../TransformationGUI_TranslationDlg.h | 2 +- src/VTKExport/Makefile.am | 2 +- src/VTKExport/VTKExport.cxx | 2 +- src/VTKExport/VTKExport.pro | 47 - src/src.pro | 61 - 1799 files changed, 13439 insertions(+), 102124 deletions(-) delete mode 100755 doc/salome/gui/GEOM/images/bring_example.png create mode 100644 doc/salome/gui/GEOM/images/contour_detect_snapshot.png create mode 100644 doc/salome/gui/GEOM/images/contour_detection_example2.png create mode 100644 doc/salome/gui/GEOM/images/feature_detect.png create mode 100644 doc/salome/gui/GEOM/images/feature_detection_dlg.png create mode 100644 doc/salome/gui/GEOM/images/feature_detection_dlg2.png create mode 100644 doc/salome/gui/GEOM/images/feature_detection_dlg3.png create mode 100644 doc/salome/gui/GEOM/images/front1.png create mode 100644 doc/salome/gui/GEOM/images/front2.png create mode 100644 doc/salome/gui/GEOM/images/import_picture.png create mode 100644 doc/salome/gui/GEOM/images/material.png delete mode 100644 doc/salome/gui/GEOM/images/material_back.png delete mode 100644 doc/salome/gui/GEOM/images/material_front.png create mode 100755 doc/salome/gui/GEOM/images/occ_view_camera_dump.png create mode 100644 doc/salome/gui/GEOM/images/picture_import_dlg.png create mode 100755 doc/salome/gui/GEOM/images/pref15.png create mode 100644 doc/salome/gui/GEOM/images/rectangle_icon.png create mode 100644 doc/salome/gui/GEOM/images/sketcher_dlg2.png create mode 100644 doc/salome/gui/GEOM/input/angle.doc create mode 100644 doc/salome/gui/GEOM/input/basic_prop.doc create mode 100644 doc/salome/gui/GEOM/input/boudaries.doc create mode 100644 doc/salome/gui/GEOM/input/bounding_box.doc create mode 100644 doc/salome/gui/GEOM/input/center_mass.doc create mode 100644 doc/salome/gui/GEOM/input/check_compound_of_blocks.doc create mode 100644 doc/salome/gui/GEOM/input/check_self_intersections.doc create mode 100644 doc/salome/gui/GEOM/input/check_shape.doc create mode 100644 doc/salome/gui/GEOM/input/creating_topological_obj.doc create mode 100644 doc/salome/gui/GEOM/input/features.doc create mode 100644 doc/salome/gui/GEOM/input/free_faces.doc create mode 100644 doc/salome/gui/GEOM/input/geometry_preferences.doc create mode 100644 doc/salome/gui/GEOM/input/importing_picture.doc create mode 100644 doc/salome/gui/GEOM/input/inertia.doc create mode 100644 doc/salome/gui/GEOM/input/min_distance.doc create mode 100644 doc/salome/gui/GEOM/input/normal.doc create mode 100644 doc/salome/gui/GEOM/input/pictures.doc create mode 100644 doc/salome/gui/GEOM/input/point_coordinates.doc create mode 100644 doc/salome/gui/GEOM/input/shape_recognition.doc create mode 100644 doc/salome/gui/GEOM/input/tolerance.doc create mode 100644 doc/salome/gui/GEOM/input/tui_angle.doc create mode 100644 doc/salome/gui/GEOM/input/tui_basic_properties.doc create mode 100644 doc/salome/gui/GEOM/input/tui_bounding_box.doc create mode 100644 doc/salome/gui/GEOM/input/tui_center_of_mass.doc create mode 100644 doc/salome/gui/GEOM/input/tui_check_compound_of_blocks.doc create mode 100644 doc/salome/gui/GEOM/input/tui_check_self_intersections.doc create mode 100644 doc/salome/gui/GEOM/input/tui_check_shape.doc create mode 100644 doc/salome/gui/GEOM/input/tui_free_boundaries.doc create mode 100644 doc/salome/gui/GEOM/input/tui_free_faces.doc create mode 100644 doc/salome/gui/GEOM/input/tui_inertia.doc create mode 100644 doc/salome/gui/GEOM/input/tui_min_distance.doc create mode 100644 doc/salome/gui/GEOM/input/tui_normal_face.doc create mode 100644 doc/salome/gui/GEOM/input/tui_point_coordinates.doc create mode 100644 doc/salome/gui/GEOM/input/tui_test_measures.doc create mode 100644 doc/salome/gui/GEOM/input/tui_tolerance.doc create mode 100644 doc/salome/gui/GEOM/input/tui_topological_geom_objs.doc create mode 100644 doc/salome/gui/GEOM/input/tui_whatis.doc create mode 100644 doc/salome/gui/GEOM/input/whatis.doc create mode 100644 resources/rectangle.png create mode 100644 resources/shading_with_edges.png create mode 100644 resources/wireframe.png delete mode 100644 src/ARCHIMEDE/ARCHIMEDE.pro delete mode 100644 src/BREPExport/BREPExport.pro delete mode 100644 src/BREPImport/BREPImport.pro delete mode 100644 src/BasicGUI/BasicGUI.pro delete mode 100644 src/BooleanGUI/BooleanGUI.pro delete mode 100644 src/BuildGUI/BuildGUI.pro delete mode 100644 src/DisplayGUI/DisplayGUI.pro delete mode 100644 src/DlgRef/DlgRef.pro delete mode 100644 src/EntityGUI/EntityGUI.pro delete mode 100644 src/GEOM/GEOM.pro rename src/{GEOMAlgo_NEW => GEOMAlgo}/FILES (100%) delete mode 100644 src/GEOMAlgo/GEOMAlgo.pro delete mode 100755 src/GEOMAlgo/GEOMAlgo_Algo.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_Algo.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Algo.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_Builder.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_Builder.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Builder.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Clsf.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_Clsf.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Clsf.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ClsfBox.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ClsfBox.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ClsfBox.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_ClsfSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ClsfSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ClsfSolid.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ClsfSurf.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ClsfSurf.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ClsfSurf.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_CoupleOfShapes.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfOrientedShapeShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeMapOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapePnt_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfOrientedShapeShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfOrientedShapeShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeMapOfShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeMapOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapePnt.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapePnt_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfOrientedShapeShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyInteger_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfPassKeyShapeShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfShapeMapOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfShapePnt_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn1.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_GlueAnalyser.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_GlueAnalyser.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_Gluer.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_Gluer.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Gluer.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_HAlgo.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_HAlgo.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_HAlgo.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfIntegerShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeBox_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeShapeInfo_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeState_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListIteratorOfListOfPnt_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfCoupleOfShapes_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt.hxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListNodeOfListOfPnt_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListOfCoupleOfShapes_0.cxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ListOfPnt_0.cxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_PassKey.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKey.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKey.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyMapHasher.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_PassKeyShape.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyShape.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyShape.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeAlgo.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeAlgo.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeAlgo.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeInfo.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeInfo.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeInfo.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShapeSolid.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShellSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShellSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_ShellSolid.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SolidSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_SolidSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SolidSolid.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_Splitter.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_Splitter.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Splitter.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_StateCollector.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_StateCollector.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_StateCollector.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SurfaceTools.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_SurfaceTools.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_SurfaceTools.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_Tools3D.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools3D.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_Tools3D.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_VertexSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_VertexSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_VertexSolid.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WESScaler.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_WESScaler.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WESScaler.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSolid.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSolid.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSolid.jxx delete mode 100755 src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx delete mode 100644 src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_Clsf.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_ClsfBox.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_ClsfSolid.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_ClsfSurf.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfOrientedShapeShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyInteger.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeMapOfShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapePnt.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_HAlgo.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyShapeListOfShape.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeState.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfCoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo/Handle_GEOMAlgo_ListNodeOfListOfPnt.hxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix.cdl delete mode 100644 src/GEOMAlgo_NEW/BlockFix.cxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix.hxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix.ixx delete mode 100644 src/GEOMAlgo_NEW/BlockFix.jxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.cdl delete mode 100644 src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.cxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.hxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.ixx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.jxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_BlockFixAPI.lxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_CheckTool.cdl delete mode 100644 src/GEOMAlgo_NEW/BlockFix_CheckTool.cxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_CheckTool.hxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_CheckTool.ixx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_CheckTool.jxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_PeriodicSurfaceModifier.cdl delete mode 100644 src/GEOMAlgo_NEW/BlockFix_PeriodicSurfaceModifier.cxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_PeriodicSurfaceModifier.hxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_PeriodicSurfaceModifier.ixx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_PeriodicSurfaceModifier.jxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_SphereSpaceModifier.cdl delete mode 100644 src/GEOMAlgo_NEW/BlockFix_SphereSpaceModifier.cxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_SphereSpaceModifier.hxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_SphereSpaceModifier.ixx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_SphereSpaceModifier.jxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionEdges.cdl delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionEdges.cxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionEdges.hxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionEdges.ixx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionEdges.jxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionFaces.cdl delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionFaces.cxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionFaces.hxx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionFaces.ixx delete mode 100644 src/GEOMAlgo_NEW/BlockFix_UnionFaces.jxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo.cdl delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Algo.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Algo.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Builder.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Builder.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderArea.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderArea.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderFace.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderFace.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderShape.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderSolid.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderSolid.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderTools.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_BuilderTools.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Builder_0.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Builder_1.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Builder_2.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Builder_3.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Builder_4.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Clsf.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Clsf.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ClsfBox.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ClsfBox.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ClsfSolid.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ClsfSolid.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ClsfSurf.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ClsfSurf.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_CoupleOfShapes.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_CoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapIteratorOfDataMapOfOrientedShapeShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapIteratorOfDataMapOfShapeMapOfShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapIteratorOfDataMapOfShapePnt.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapOfOrientedShapeShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapOfPassKeyInteger.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapOfPassKeyShapeShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapOfRealListOfShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapOfShapeMapOfShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapOfShapePnt.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapOfShapeReal.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_DataMapOfShapeShapeSet.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn1.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn1.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn2.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOn2.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOnQuad.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_FinderShapeOnQuad.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace_1.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace_2.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GetInPlace_3.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GlueAnalyser.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GlueAnalyser.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GlueDetector.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GlueDetector.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Gluer.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Gluer.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Gluer2.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Gluer2.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Gluer2_1.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Gluer2_2.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Gluer2_3.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GluerAlgo.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_GluerAlgo.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_HAlgo.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_HAlgo.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_IndexedDataMapOfIntegerShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_IndexedDataMapOfShapeBox.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_IndexedDataMapOfShapeState.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_KindOfClosed.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_KindOfShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ListIteratorOfListOfPnt.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ListOfCoupleOfShapes.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ListOfPnt.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_PWireEdgeSet.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_PassKey.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_PassKey.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_PassKeyMapHasher.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_PassKeyMapHasher.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_PassKeyShape.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_PassKeyShape.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_PassKeyShapeMapHasher.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_PassKeyShapeMapHasher.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeAlgo.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeAlgo.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeInfo.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeInfo.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeInfoFiller.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeInfoFiller.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeInfoFiller_1.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeSet.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeSet.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeSolid.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShapeSolid.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShellSolid.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_ShellSolid.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_SolidSolid.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_SolidSolid.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Splitter.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Splitter.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_State.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_StateCollector.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_StateCollector.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_SurfaceTools.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_SurfaceTools.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Tools.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Tools.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Tools3D.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Tools3D.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_Tools_1.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_VertexSolid.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_VertexSolid.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WESCorrector.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WESCorrector.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WESScaler.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WESScaler.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WireEdgeSet.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WireEdgeSet.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WireSolid.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WireSolid.hxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WireSplitter.cxx delete mode 100644 src/GEOMAlgo_NEW/GEOMAlgo_WireSplitter.hxx delete mode 100644 src/GEOMAlgo_NEW/Handle_BlockFix_BlockFixAPI.hxx delete mode 100644 src/GEOMAlgo_NEW/Handle_BlockFix_PeriodicSurfaceModifier.hxx delete mode 100644 src/GEOMAlgo_NEW/Handle_BlockFix_SphereSpaceModifier.hxx delete mode 100644 src/GEOMAlgo_NEW/Makefile.am delete mode 100644 src/GEOMBase/GEOMBase.pro delete mode 100644 src/GEOMClient/GEOMClient.pro delete mode 100644 src/GEOMFiltersSelection/GEOMFiltersSelection.pro delete mode 100644 src/GEOMGUI/GEOMGUI.pro delete mode 100755 src/GEOMImpl/BRepBuilderAPI_GTransform_21423.cxx delete mode 100644 src/GEOMImpl/BRepBuilderAPI_GTransform_21423.hxx delete mode 100755 src/GEOMImpl/BRepBuilderAPI_ModifyShape_21423.cxx delete mode 100644 src/GEOMImpl/BRepBuilderAPI_ModifyShape_21423.hxx delete mode 100755 src/GEOMImpl/BRepBuilderAPI_NurbsConvert_21423.cxx delete mode 100644 src/GEOMImpl/BRepBuilderAPI_NurbsConvert_21423.hxx delete mode 100644 src/GEOMImpl/BRepTools_Modifier_21423.cxx delete mode 100644 src/GEOMImpl/BRepTools_Modifier_21423.hxx delete mode 100644 src/GEOMImpl/BRepTools_NurbsConvertModification_21423.cxx delete mode 100644 src/GEOMImpl/BRepTools_NurbsConvertModification_21423.hxx delete mode 100644 src/GEOMImpl/GEOMImpl.pro delete mode 100644 src/GEOMImpl/Handle_BRepTools_NurbsConvertModification_21423.hxx delete mode 100644 src/GEOMToolsGUI/GEOMToolsGUI.pro delete mode 100644 src/GEOM_I/GEOM_I.pro delete mode 100644 src/GenerationGUI/GenerationGUI.pro delete mode 100644 src/IGESExport/IGESExport.pro delete mode 100644 src/IGESImport/IGESImport.pro rename src/{NMTDS_NEW => NMTDS}/FILES (100%) delete mode 100644 src/NMTDS/Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_ListNodeOfListOfPair.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_ListNodeOfListOfPairBoolean.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPairBoolean.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx delete mode 100644 src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx delete mode 100644 src/NMTDS/NMTDS.pro delete mode 100644 src/NMTDS/NMTDS_BndSphere.cdl delete mode 100644 src/NMTDS/NMTDS_BndSphere.ixx delete mode 100644 src/NMTDS/NMTDS_BndSphere.jxx rename src/{NMTDS_NEW => NMTDS}/NMTDS_CArray1OfIndexRange.cxx (93%) delete mode 100644 src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx delete mode 100644 src/NMTDS/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_0.cxx delete mode 100644 src/NMTDS/NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx delete mode 100644 src/NMTDS/NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_0.cxx delete mode 100644 src/NMTDS/NMTDS_DataMapOfIntegerMapOfInteger_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexRange.cdl delete mode 100644 src/NMTDS/NMTDS_IndexRange.ixx delete mode 100644 src/NMTDS/NMTDS_IndexRange.jxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapOfShapeBndSphere_0.cxx delete mode 100644 src/NMTDS/NMTDS_IndexedDataMapOfShapeBox_0.cxx delete mode 100644 src/NMTDS/NMTDS_InterfPool.cdl delete mode 100644 src/NMTDS/NMTDS_InterfPool.ixx delete mode 100644 src/NMTDS/NMTDS_InterfPool.jxx delete mode 100755 src/NMTDS/NMTDS_Iterator.cdl delete mode 100644 src/NMTDS/NMTDS_Iterator.ixx delete mode 100644 src/NMTDS/NMTDS_Iterator.jxx delete mode 100644 src/NMTDS/NMTDS_IteratorCheckerSI.cdl delete mode 100644 src/NMTDS/NMTDS_IteratorCheckerSI.ixx delete mode 100644 src/NMTDS/NMTDS_IteratorCheckerSI.jxx delete mode 100644 src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListIteratorOfListOfPairBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListIteratorOfListOfPair_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfPair.hxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfPairBoolean.hxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfPairBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfPair_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListOfPairBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListOfPair_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_ListOfPassKey_0.cxx delete mode 100644 src/NMTDS/NMTDS_MapIteratorOfMapOfPairBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx delete mode 100644 src/NMTDS/NMTDS_MapOfPairBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_MapOfPassKey_0.cxx delete mode 100644 src/NMTDS/NMTDS_Pair.cdl delete mode 100644 src/NMTDS/NMTDS_Pair.ixx delete mode 100644 src/NMTDS/NMTDS_Pair.jxx delete mode 100644 src/NMTDS/NMTDS_PairBoolean.cdl delete mode 100644 src/NMTDS/NMTDS_PairBoolean.ixx delete mode 100644 src/NMTDS/NMTDS_PairBoolean.jxx delete mode 100644 src/NMTDS/NMTDS_PairMapHasher.cdl delete mode 100644 src/NMTDS/NMTDS_PairMapHasher.ixx delete mode 100644 src/NMTDS/NMTDS_PairMapHasher.jxx delete mode 100755 src/NMTDS/NMTDS_PassKey.cdl delete mode 100644 src/NMTDS/NMTDS_PassKey.ixx delete mode 100644 src/NMTDS/NMTDS_PassKey.jxx delete mode 100755 src/NMTDS/NMTDS_PassKeyBoolean.cdl delete mode 100644 src/NMTDS/NMTDS_PassKeyBoolean.ixx delete mode 100644 src/NMTDS/NMTDS_PassKeyBoolean.jxx delete mode 100755 src/NMTDS/NMTDS_PassKeyMapHasher.cdl delete mode 100644 src/NMTDS/NMTDS_PassKeyMapHasher.ixx delete mode 100644 src/NMTDS/NMTDS_PassKeyMapHasher.jxx delete mode 100644 src/NMTDS/NMTDS_PassKeyShape.cdl delete mode 100644 src/NMTDS/NMTDS_PassKeyShape.ixx delete mode 100644 src/NMTDS/NMTDS_PassKeyShape.jxx delete mode 100644 src/NMTDS/NMTDS_PassKeyShapeMapHasher.cdl delete mode 100644 src/NMTDS/NMTDS_PassKeyShapeMapHasher.ixx delete mode 100644 src/NMTDS/NMTDS_PassKeyShapeMapHasher.jxx delete mode 100644 src/NMTDS/NMTDS_ShapesDataStructure.cdl delete mode 100644 src/NMTDS/NMTDS_ShapesDataStructure.ixx delete mode 100644 src/NMTDS/NMTDS_ShapesDataStructure.jxx delete mode 100644 src/NMTDS/NMTDS_StdMapNodeOfMapOfPairBoolean.hxx delete mode 100644 src/NMTDS/NMTDS_StdMapNodeOfMapOfPairBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx delete mode 100644 src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx delete mode 100644 src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx delete mode 100644 src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx delete mode 100644 src/NMTDS/NMTDS_Tools.cdl delete mode 100644 src/NMTDS/NMTDS_Tools.ixx delete mode 100644 src/NMTDS/NMTDS_Tools.jxx delete mode 100644 src/NMTDS_NEW/Makefile.am delete mode 100644 src/NMTDS_NEW/NMTDS.cdl delete mode 100644 src/NMTDS_NEW/NMTDS_BndSphere.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_BndSphere.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_BndSphere.lxx delete mode 100644 src/NMTDS_NEW/NMTDS_BndSphereTree.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_BndSphereTree.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_BoxBndTree.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_BoxBndTree.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_CArray1OfIndexRange.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_DataMapOfIntegerMapOfInteger.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_IndexRange.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_IndexRange.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_IndexedDataMapOfIntegerShape.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_IndexedDataMapOfShapeBndSphere.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_IndexedDataMapOfShapeBox.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_InterfPool.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_InterfPool.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_InterfType.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_Iterator.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_Iterator.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_IteratorCheckerSI.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_IteratorCheckerSI.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPair.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPairBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPassKey.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListOfPair.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListOfPairBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListOfPassKey.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ListOfPassKeyBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPairBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPassKey.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_MapOfPairBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_MapOfPassKey.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_MapOfPassKeyBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PInterfPool.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PIterator.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PShapesDataStructure.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_Pair.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_Pair.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PairBoolean.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_PairBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PairMapHasher.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_PairMapHasher.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKey.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKey.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKeyBoolean.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKeyBoolean.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKeyMapHasher.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKeyMapHasher.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKeyShape.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKeyShape.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_ShapesDataStructure.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_ShapesDataStructure.hxx delete mode 100644 src/NMTDS_NEW/NMTDS_Tools.cxx delete mode 100644 src/NMTDS_NEW/NMTDS_Tools.hxx rename src/{NMTTools_NEW => NMTTools}/FILES (100%) delete mode 100644 src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx delete mode 100644 src/NMTTools/Handle_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx delete mode 100644 src/NMTTools/NMTTools.pro delete mode 100644 src/NMTTools/NMTTools_CheckerSI.cdl delete mode 100644 src/NMTTools/NMTTools_CheckerSI.ixx delete mode 100644 src/NMTTools/NMTTools_CheckerSI.jxx delete mode 100644 src/NMTTools/NMTTools_CommonBlock.cdl delete mode 100644 src/NMTTools/NMTTools_CommonBlock.ixx delete mode 100644 src/NMTTools/NMTTools_CommonBlock.jxx delete mode 100644 src/NMTTools/NMTTools_CommonBlockAPI.cdl delete mode 100644 src/NMTTools/NMTTools_CommonBlockAPI.ixx delete mode 100644 src/NMTTools/NMTTools_CommonBlockAPI.jxx rename src/{NMTTools_NEW => NMTTools}/NMTTools_CommonBlockPool.cxx (91%) delete mode 100644 src/NMTTools/NMTTools_CommonBlockPool_0.cxx delete mode 100644 src/NMTTools/NMTTools_CoupleOfShape.cdl delete mode 100644 src/NMTTools/NMTTools_CoupleOfShape.ixx delete mode 100644 src/NMTTools/NMTTools_CoupleOfShape.jxx delete mode 100644 src/NMTTools/NMTTools_DEProcessor.cdl delete mode 100644 src/NMTTools/NMTTools_DEProcessor.ixx delete mode 100644 src/NMTTools/NMTTools_DEProcessor.jxx delete mode 100644 src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_0.cxx delete mode 100644 src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx delete mode 100644 src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_0.cxx delete mode 100644 src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx delete mode 100644 src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_DataMapOfIntegerFaceInfo_0.cxx delete mode 100644 src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_FaceInfo.cdl delete mode 100644 src/NMTTools/NMTTools_FaceInfo.ixx delete mode 100644 src/NMTTools/NMTTools_FaceInfo.jxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx delete mode 100644 src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx delete mode 100644 src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx delete mode 100644 src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_PaveFiller.cdl delete mode 100644 src/NMTTools/NMTTools_PaveFiller.ixx delete mode 100644 src/NMTTools/NMTTools_PaveFiller.jxx delete mode 100644 src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock.hxx delete mode 100644 src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx delete mode 100644 src/NMTTools/NMTTools_Tools.cdl delete mode 100644 src/NMTTools/NMTTools_Tools.ixx delete mode 100644 src/NMTTools/NMTTools_Tools.jxx delete mode 100644 src/NMTTools_NEW/Makefile.am delete mode 100644 src/NMTTools_NEW/NMTTools.cdl delete mode 100644 src/NMTTools_NEW/NMTTools_CheckerSI.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_CheckerSI.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_CheckerSI_1.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_CommonBlock.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_CommonBlock.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_CommonBlockAPI.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_CommonBlockAPI.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_CommonBlockPool.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_CoupleOfShape.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_CoupleOfShape.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_DEProcessor.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_DEProcessor.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_DataMapOfIntegerFaceInfo.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_FaceInfo.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_FaceInfo.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_FaceInfo.lxx delete mode 100644 src/NMTTools_NEW/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_IndexedDataMapOfShapePaveBlock.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_ListIteratorOfListOfCommonBlock.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_ListOfCommonBlock.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_ListOfCoupleOfShape.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_MapIteratorOfMapOfPaveBlock.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_MapOfPaveBlock.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_PPaveFiller.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller.hxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_0.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_1.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_2.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_3.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_4.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_5.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_6.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_7.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_8.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_PaveFiller_9.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_Tools.cxx delete mode 100644 src/NMTTools_NEW/NMTTools_Tools.hxx rename src/{GEOMAlgo_NEW/GEOMAlgo_KindOfBounds.hxx => OBJECT/GEOM_VTKPropertyMaterial.cxx} (75%) mode change 100644 => 100755 rename src/{GEOMAlgo_NEW/GEOMAlgo_KindOfName.hxx => OBJECT/GEOM_VTKPropertyMaterial.hxx} (57%) mode change 100644 => 100755 delete mode 100644 src/OBJECT/OBJECT.pro delete mode 100644 src/PrimitiveGUI/PrimitiveGUI.pro delete mode 100644 src/SKETCHER/SKETCHER.pro delete mode 100644 src/STEPExport/STEPExport.pro delete mode 100644 src/STEPImport/STEPImport.pro delete mode 100644 src/STLExport/STLExport.pro delete mode 100644 src/ShHealOper/ShHealOper.pro delete mode 100644 src/TransformationGUI/TransformationGUI.pro delete mode 100644 src/VTKExport/VTKExport.pro delete mode 100644 src/src.pro diff --git a/GEOM_version.h.in b/GEOM_version.h.in index 4924a56c0..ce1af35af 100644 --- a/GEOM_version.h.in +++ b/GEOM_version.h.in @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/Makefile.am b/Makefile.am index 7be7f126e..863140fa7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/adm_local/Makefile.am b/adm_local/Makefile.am index 2bc4a55b3..6d9ac170c 100644 --- a/adm_local/Makefile.am +++ b/adm_local/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/adm_local/cmake_files/FindGEOM.cmake b/adm_local/cmake_files/FindGEOM.cmake index d7226be7f..6703e076a 100644 --- a/adm_local/cmake_files/FindGEOM.cmake +++ b/adm_local/cmake_files/FindGEOM.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/adm_local/cmake_files/Makefile.am b/adm_local/cmake_files/Makefile.am index 0feb42409..3135a765d 100644 --- a/adm_local/cmake_files/Makefile.am +++ b/adm_local/cmake_files/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/adm_local/unix/Makefile.am b/adm_local/unix/Makefile.am index 8451478b1..0d5ee76b8 100644 --- a/adm_local/unix/Makefile.am +++ b/adm_local/unix/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/adm_local/unix/config_files/Makefile.am b/adm_local/unix/config_files/Makefile.am index b2687da74..7a5c9953e 100644 --- a/adm_local/unix/config_files/Makefile.am +++ b/adm_local/unix/config_files/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/adm_local/unix/config_files/check_GEOM.m4 b/adm_local/unix/config_files/check_GEOM.m4 index b29c1759b..eeb81bb79 100644 --- a/adm_local/unix/config_files/check_GEOM.m4 +++ b/adm_local/unix/config_files/check_GEOM.m4 @@ -1,4 +1,4 @@ -dnl Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +dnl Copyright (C) 2007-2012 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 diff --git a/adm_local/unix/config_files/check_GUI.m4 b/adm_local/unix/config_files/check_GUI.m4 index 5f0453650..de8c71769 100755 --- a/adm_local/unix/config_files/check_GUI.m4 +++ b/adm_local/unix/config_files/check_GUI.m4 @@ -1,4 +1,4 @@ -dnl Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +dnl Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE dnl dnl This library is free software; you can redistribute it and/or dnl modify it under the terms of the GNU Lesser General Public diff --git a/adm_local/unix/config_files/check_OpenCV.m4 b/adm_local/unix/config_files/check_OpenCV.m4 index dd91380e6..b70ddd91e 100644 --- a/adm_local/unix/config_files/check_OpenCV.m4 +++ b/adm_local/unix/config_files/check_OpenCV.m4 @@ -1,4 +1,4 @@ -dnl Copyright (C) 2007-2011 CEA/DEN, EDF R&D +dnl Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE dnl dnl This library is free software; you can redistribute it and/or dnl modify it under the terms of the GNU Lesser General Public @@ -81,7 +81,7 @@ fi if test "x$opencv_ok" == xno ; then AC_MSG_RESULT([for OPENCV: no]) AC_MSG_WARN([OPENCV includes or libraries are not found or are not properly installed]) - AC_MSG_WARN([Cannot build without OPENCV. Use --with-opencv option to define OPENCV installation.]) + AC_MSG_WARN([Use --with-opencv option to define OPENCV installation.]) else OPENCV_INCLUDES=$LOCAL_INCLUDES OPENCV_LIBS=$LOCAL_LIBS diff --git a/adm_local/unix/make_common_starter.am b/adm_local/unix/make_common_starter.am index 77936ec88..4f70a7077 100644 --- a/adm_local/unix/make_common_starter.am +++ b/adm_local/unix/make_common_starter.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/bin/Makefile.am b/bin/Makefile.am index d5745d16c..95a26d150 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/bin/addvars2notebook_GEOM.py b/bin/addvars2notebook_GEOM.py index 96224ce66..76bc4a012 100644 --- a/bin/addvars2notebook_GEOM.py +++ b/bin/addvars2notebook_GEOM.py @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/bin/geom_setenv.py b/bin/geom_setenv.py index 581423673..dfe3ecab1 100644 --- a/bin/geom_setenv.py +++ b/bin/geom_setenv.py @@ -1,6 +1,6 @@ #! /usr/bin/env python # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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 209964f6e..83f78035a 100755 --- a/build_cmake +++ b/build_cmake @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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 495ad5379..0829ab1f1 100644 --- a/build_cmake.bat +++ b/build_cmake.bat @@ -1,4 +1,4 @@ -@REM Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +@REM Copyright (C) 2007-2012 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 diff --git a/build_configure b/build_configure index 7a8f5a923..8d2bef16f 100755 --- a/build_configure +++ b/build_configure @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/clean_configure b/clean_configure index 5d7d8df56..6fc5b4f83 100755 --- a/clean_configure +++ b/clean_configure @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/configure.ac b/configure.ac index a2f85ba86..a5d0afcd9 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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,7 +24,7 @@ # Modified by : Alexander BORODIN (OCN) - autotools usage # Created from configure.in.base # -AC_INIT([Salome2 Project GEOM module], [6.4.0], [webmaster.salome@opencascade.com], [SalomeGEOM]) +AC_INIT([Salome2 Project GEOM module], [6.5.0], [webmaster.salome@opencascade.com], [SalomeGEOM]) AC_CONFIG_AUX_DIR(adm_local/unix/config_files) AC_CANONICAL_HOST AC_CANONICAL_TARGET @@ -318,19 +318,6 @@ echo CHECK_CAS -echo "OCC_VERSION_DEVELOPMENT = ${OCC_VERSION_DEVELOPMENT}" -NMTDS_VAR=NMTDS -NMTTools_VAR=NMTTools -GEOMAlgo_VAR=GEOMAlgo -if test "${OCC_VERSION_DEVELOPMENT}" == "1"; then - NMTDS_VAR=NMTDS_NEW - NMTTools_VAR=NMTTools_NEW - GEOMAlgo_VAR=GEOMAlgo_NEW -fi -AC_SUBST(NMTDS_VAR) -AC_SUBST(NMTTools_VAR) -AC_SUBST(GEOMAlgo_VAR) - echo echo --------------------------------------------- echo Testing html generators @@ -371,24 +358,77 @@ echo Summary echo --------------------------------------------- echo -echo Configure - -if test "${gui_ok}" = "yes"; then - variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok boost_ok occ_ok doxygen_ok graphviz_ok sphinx_ok opencv_ok Kernel_ok gui_ok" -elif test "${SalomeGUI_need}" != "no"; then - variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok vtk_ok hdf5_ok omniORB_ok boost_ok occ_ok doxygen_ok graphviz_ok opencv_ok Kernel_ok gui_ok" +if test "${SalomeGUI_need}" == "no"; then + echo "* Configuration options (without GUI):" else - variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok vtk_ok hdf5_ok omniORB_ok boost_ok occ_ok doxygen_ok graphviz_ok opencv_ok Kernel_ok" + echo "* Configuration options:" fi +echo + +obligatory_vars="cc_ok lex_yacc_ok python_ok swig_ok threads_ok vtk_ok hdf5_ok omniORB_ok boost_ok occ_ok doxygen_ok graphviz_ok sphinx_ok Kernel_ok" +optional_vars="opencv_ok" +gui_vars="OpenGL_ok qt_ok gui_ok" + +### +# mandatory products +### + +echo "--- Mandatory products:" + +missing_obligatory=no +for var in $obligatory_vars +do + eval toto=\$$var + if test x$toto == "x"; then toto="no" ; fi + if test x$toto == "xno"; then missing_obligatory=yes ; fi + printf " %10s : " `echo \$var | sed -e "s,_ok,,"` + eval echo \$$var + #fi +done +if test x$missing_obligatory == "xyes"; then + AC_MSG_ERROR([one or more obligatory product is missing]) +fi + +### +# gui products +### + +if test "${SalomeGUI_need}" == "yes"; then + # SALOME GUI is mandatory + if test "${gui_ok}" != "yes"; then + AC_MSG_ERROR([SALOME GUI is missing]) + fi +fi + +if test "${SalomeGUI_need}" != "no"; then + echo "--- GUI products (optional):" + + for var in $gui_vars + do + eval toto=\$$var + if test x$toto == "x"; then toto="no"; fi + printf " %10s : " `echo \$var | sed -e "s,_ok,,"` + eval echo \$toto + done +fi + +### +# optional products +### + +echo "--- Other products (optional):" -for var in $variables +for var in $optional_vars do - printf " %10s : " `echo \$var | sed -e "s,_ok,,"` - eval echo \$$var + eval toto=\$$var + if test x$toto != "x"; then + printf " %10s : " `echo \$var | sed -e "s,_ok,,"` + eval echo \$$var + fi done echo -echo "Default ORB : $DEFAULT_ORB" +echo "* Default ORB : $DEFAULT_ORB" echo dnl We don t need to say when we re entering directories if we re using @@ -460,7 +500,6 @@ AC_OUTPUT([ \ src/EntityGUI/Makefile \ src/GEOM/Makefile \ src/GEOMAlgo/Makefile \ - src/GEOMAlgo_NEW/Makefile \ src/GEOMBase/Makefile \ src/GEOMClient/Makefile \ src/GEOMFiltersSelection/Makefile \ @@ -480,9 +519,7 @@ AC_OUTPUT([ \ src/IGESImport/Makefile \ src/MeasureGUI/Makefile \ src/NMTDS/Makefile \ - src/NMTDS_NEW/Makefile \ src/NMTTools/Makefile \ - src/NMTTools_NEW/Makefile \ src/OBJECT/Makefile \ src/OCC2VTK/Makefile \ src/OperationGUI/Makefile \ diff --git a/doc/Makefile.am b/doc/Makefile.am index f6dc56cf4..8f3319cec 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/doc/docutils/Makefile.am b/doc/docutils/Makefile.am index 5d077ad62..a1dd57ced 100644 --- a/doc/docutils/Makefile.am +++ b/doc/docutils/Makefile.am @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/doc/salome/Makefile.am b/doc/salome/Makefile.am index 4de92c761..8bf9f392d 100644 --- a/doc/salome/Makefile.am +++ b/doc/salome/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/doc/salome/gui/GEOM/Makefile.am b/doc/salome/gui/GEOM/Makefile.am index c8ac4cc1a..3b96e0abd 100755 --- a/doc/salome/gui/GEOM/Makefile.am +++ b/doc/salome/gui/GEOM/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/doc/salome/gui/GEOM/doxyfile.in b/doc/salome/gui/GEOM/doxyfile.in index ce6b06db1..45859ef60 100755 --- a/doc/salome/gui/GEOM/doxyfile.in +++ b/doc/salome/gui/GEOM/doxyfile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/doc/salome/gui/GEOM/doxyfile_py.in b/doc/salome/gui/GEOM/doxyfile_py.in index 6ae7795b0..c35ee2024 100755 --- a/doc/salome/gui/GEOM/doxyfile_py.in +++ b/doc/salome/gui/GEOM/doxyfile_py.in @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/doc/salome/gui/GEOM/doxyfile_tui.in b/doc/salome/gui/GEOM/doxyfile_tui.in index 033379f57..9617a169d 100755 --- a/doc/salome/gui/GEOM/doxyfile_tui.in +++ b/doc/salome/gui/GEOM/doxyfile_tui.in @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/doc/salome/gui/GEOM/images/bring_example.png b/doc/salome/gui/GEOM/images/bring_example.png deleted file mode 100755 index 62be78dfd25917274486d989487d8b81edd8bd81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53635 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⁢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 R@a3#16(tSDLV2^N{|DBe_M`v+ literal 15243 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 diff --git a/doc/salome/gui/GEOM/images/contour_detect_snapshot.png b/doc/salome/gui/GEOM/images/contour_detect_snapshot.png new file mode 100644 index 0000000000000000000000000000000000000000..1c95bb74f40fa49efa3f721b99de7e649e95a4b3 GIT binary patch literal 2996 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 z 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

i-n+eZ8omI;1YP?e&PP8`?{ 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 `3z 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 m%jgqGU(GAr}O*Ooc;eQR&c z71Ot`ZQIjyqP2s(I#!V@OI3iK1ri|t? z5KYwUx9zEdef(2zum**v3PSch?p$HAoKd>3iV%AEfj~MZ7B4m&ZA>8Z)I?mztdQ87 z8_sv7LE{AVexrpF`Ge%&iWNlV)A-DY6ve#^Kh`SzS$c0j8EnzG{WrJ(g-wMNbn&c% z4b=(!IxXk6fo`zk^+@j|jS2S+5I>!b`MQ?r8vZw4Md}|tFUj!^ty^|MAkP3NIYI3tdQeE`V;L@$Yr00@$C7*fy?%#Du|1274v?lH1Ec5 zV&yiY(>M4U01xrT>sBB=RZ>wN9md?iVNLv4>$*f`L4at(7^k};S!ydBh|&ULv)#(W zMYE=+rjp@S%?kUV7yrZk$~`ypX6RMk!z~ktJ$?{^TDA>e%6D<4u4DpyOA$BKj}?z6H#ax?`}@tk=AzWE zRVxLxDQpd!46Dt!fe^m$={1mB1MoK2+e$rZtkhD`sut~Uf6+C zm4Y}eyWnN|9I}^%pcW5k_DI-E$rWBI`Ch&yO~@H`6`*T)Q@mf$)F(aT*pQsq#fniI z){FK|)ACU?4^FHogup`2;I~1h+q8DP^~p%ZWtY)ppt}%BJwpmy-kR#XJFVdnd-BJ7piX+KS5$?qrimd z%M?Bfm&;$_+6xJ=zhc<3U&&*AE*JpIw)jx2rwkZvz9Orw^4U;kQJ?55>J4~=<;7Us zS{D(`=sFPFz|`=IDu|SYkb&??ln6um6qgYi{`vyH?cD<7Goma&E5^>`k~4iVf>%=` zJPm=jY!b}~A4O4@MSc{s)Us<6Pzbqr;3saIM_pc@iUlg>RgT_WAVppzC*%*(E9y4p@lrf4zIY`8aP>wTF1q`%#Gw)hTsc_^J*R z1KNZdY;o&?u2A>8s`Dy$}4t*#x`>#OZV&zUOGUf3P??cbWUo{)L6@yhMG)pH}u5(rlxifg#uaA03G&MAUyvFV7S8h$_ zq^GFQQrClkEyMyMqV(_Izf{&wBiq^#RZiRb*2X5TSA9{D7FfqF=)Fgg9U^Y-9Df{r|R~Xxn<`%*P2!rumNVU2Qr!P_cF|qQry4`9ndU~BG0Y#BFQ*Z!bNck*9(+} z^}UlygYRUhLjS1ONbvNM*GP1YeI$qkaq`A>xk|G76Y)%j1yAamtCQYn&GOO!78ZkQ zVgFoOt2!>))ffMGi1)i71lIX)5^_j|UaL=bf#^$L>FObFci@<~SbpS-Qo1I|n7 zIL#-Y?IkSs%uhIzEe9;+5GV;NT&t(psg# zvIdC(#_o!tXGv|bJnrh>$DDq5@^Eq0E-|B12mNGK-+*;9@x=EC(6gzeZUb9_v_T50 z0mHX%o*Y@QMhBfFCPev%uTeq@R=bcz>=vuWJ7%z8kGCakaAXE-<_xcQQlOW z6!fs0W~aH5Q22K{@9wPV67Wb|Uo?OBZVd_!xwHQER@fz?(QJC!Eck+fc~kRoC+~%Z zMk*_*v6f;Ei}K{d8CB;h{6&%`5QF2((Kx1*Tc(Ig57O&gIpQ`TuZx*LtNlvL@K3+Rf##kq<4Byz;0P@+n z-sv_5f~LyANE8yS?67mf!U!Str{U~!KAa8jzY@H}GZWpv49tAqE4NtGX!@6o7 zRZrkOv7t$CncE6CVfDB^!~pD@lD#Y}y5=ktfiqj`7n}$iGW+-7l*2z{v>ov}m^&|d zxUTQrjLP{!lWsY+9%0LhvZ9_U@MnCq!4s4!u+DSq)e3I{EC=!FmaJZ4V?3!IM{D>7xoCjq0WK7)#GjE()WR~%dQ@D;AW$E7eUQVBM2QcNP1 zC*>$)gK&VLAo5iK;^g-nk2p)a+hl7sc&K&K==u5a0OKo8o?Iy^S?l>&{Ow<;i^XoV#6ZSP=@>^L+QhR4Ys+3;*jT3`eftyu0fm9G&yUGY@VUn(uoK|$N@WsQ!1AUmKq+tRTgGYB2 zdRA{#JSQXW*24tvxw^U01F7J>7{=El(xzZ$p(P#?UepM_$1A@X7|P9M%D54uUT6epqF~pxRQ%#76r@o1}E_?ipJ`M8qgF z9pg7pk^g~#P;kt(S#CjLVAqDwM^*A|S40s*UYF-TO>3U>vr{Zh?A!8X<;#*@$Hs-j z%PWI2b$3`k-9HWDQD^}%j>+i z@tj%g1bV8eEYsutY6OY9QjX^$zMHeb^_Bn}^-UEba^v>({k%Ut{dT#0F= znpsV%lk$zCAWRg*;*H_bJ!d4*#bqQ6BgR%VWzR3c%<4tz-*o}{L`73TyS9K}>3Kc; zzEVyp^z%OsF2fzw-lnUM6dfu{!C;GK(Qv9?a&4TMN^R0B*VfgZ_NMPIAaOg8XAe<) znA01j=IC>%64~ezaZy`rxO|+MX96k0-*Lv5ziH3W5v5HG3TWJZdELT3<=JZ&Xdfp< z$Jn7zEl;c!UF(}&&+ot1`xzGq^E~I=vG=tr{G;}`&KJ^#EE2|>Hco*v z^K6zanl9#Ns}$GgtG>S8aHJE#A6)Wr|C#^R*HNNh+07HKc5>l#E}xzPzrM%_a8~Cq z2g!mJo(o@`|^Paf=#{&3}LL|ilwh;LLPaJ zWGJSlmie^!V;ub(5LM6_E1;dwGc;tENoopJE(GcJiQ|qEv2jiubOS!LJPCKVsZ?9h z4u@ngwa-oo%u_tQRkk8&L*U?Mis#lz3K3AqsF7t^D-GTabe8arS2$nQ)C5S5?>gTT z2$8B#z-S;Uf&|IX*vTvClFQKRFEY+ULUU<<6XoS4`!KYm=ER34rig-m4hMJ5mneM4y{-|@1KMP zLv}4G9S)Ju|6Np&Hw#<&{(Oh4xN9o2Do`j-h}m)4%#4M@DeLc~fG*&tYsWRql+Z0t zA;5x)!hSlZyn3< zQ2gM%96={~UIVFBt9P_cAzTVoY*KXIarAccIdrm?n_ikiSf*LZUZX^DqHV>N#yrCU z=92`LaMc3ehg*PrEh>0bHZ*SAwoswH7r8ZJGV10*BlfX>ly_EOYuIIFO#&j~e?oz* z5fZFO7ND+`&|_a`lZHmJ+3I(tfW;^8hqJTgB5>D|%#RRsl$Hmr8(W6Za+PZS7c-i=W6OxnKBK?))RBozgJ=rB)^-#|+eKKQ z$?q0y(qW^4fY&$uY>XKOcc^P(296TF#pccQ36=P6FJZrIys|CAz{Yt#T#sZEO2XCm zFHub21H)i-!h2f!1fIR2GG}{H{pDxnb&9gg_bcJf%`+OpTj{U9)b8lK4|y+{2LV@s zUxXN+c8~n#Gj~-+;82^YO+Sn8v8IrFo6HzO?rdI08B>_6s(=x-2K5pZ!MN;rQC5RS zgpaSaMPb39hBi!KV+aW$B^^2QS*lf+d@H07N56ZOqhkDXv9vbLaH1N1sw&i}7Z0YV zjzVlCOjevVTB4<4+`t@eSHksLn~o zoUe~)*LG=sqQ#CQ(x6vViH!K3zH+2l+C>nFP8?>QL_ z*A^0&GQi_NaJ#3x3aypm2P^`tGsXgUYBbih5 zWVA?l^8IO?21}RPih}Bbm?37PA$K_#QA3qzdA)0cYvc@H?4E0X=Z7d`@cEd!jH-zw zoC-tk3%VGUUqG-fjwhSb;{o~+@Lwk$a8Dz^$x_y`i~G&Z-QACT=$VLhZ!WlSv&G9f!G}Pft%OPe6aZNs0T! zMG;VgFvM5SC@NX+x@|wp`cF8;BbiB=B~%UHz3VzCzfPZ_fAIQiF(0nHWJT1C#Hjy3(A-HRMgWn6jv>RKG*BcdTYDNCfn-9}&I9nK5ZCJu|y#@MyRb z(-x7ODY@evG_&9}`QMk89KN+2mTN}n%y}*DyoTsMW5OUTW|>a(B79oB`BLP3<=x`& zK>zh>EYj^U#ZDZba>x`~T&_U49c=mmU-lP#Eot@mF=We~jkMOS&fee26x#kHa>*-g z>2vg&dh8l!_y_M6BT|3&K8cR2;rWA*!yc+yf!=iNEu|!LW4{}Q*f;OxOfR~i!lI(l zoxcSws-^VbYrcZvNFZOEbjJ;zQ4qfaR<~KC3|Wk4^$)=hD~|R4j^bF$Y=d!mq`iTz zpKC_RoTpzM54b+=Ckgk~@4>6;w^$SeiVAK1E=~wq8XbfhX0s_O?DcBCQ0JZ38d5`* zfG|@WACr2Wo?B;HHrmH=c|LAv7jU=G>y{@6V(A5j*Qj7zza`vtY#KFusb>neQFrby zb=@1<)NZ>4oix~#s!{~%4hY0_GQ(fw)2GvGl>n~Y;0B@cmffXK-$w5XCx@P6Tq7&< z0E^&McSlD@7Z>UHorQ}{e9mz`nVfUbTI3MZmNW&3tvK@Ow_I7zJ-l1G!cktYvK$fb z0baS_4ifVvuE?|gx+7GTQdAO$?4bl5|6jOMbvApGE) z0xJ_ns-woy(UJRHr~X7jH2QRAU;VMd_s@>gmGtsmH05BI1$ODV%!gO%DYE}*AP3Hr z6hNrQ^w8s@U)xd`@B0ZWT9mm>z(4z8Nh=V`N+?=7vj@TeF$P+yJJ`FPQ#59f_@x=# zBrUCN&0O=LvI=mC29rAj?Xd0obnmJ+e`Qm@K-06ocjOk@M5wiH19RK(yAS__QTexaZ{VNWeQ|3OSqOoCq%m_z(e1tlpXd5HBhY>|Jt;{ zVAYoKXNHx*b!XF;St%D?{Ck4oj`~(Q!TpalsUusSnPR@TL_L+x_5u`odq~9HP8CZ> zxiE|_$UZ67%UJs}nDC)akI~X067%uWYgqf)_X65*${gJQl7C)V3YbDXU?q7ev3n6m zAKtJQh+%K>Iw-u~BL|o8X)ZE6?)^YH#OWYO2{pQ=cC4|ycwEnN|6_yK#qHG1tS3|^ z{e)g#57IDt+Ocwy z1m{AMRW~cCPYLdA@D~*VNJRoxCj{>^czG!JFsR$>3QOKV@$!i9oonY9u}~Q1@jTgK z9NVl2fAXxc&UzgDxJzwp0db$X@V7&V@PvelGaX$k2JK>VE61sb@+PPi+OgG1x8^1y1pC^Wo9hN$q0w{*hEXLmFCHkn z)OW=_8or*>dnx1S;Zd){R>d|EMTQr~gN3@4G&_9P{WY2;dJX7^`EEfScP)chD|yU? zr6-Xv2It<>gCcu>owgXIPLi>6Aw~lMJ%G{++_MzQ%yx*rMp3W}u=N9)&V zLmz&%n}^s*y*7x~e{tu%VWMAyq}g?CX{eoEH4m87j_BE_0HKX3L+=co$#&M`$31h5 zVqg@B-y^HVR$X=UNyG@gdOI zY^F<$%2*<&U&MML*f5&$1YS=j;nhaf*r!e>RPXt}Uvj_vTBr2MJxz5sW1uMsDr&U> zKl?n|$g#i9+Vp8E)+hovv5Y3gxib3~Wu7f3p8l`xky zeyk=*-vf@r`sL}rfWIvlL)GK-Cxk}Zb`!cS&`m`s39JZGXyF#onYc?e$90@EKCOH^ zw|Xyz@jiJ(Rw6LGh%E#jF}}XM9VVzJHkbDomF;I*wQS8lhivQwEKQ+@M@L-}F*wA` zsnL&lXIU*we|hEOj8csZ4OiY%#Pk^+{4T9}f7k3#dvGLqzAi+Jzh%JsiXv(tM~5Rh z${vLjY*PP&Kdtq}NPN8m+moxyLVRL<_upj0D_?Mf0^I1cUBm^%b+Z*1_9)n+#@@P| z&nuiC{@s2ruVZu8tiwTCVce3rWDxvw;+=Yjr>>@Tg=Lg(xt6C9y?l@)dpK+ubOmZ? zKW!ymPY>e>I81%d_(N_C*T?>eqHzd*u`uD+3^WyntG8)Y(Ieg-hcSA=$jEYmQ zRYDvvVT; z9DVy6pA_O!x=UOQb9tE*!x3TAsamEIgs%)!iVJ`p1)o=nvCnY_`fn$uaO{>lE!WT5 znwq~=W#n6R*o<1dT!DJ6p9!Q01AT-MV9QD7;o6WWIEM1ui%|I=c`qT;pkb2KehT>Z z_Vsf5_xix=G{@$LhX=qXOdH|~0oA4K9y6A;*#rs3bfC6r*@lWh-%5yhIc2M0C*^FX z)Q7hYIlnf%Bi;}cFj!>*vcIG_!kpk6$4#M+7|vg@qNZhE|BEOtPT4TmEEX5E0afep z$1=n~`FuT$8C{r?uBKJMZUKSXxmU}W2h!^=r8B~Uf)XL{1U1-Ww0mM18C})EB#Fj4 zV8(<0(Kn^{IV(5k#a#}Fet*@VIfR`XbZZS^1+H~M*7;o5IzU|8gLFEBxWciHf74B#V4tn=B{j_HiH9S^MYg}BK2mBWBNV6j{M0}}P zi<~KXc#x_u`^$xaHC)nI+nd*71VxGL`QXPJ_GWcsgMn@!wSX+9ugf&+pH1zt>d#V| zi0`|zI{Mn?FTbgSexwC#Gk@vO%OfS=Q6+%qV0X8ed4O%O^={z^@ZTnW*QA|RgSRidL_S-Kob%(c8ZPU_A{-wx|O=sn+xUo2-YMtcy4*FB+X+ zCRyl*yQQxhU)6O`0=>R`9Jm^^HK&fQI+PfDhUz+(zwgHTAUudIO<7$B^pywG7fgb^ z4MM+9nvC9C$AymFxuEIrOxaIo!bYc!Q3KsuD8h03G25~e&k#q`F*j$viXzSmzW%0k z`|t<`mL7c-1Ql*M!}68NpIW>9sN;N= zRKpElU@blHFNo$YFE0lnd{%r&N6#rRdPMF-#&-6$y@9|OSOUPo2vi7PI5nU?FRM)b z>lkL&Z*FEwv^lfhJb_clV2Fb$zJF}&`!Bsc@7hn<3mo_9G(lI7;%Gy?kMlLHVSsGQPfQNVKdy=V!==4*<1tKYA84CG>X+!a| zg0t-&{DAxGKC#b`e^+EUT|Xlc@MLpUp>*d*76KG*Im*%P-y6#bq@`_sb2HUDF3@*c z4T^Lz9o8ZVzWIJ)$NIJFYx@!J$)YBjcV>~2BcA?}$jD%&3tWa{H4e7H%wU>mnO>u! z$dF#syWMD;!|XDr2a_a5+V5d_)k|dlE!mtx#)%MLt}73{N^sH3;6wbBUeB-Pf6%J_ z$_^6@w_hE|>lDunsz-{~fT*9~UV?WYu<3VsvaObAm{$%=UZ}b_<;oA=)}WqqXaerZ ze_{^LaR^GnDRV@--Wve{n$+9rljbxE33&?zd3wLEZsCim{}{Iei}zBI<^+`bT0BKI zwcal|g5}Cc@}PNbe>FGr=*euYS$x|TX|b9aG$IPzNTyI}kZ@r-Fb=*yZBN>a1IX#n zNMMLiBt~Jf+^TB3OA~vF%g@L2hyr&1&+R_H z)2Kqb1QZAR6XlR=z$yY>AEa_16~_{;n=A z6inQff5>ywWLZ21KUo|o!{CC$Y_Q{^u4vW0g23i@ZVqW0O~O75=7^ka;F1R#j^4?q z{e8e(Tb4uSb{$4#<&p)~6Q&k=oG$Sq<_Ob%SO)ChPQglg;X^ebvW4;wfpPWX-o;y< zsG2|q6y&tQK}8%qJp351o!o+=N)hjq)t3-G;Gvh~$p9!yn-oYKHr^gtZke;n>%1o- zfzzm8!@syRFtixn(Zg^!Vr%S3INY=iK#YbEd6eJHpfQlj)z!VGiV62SA@Qf5Ly5?- zBJUiaH-pN(XPw7^kDH=;X5 z{mm0K;+3pA6{?ruz9KU<87zXEF)=|!%@Y;dt2!nq5|liA%7Aazx8{^uP_9}3saKb@ zVNVDZ5;c8en3jj$RL#Cs4-PnO&718p7(*}!jh@^*KBfV_)KJ)?>6RjWJ?BoyFHItu zW9>kqcC{qn7sLX<0Tp=hwtarI^Lah`j%4)cODz7@FyW}&7 zWmMX_V_;m6 zY{1iz@=VQf&~&DYY)gr&FBE3jnP_g1eIRG+$TYnUZ(0yUZM)+JKXoZ7o95Dt%oT1q;CkR*yCh?2U-)Q1Mv(;QNV0`F(q_22+3Se#G8lgkYb zeqfHS;kV-#fq7io7o|#~IQ^S+HJk$Xi2sGQ|3$L@P4d#+;}vBNoW5b&9g#{hP6Q=0 z#Y(H4;xjt?C3aR+cNgF*jJy08ny zD<(tVB@I)eURB%b;nN`(hy8l?5;(6Y`IYAH{PpR2@HF(h%qhmLnEip?jm7w%`ad2$ z%^UliXH2c4nUH)t6S+H`?E%@N3DYSO{-F2)Tn()gKW)hI{ABV09Br90RsO~V@!lX;9 zRL}ys(cXNU&c{lKi%{gC*k6PHs%0A-@@iSMJ!P}}gDNq&rsDnPH__HvgWB%N8gT70 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/feature_detection_dlg3.png b/doc/salome/gui/GEOM/images/feature_detection_dlg3.png new file mode 100644 index 0000000000000000000000000000000000000000..54bf9611f220bee2f6e447d8ec9a8e94342b2e96 GIT binary patch literal 28100 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/fillet1.png b/doc/salome/gui/GEOM/images/fillet1.png index d8494d38a2c7900749b1a59b3bbcd3dd7caaf961..4d1c5cf730d7768571f2cb50e9e41a62ed735c34 100755 GIT binary patch literal 23714 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 literal 11195 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 literal 14518 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 D#TzJ8 diff --git a/doc/salome/gui/GEOM/images/fillet3.png b/doc/salome/gui/GEOM/images/fillet3.png index a8b84d29245bedafee4e717bf316eb505fbc3b0c..7de0b087a350c23ea56e420e410b7754c8004288 100755 GIT binary patch literal 28000 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

  • 0$rPT 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 g8hU%}G7_ diff --git a/doc/salome/gui/GEOM/images/front1.png b/doc/salome/gui/GEOM/images/front1.png new file mode 100644 index 0000000000000000000000000000000000000000..863772beeeb56c622c66ea1761a8faf8027f2b49 GIT binary patch literal 3682 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/front2.png b/doc/salome/gui/GEOM/images/front2.png new file mode 100644 index 0000000000000000000000000000000000000000..77cc24d6153db7025b1e6cb413351d2ae4b93a10 GIT binary patch literal 3680 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 JPDHLkV1nL`(lG!4 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/material.png b/doc/salome/gui/GEOM/images/material.png new file mode 100644 index 0000000000000000000000000000000000000000..085921468d36bf9daa7df73290fe0e03d246fb18 GIT binary patch literal 33790 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�p^55!5Jlqba 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/material_VTK.png b/doc/salome/gui/GEOM/images/material_VTK.png index b409c73d144b50169a2996577f2f1823cc31be33..3910ff9c470bd80abe31a50f55383a6b3c5f3780 100644 GIT binary patch literal 33334 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%0D{^?nxx&D6gv8MN=m)o_=8yn1sLx%>Dwh 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 z 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 OD+W(jKbLh*2~7Z6;rO)x literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/picture_import_dlg.png b/doc/salome/gui/GEOM/images/picture_import_dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..cd38a65132ea66ee47f5a45ef0006afbd0359c88 GIT binary patch literal 17692 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/pref15.png b/doc/salome/gui/GEOM/images/pref15.png new file mode 100755 index 0000000000000000000000000000000000000000..3d9e5f6287301645f4f41ecda4eba5b5b81cffb2 GIT binary patch literal 46204 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 + +\n Informs of the following possible errors: +
      +
    • not a block;
    • +
    • not glued;
    • +
    • not connected;
    • +
    • extra or degenerated edge.
    • +
    + +\n Result: Boolean; highlight in the viewer. +\n TUI Command: +geompy.CheckCompoundOfBlocks(Compound). Checks if the shape +is a valid compound of blocks. If it is true, then the validity flag +is returned, and encountered errors are printed in the python console. + +See also a \ref tui_check_compound_of_blocks_page "TUI example". + +\image html measures10.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/check_self_intersections.doc b/doc/salome/gui/GEOM/input/check_self_intersections.doc new file mode 100644 index 000000000..d1477bd66 --- /dev/null +++ b/doc/salome/gui/GEOM/input/check_self_intersections.doc @@ -0,0 +1,22 @@ +/*! + +\page check_self_intersections_page Detect Self-intersections + +\n Checks the topology of the selected shape to detect self-intersections. + Returns True if there are no self-intersections. Reports pairs of + intersected sub-shapes, if there are any. + +\note This tool is useful for detection of shapes, not suitable for +arguments of Boolean operations and Partition algorithm. +For more information about Partition and Boolean Operations Algorithms +and their limitations refer to
    this document. + +\n Result: Boolean. +\n TUI Command: geompy.CheckSelfIntersections(theShape), +where \em theShape is the shape checked for validity. + +See also a \ref tui_check_self_intersections_page "TUI example". + +\image html measures11.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/check_shape.doc b/doc/salome/gui/GEOM/input/check_shape.doc new file mode 100644 index 000000000..9ffbf5b9a --- /dev/null +++ b/doc/salome/gui/GEOM/input/check_shape.doc @@ -0,0 +1,18 @@ +/*! + +\page check_shape_page Check Shape + +\n Checks the topology of the selected geometrical object and returns +True if it is valid. Check also geometry checkbox allows to test the +geometry as well. + +\n Result: Boolean. +\n TUI Command: geompy.CheckShape(theShape, theIsCheckGeom = 0), +where \em theShape is the shape checked for validity. + +See also a \ref tui_check_shape_page "TUI example". + +\image html measures9.png + + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/color.doc b/doc/salome/gui/GEOM/input/color.doc index fcaff6f45..cb56c49e1 100644 --- a/doc/salome/gui/GEOM/input/color.doc +++ b/doc/salome/gui/GEOM/input/color.doc @@ -4,7 +4,10 @@ \n You can change the filling color of your object in the standard Select Color menu accessible by right-clicking on an object and -selecting \b Color in the pop-up menu box. +selecting \b Color in the pop-up menu box. + +This functionality is avalible only if \em artificial +\ref material "material model" is assigned to the selected shape. \n TUI Command: gg.setColor(ID, Short, Short, Short) @@ -13,4 +16,4 @@ selecting \b Color in the pop-up menu box. Our TUI Scripts provide you with useful examples of \ref tui_change_color "Changing Display Parameters". -*/ \ No newline at end of file +*/ diff --git a/doc/salome/gui/GEOM/input/creating_filling.doc b/doc/salome/gui/GEOM/input/creating_filling.doc index 8adb97690..874cac94b 100644 --- a/doc/salome/gui/GEOM/input/creating_filling.doc +++ b/doc/salome/gui/GEOM/input/creating_filling.doc @@ -18,12 +18,16 @@ created surface and the reference edge; iterations are repeated until the required tolerance is reached. So, a greater number of iterations allows producing a better surface. \n Method - Kind of method to perform filling operation -1. Default - the standard behaviour. -2. Use edges orientation - the edges orientation is used: if an edge is + +
      +
    1. Default - the standard behaviour.
    2. +
    3. Use edges orientation - the edges orientation is used: if an edge is reversed, the curve from this edge is reversed before being used by the filling -algorithm. -3. Auto-correct edges orientation - curves orientation is changed to -minimize the sum of distances between ends points of edges. +algorithm.
    4. +
    5. Auto-correct edges orientation - curves orientation is changed to +minimize the sum of distances between ends points of edges.
    6. +
    + \n Approximation - if checked, BSpline curves are generated in the process of surface construction (using GeomAPI_PointsToBSplineSurface functionality). By default the surface diff --git a/doc/salome/gui/GEOM/input/creating_sketcher.doc b/doc/salome/gui/GEOM/input/creating_sketcher.doc index 85ce73f4d..a150db92c 100644 --- a/doc/salome/gui/GEOM/input/creating_sketcher.doc +++ b/doc/salome/gui/GEOM/input/creating_sketcher.doc @@ -2,53 +2,70 @@ \page create_sketcher_page 2D Sketcher -The 2D Sketcher allows you to create a profile made of curves of 2 types: line segments and arcs. +The 2D Sketcher allows you to draw 2D shapes on a working plane. You +can create sketches of two types: -Example: +
      +
    • \b Profile made of connected curves of 2 types: line segments and \b arcs. + +\b or + +
    • \b Rectangle +
    + +The \b Result is a \b Wire + +\n Example: \image html sketch_example.png -To create a \b 2D Sketch: +To create a 2D Sketch:
      -
    1. In the main menu select New Entity -> Basic -> 2D Sketch or click on \image html sketch.png
    2. +
    3. In the main menu select New Entity -> Basic -> 2D Sketch or click on \image html sketch.png
    4. + +
    5. Select the \b plane or the planar face on which to create the sketch. +\note By default the sketch is created on the XOY plane of the global coordinate system. +If Local Coordinate Systems have been created in the study they appear +in the combobox and can be selected as a reference coordinate system.
    6. -
    7. Select the plane or the planar face on which to create the sketch. By default the sketch is created on the XOY plane of the global coordinate system. -If Local Coordinate systems have been created in the study they appear in the combobox and can be selected as reference coordinate system.
    8. +
    9. Choose a \b segment or an \b arc element to start a \b profile or choose \b rectangle to draw a rectangle. + +\n If you draw a \b profile:
    10. Select a start point. By default the start point of the curve is located at the point of -origin of the reference coordinate system and the curve lies in the -plane XOY.
    11. +origin of the reference coordinate system.
    12. Create curve portions and click on \b Apply after each step.
    13. Select either \b Close or Sketch Closure if you want to close the profile before closing the window.
    -To create a \b Segment: +\n To create a \b Segment:
    1. In the Element Type part of the dialog box select: \image html line_icon.png
    2. -
    3. You can define the segment by either it's end point or a \b direction and a length. The direction is defined relatively to the tangent at the last point of the sketch. It can be: - - - Tangent (colinear to the tangent at the last point) - - Perpendicular - - Defined by an angle - - Defined by a vector (Vx, Vy) +
    4. You can define the segment by either its end point or \b direction and \b length. The direction is defined relatively to the tangent at the last point of the sketch. It can be: +
        +
      • Tangent (colinear to the tangent at the last point)
      • +
      • Perpendicular
      • +
      • Defined by an angle
      • +
      • Defined by a vector (Vx, Vy)
      • +
    -To create an \b Arc: +\n To create an \b Arc:
    1. In the Element Type part of the dialog box select \image html arc_icon.png
    2. -
    3. You can define the segment by either it's end point or a \b direction a \b radius and an \b angle.
    4. +
    5. You can define the segment by either its end point or \b direction \b radius and \b angle.
      • In case of an end point the arc can be built in three different ways:
      • @@ -71,10 +88,7 @@ To create an \b Arc:
    -For the first segment or arc of the sketch the reference direction is the X direction of the reference coordinate system. - -\n The Result of the operation will be a \b Wire. - +\note For the first segment or arc of the sketch the reference direction is the X direction of the reference coordinate system. \n Dialog Box: @@ -82,8 +96,9 @@ For the first segment or arc of the sketch the reference direction is the X dire \n Arguments:
      -
    1. Coordinate system (Local or Global CS can be selected)
    2. -
    3. Element type (segment or arc).
    4. +
    5. Coordinate system (Existing Local CS or Global CS can be selected)
    6. +
    7. A plane or a planar face to define a new Local Coordinate System +
    8. Element type (segment, arc or rectangle).
    9. Destination type (point or direction).
    10. Destination point by means of:
      • @@ -94,7 +109,7 @@ For the first segment or arc of the sketch the reference direction is the X dire
      • Destination direction by means of:
        • angle between the new segment and the previous one;
        • -
        • perpendicular to the previous segment (same as previous, but angle +
        • perpendicular to the previous segment (same as previous, but the angle is predefined and is equal to 90 degrees);
        • tangent to the previous segment;
        • vector components DX, DY.
        • @@ -105,8 +120,30 @@ is predefined and is equal to 90 degrees); \b Buttons: "Restore" button orientates the viewer correspondingly to the chosen working plane and fits the scene to show all its objects. -\n "Sketch Validation" button applies the wire, only red part will be built by "Sketch Validation". -\n "Sketch Closure" will close the Sketch by straight line from last red part and apply it. +\n "Close" button applies the wire, only the red part will be built. +\n "Sketch Closure" will close the Sketch by a straight line +from the last red part and apply it. + +\n To draw a \b rectangle: + +
            +
          1. In the Element Type part of the dialog box select \image html rectangle_icon.png
          2. + +
          3. Draw a rectangle with the mouse directly in the view or fill in the coordinates of two opposite vertices of the rectangle.
          4. +
          5. Apply and Close
          6. +
          + +\n Dialog Box: + +\image html sketcher_dlg2.png + +\n Arguments: +
            +
          1. Coordinate system (Existing Local CS or Global CS can be selected)
          2. +
          3. A plane or a planar face to define a new Local Coordinate System +
          4. Element type (segment, arc or rectangle).
          5. +
          6. The X,Y coordinates of two opposite vertices of the rectangle
          7. +
          \n TUI Command: geompy.MakeSketcherOnPlane(Command, WorkingPlane) diff --git a/doc/salome/gui/GEOM/input/creating_topological_obj.doc b/doc/salome/gui/GEOM/input/creating_topological_obj.doc new file mode 100644 index 000000000..aff1438e7 --- /dev/null +++ b/doc/salome/gui/GEOM/input/creating_topological_obj.doc @@ -0,0 +1,17 @@ +/*! + +\page create_topological_obj_page Creating Topological Objects + +New Entity -> Build submenu allows to create topological +entities: + +
            +
          • \subpage create_edge_page
          • +
          • \subpage create_wire_page
          • +
          • \subpage create_face_page
          • +
          • \subpage create_shell_page
          • +
          • \subpage create_solid_page
          • +
          • \subpage create_compound_page
          • +
          + +*/ diff --git a/doc/salome/gui/GEOM/input/extruded_boss_operation.doc b/doc/salome/gui/GEOM/input/extruded_boss_operation.doc index 01e425df8..8338c6db4 100644 --- a/doc/salome/gui/GEOM/input/extruded_boss_operation.doc +++ b/doc/salome/gui/GEOM/input/extruded_boss_operation.doc @@ -8,18 +8,26 @@ The Extruded boss operation allows you to easily add material on a \b sol To produce the extruded boss: -1. Draw the \b profile of the extrusion. It can be: - - - a \b Sketch drawn on a planar face of the object you want to boss. +
            +
          1. Draw the \b profile of the extrusion. It can be: + +
              +
            • a \b Sketch drawn on a + planar face of the initial shape you want to boss.
            • - - any closed edge or wire of the desired shape (circle, ellipse ...). +
            • any closed edge or wire of this shape (circle, ellipse ...).
            • +
            + +
          2. + +
          3. In the Main Menu select Operations - > Extruded Boss or click on +\image html extruded_boss.png
          4. -2. In the Main Menu select Operations - > Extruded Boss or click on -\image html extruded_boss.png +
          5. Fill in the dialog box fields: -3. Fill in the dialog box fields: +\image html extruded_boss_dlg.png
          6. -\image html extruded_boss_dlg.png +
          The input arguments are: @@ -27,7 +35,7 @@ The input arguments are: - The \b profile. It must be a \b closed edge or wire and it must be \b planar. -- The \b height of extrusion. It's calculated from the base profile along the normal to its plane. +- The \b height of extrusion. It is calculated from the base profile along the normal to its plane. And optionnaly: @@ -40,4 +48,4 @@ This functionality is available via the textual interface with the command: \n TUI Command: geompy.MakeExtrudedBoss(InitShape, Profile, Height, Angle), -*/ \ No newline at end of file +*/ diff --git a/doc/salome/gui/GEOM/input/extruded_cut_operation.doc b/doc/salome/gui/GEOM/input/extruded_cut_operation.doc index 7883559ba..0d4d76581 100644 --- a/doc/salome/gui/GEOM/input/extruded_cut_operation.doc +++ b/doc/salome/gui/GEOM/input/extruded_cut_operation.doc @@ -8,18 +8,26 @@ The Extruded cut operation allows you to easily remove material from a \b To produce the extruded cut: -1. Draw the \b profile of the extrusion. It can be: +
            +
          1. Draw the \b profile of the extrusion. It can be: +
              +
            • a \b Sketch drawn on a planar face of the object you want to cut.
            • +
            • any closed edge or wire of the desired shape (circle, ellipse ...).
            • +
            +
          2. - - a \b Sketch drawn on a planar face of the object you want to cut. - - - any closed edge or wire of the desired shape (circle, ellipse ...). +
          3. In the Main Menu select Operations - > Extruded Cut or click on -2. In the Main Menu select Operations - > Extruded Cut or click on -\image html extruded_cut.png + \image html extruded_cut.png -3. Fill in the dialog box fields: +
          4. -\image html extruded_cut_dlg.png +
          5. Fill in the dialog box fields: + + \image html extruded_cut_dlg.png + +
          6. +
          The input arguments are: diff --git a/doc/salome/gui/GEOM/input/features.doc b/doc/salome/gui/GEOM/input/features.doc new file mode 100644 index 000000000..26a4d9966 --- /dev/null +++ b/doc/salome/gui/GEOM/input/features.doc @@ -0,0 +1,20 @@ +/*! + +\page features_page Features + +Geometry module provides the following Features, +which allow to: + + +
            +
          • Produce a \subpage fillet1d_operation_page "1D Fillet" on the + corners of a Wire with Planar Edges.
          • +
          • Produce a \subpage fillet2d_operation_page "2D Fillet" on the corners of a Planar Face.
          • +
          • Produce a \subpage fillet_operation_page "3D Fillet" on the selected + edges of an object.
          • +
          • Produce a \subpage chamfer_operation_page "Chamfer" on the selected edges of an object.
          • +
          • Remove matter from an object by producing an \subpage extruded_cut_operation_page "Extruded Cut".
          • +
          • Add matter to an object by producing an \subpage extruded_boss_operation_page "Extruded Boss".
          • +
          + +*/ diff --git a/doc/salome/gui/GEOM/input/free_faces.doc b/doc/salome/gui/GEOM/input/free_faces.doc new file mode 100644 index 000000000..9ec0cb1f8 --- /dev/null +++ b/doc/salome/gui/GEOM/input/free_faces.doc @@ -0,0 +1,19 @@ +/*! + +\page free_faces_page Check Free Faces + +Highlights all free faces of a given shape. A free +face is a face which is not shared between two objects of the shape. + +\note This functionality works only in VTK viewer. + +\b Result: a list of IDs of all free faces, containing in the shape. + +TUI Command: GetFreeFacesIDs(Shape), where \em Shape is +a shape to be checked. + +See also a \ref tui_free_faces_page "TUI example". + +\image html repair10.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/geometrical_object_properties.doc b/doc/salome/gui/GEOM/input/geometrical_object_properties.doc index e323c6932..a5b55449a 100644 --- a/doc/salome/gui/GEOM/input/geometrical_object_properties.doc +++ b/doc/salome/gui/GEOM/input/geometrical_object_properties.doc @@ -1,8 +1,6 @@ /*! -\page geometrical_obj_prop_page Geometrical Object Properties - -

          Geometrical Object Types

          +\page geometrical_obj_prop_page Geometrical Object Types GetType function: @@ -67,6 +65,7 @@ The possible values of the geometrical objects are listed in the table below: 443DSKETCHER 45FILLET_2D 46FILLET_1D + 201PIPETSHAPE Also geompy.py module provides a helper function ShapeIdToType() diff --git a/doc/salome/gui/GEOM/input/geometry_preferences.doc b/doc/salome/gui/GEOM/input/geometry_preferences.doc new file mode 100644 index 000000000..00301daf9 --- /dev/null +++ b/doc/salome/gui/GEOM/input/geometry_preferences.doc @@ -0,0 +1,93 @@ +/*! + +\page geometry_preferences_page Geometry preferences + +In the \b Geometry module you can set preferences for visualisation of +geometrical figures, which can be used in later sessions with this module. +There is also a special group of preferences controlling input +precision for floating-point data. + +\image html pref15.png + +\par +To redefine any color click on the corresponding line to access to +the Select Color dialog box. + +
            +
          • General
          • +
              +
            • Default display mode - allows to choose between wireframe, shading or +shading with edges.
            • +
            • Default shading color - allows to select default shading +color.
            • +
            • Edges in shading - allows to select default edges color in shading mode.
            • +
            • Default wireframe color - allows to select default +wireframe color (to be applied to any lines not being free boundaries +or isolated lines).
            • +
            • Color of free boundaries - allows to select default color for free boundaries.
            • +
            • Color of edges, vectors and wires - allows to select +default color for edges, vectors and wires (isolated lines).
            • +
            • Color of points - allows to select default color for +vertices.
            • +
            • Color of isolines - allows to select default color for +isolines.
            • +
            • Step value for spin boxes - allows to define the increment +of values set in spin boxes.
            • +
            • Deflection coefficient - allows to define default deflection +coefficient for lines and surfaces. A smaller coefficient provides +better quality of a shape in the viewer.
            • +
            • Default front material - allows to define default front face material.
            • +
            • Default back material - allows to define default back face material.
            • +
            • Edges width - allows to define default width of the edges.
            • +
            • Isolines width - allows to define default width of the isolines.
            • +
            • Preview edges width - allows to define width of the edges for preview.
            • +
            • Measures line width - allows to define lines width of measurements tools.
            • + +
            +
          + +
            +
          • Input fields precision
          • +
              +
            • Length precision - allows to ajust input precision of coordinates and dimensions.
            • +
            • Angular precision - allows to ajust input precision of angles.
            • +
            • Length tolerance precision - allows to ajust input precision of tolerance of coordinates and dimensions.
            • +
            • Angular tolerance precision - allows to ajust input precision of tolerance of angles.
            • +
            • Weight precision - allows to ajust input precision of weight and mass.
            • +
            • Density precision - allows to ajust input precision of density.
            • +
            • Parametric precision - allows to ajust input precision of parametric values.
            • +
            • Parametric tolerance precision - allows to ajust input precision of tolerance in parametric space.
            • +
            +
          + +
            +
          • Marker of Points
          • +
              +
            • Type - allows to select the symbol for representation of +points (cross, asterisk, etc.).
            • +
            • Size - allows to define the size of the marker from 1 +(smallest) to 7 (largest).
            • +
            +
          + +
            +
          • Origin and base vectors
          • +
              +
            • Length of base vectors - allows to define the length +of base vectors.
            • +
            • Auto create - allows to automatically create a point +of origin and three base vectors of the rectangular coordinate +system immediately after the module activation.
            • +
            +
          + + +
            +
          • Operations
          • +
              +
            • Preview - allows to customize the displaying preview by default.
            • +
            +
          + + +*/ diff --git a/doc/salome/gui/GEOM/input/importing_picture.doc b/doc/salome/gui/GEOM/input/importing_picture.doc new file mode 100644 index 000000000..6416a0cc0 --- /dev/null +++ b/doc/salome/gui/GEOM/input/importing_picture.doc @@ -0,0 +1,32 @@ +/*! + +\page import_picture_page Import a picture in the OCC viewer + +It is possible in GEOM to import a picture file in the OCC view. +The supported formats are : .bmp, .gif, .pix, .xwd, .rgb, .rs + + +The imported picture (engineering drawing, nautical chart, etc.) may be used as a support for 2D shape design. + +It is possible to create a \ref create_sketcher_page "sketch" on top of this picture or use the +\ref shape_recognition_page "Shape recognition" +functionalities to build geometrical shapes from some elements of the picture (contours, corners ...). + +To import a picture in the view: + +
            + +
          • select New Entity -> Import a picture in the view or click on \image html import_picture.png
          • + +
          • Click on ... and browse your image files to select one of them
          • + +
          • Apply
          • + +
          + +A new Picture object is created. Pan, zoom and rotation operations are available in the view like for any other object. + + +\image html picture_import_dlg.png + +*/ diff --git a/doc/salome/gui/GEOM/input/index.doc b/doc/salome/gui/GEOM/input/index.doc index 3305549fb..7b87f72da 100644 --- a/doc/salome/gui/GEOM/input/index.doc +++ b/doc/salome/gui/GEOM/input/index.doc @@ -5,20 +5,24 @@ \image html geomscreen.png \b Geometry module of SALOME is destined for: -
            -
          • \subpage import_export_geom_obj_page "import and export of geometrical models" in IGES, BREP and STEP formats;
          • -
          • \subpage create_geom_obj_page "construction of geometrical objects" -using a wide range of functions;
          • -
          • \subpage view_geom_obj_page "viewing geometrical objects" in the OCC viewer;
          • -
          • \subpage transform_geom_obj_page "transformation of geometrical objects" using -various algorithms;
          • -
          • \subpage repairing_operations_page "optimization of geometrical objects";
          • -
          • viewing \subpage geometrical_obj_prop_page "geometrical object properties".
          • -
          • and other information about geometrical objects using - \subpage using_measurement_tools_page "measurement tools".
          • -
          • easily setting parameters via the variables predefined in - \subpage using_notebook_geom_page "Salome notebook".
          • -
          +- \subpage import_export_geom_obj_page "import and export of geometrical models" + in IGES, BREP and STEP formats; +- \subpage create_geom_obj_page "construction of geometrical objects" + using a wide range of functions; +- \subpage view_geom_obj_page "viewing geometrical objects" in the OCC + viewer; +- \subpage transform_geom_obj_page "transformation of geometrical objects" + using various algorithms; +- \subpage repairing_operations_page "optimization of geometrical objects"; +- viewing \subpage geometrical_obj_prop_page "geometrical object properties" + and other information about geometrical objects using + \subpage using_measurement_tools_page "measurement tools"; +- \subpage pictures_page "designing shapes from pictures"; +- easily setting parameters via the variables predefined in + \subpage using_notebook_geom_page "SALOME notebook". + +Geometry module preferences are described in the +\subpage geometry_preferences_page section of SALOME Geometry Help. Almost all geometry module functionalities are accessible via \subpage geompy_page "Geometry module Python Interface" diff --git a/doc/salome/gui/GEOM/input/inertia.doc b/doc/salome/gui/GEOM/input/inertia.doc new file mode 100644 index 000000000..e489b029a --- /dev/null +++ b/doc/salome/gui/GEOM/input/inertia.doc @@ -0,0 +1,21 @@ +/*! + +\page inertia_page Inertia + +Returns the axial moments of inertia for the selected geometrical object. + +\n Result: Displays the matrix of the own moments of inertia and +the relative moments of inertia in the form of Python Tuple +
          (I11, I12, I13,
          +
          I21, I22, I23,
          +
          I31, I32, I33,
          +
          Ix, Iy, Iz).
          +\n TUI Command: geompy.Inertia(Shape), where \em Shape is +a shape for which the own matrix of inertia and the relative moments of inertia are +returned. + +See also a \ref tui_inertia_page "TUI example". + +\image html measures4.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/material.doc b/doc/salome/gui/GEOM/input/material.doc index fb89d013a..4960e06f3 100644 --- a/doc/salome/gui/GEOM/input/material.doc +++ b/doc/salome/gui/GEOM/input/material.doc @@ -1,56 +1,145 @@ /*! -\page material_page Material - -\n You can change the material properties of the selected shape(s) by -- choosing one of predefined global materials, -- choosing one of predefined user materials, -- creating a new user material and applying it to the selected shape(s) - -in the following dialog box. - -\image html material_front.png -
          Set Material Properties dialog: Front material tab
          - -\image html material_back.png -
          Set Material Properties dialog: Back material tab
          - -This functionality is available in both OCC and VTK viewers. - -User can changed the following material properties - -- ambient color and coefficient -- diffuse color and coefficient -- specular color and coefficient -- emission color and coefficient (available only in OCC viewer) -- shininess - -With help of Front material and Back material tabs of -Set Material Properties dialog it is possible to set front and -back materials of the selected shape(s). To make Back material -tab visible it is needed to check Enable back material check -box. If back material is not defined, front material specified for the -selected shape(s) is used as both front and back materials. - -All currently available materials are shown in the left-side list box -of the Set Material Properties dialog. - -- [Current] item in the list corresponds to - the front/back (depending on what tab is currently active) material - currently used for the selected shape(s) -- [Default] item in the list corresponds to the front/back material - specified in Geometry module preferences -- Global materials are shown in blue color in the list -- User materials are shown in black color in the list - +\page material_page Material properties + +\tableofcontents + +\section material_general_description General description + +\note The functionality related to the material properties is +\b experimental, so it might work not as expected. The behaviour might +be changed in the future versions of SALOME Geometry module. + +\n You can change the material properties of the selected shape(s) in +the dedicated dialog box. This dialog box can be invoked from the +context popup menu using "Material properties" item: + +\image html material.png + +In this dialog box you can: +- modify the properties of the material model currenly assigned to the +shape presentation; +- assign one of predefined global materials to the shape; +- create a custom material model and apply it to the shape. + +\note This functionality is available in both OCC and VTK 3D +viewers. However, note that due to the differencies between underlying API +of OCC and VTK libraries the behaviour of the functionality related to +the materials is different: +- presentation of the shape in OCC and VTK viewers is not fully identical; +- some material attributes can affect presentation in a different way. + +\section material_opengl_model OpenGL ligthing model + +The material is specifed by several attributes of the lighting +model. More details can be found in the documentation related to the +OpenGL programming, for example here: http://www.glprogramming.com/red/chapter05.html. + +In the OpenGL lighting model, the light in a scene comes from several +light sources; the light sources have an effect only when there are +surfaces that absorb and reflect light. Each surface is assumed to be +composed of a material with various properties. A material might emit +its own light (like headlights on an automobile), it might scatter +some incoming light in all directions, and it might reflect a +portion of the incoming light in a preferential direction like a +mirror or other shiny surface. + +The OpenGL lighting model considers the lighting to be divided into +four independent components: emissive, ambient, diffuse, and +specular. All four components are computed independently and then +added together. + +Ambient illumination is the light that has been scattered so much by the +environment that its direction is impossible to determine - it seems +to come from all directions. Backlighting in a room has a large +ambient component, since most of the light that reaches your eye has +first bounced off many surfaces. A spotlight outdoors has a tiny +ambient component; most of the light travels in the same direction, +and since you're outdoors, very little of the light reaches your eye +after bouncing off other objects. When ambient light strikes a +surface, it is scattered equally in all directions. + +The diffuse component is the light that comes from one direction, so +it is brighter if it comes squarely down on a surface than if it barely +glances off the surface. Once it hits a surface, however, it's +scattered equally in all directions, so it appears equally bright, no +matter where the eye is located. Any light coming from a particular +position or direction probably has a diffuse component. + +Finally, the specular light comes from a particular direction, and it +tends to bounce off the surface in a preferred direction. A +well-collimated laser beam bouncing off a high-quality mirror produces +specular reflection by almost 100 percent. Shiny metal or plastic has a +high specular component, and chalk or carpet has almost none. You can +think of specularity as shininess. + +Although a light source delivers a single distribution of frequencies, +the ambient, diffuse, and specular components might be different. For +example, if you have a white light in a room with red walls, the +scattered light tends to be red, although the light directly striking +objects is white. OpenGL allows you to set the red, green, and blue +values for each component of light independently. + +\section material Material properties dialog box + +The dialog box consists of two parts: +- The list box at the left shows all available material models, both +predefined by the application and custom one specified by the user. +- The widgets in the right part of the dialog box allows modifyng of +different properties of the material model. + +The following properties of the material model can be specified: +- \b Ambient color and coefficient (floating point value between 0 and 1) +- \b Diffuse color and coefficient (floating point value between 0 and 1) +- \b Specular color and coefficient (floating point value between 0 and 1) +- \b Emissive color and coefficient (floating point value between 0 +and 1). Note: this attribute is applicable only for the OCC viewer; +it simulates light originating from an object. +- \b Shininess +- \b Type of material model: \em physical or \em artificial. + +If the material model is specified as a \em physical one (like \em Gold, +for instance), this means that the color of the shape (more precisely +its \em ambient color) can not be modified. If you assign a physical +material model to the shape, the "Color" menu item will not be +available in the popup menu. + +If the model is non-physical (\em artificial), the color can be changed +to any appopriate one, only other attributes will be constant. In the +dialog box you will be able to modify the color of the shape via the +"Color" button. "Ambient color" button becomes disabled to signalize +that this attribute of the model is ignored. Also, it will be possible +to modify the color of the shape via the +\ref color_page "corresponding popup menu command". + +All available predefined material models are shown in the list box of +the Color and Material Properties dialog: +- [Current] item in the list corresponds to the material model + currently assigned to the selected shape(s). This model can be + freely modified by the user. +- Global material models are shown in blue color in the list; + these are the models predefined by the SALOME Geometry module. The user + is not allowed to modify the global models. +- User materials are shown in black color in the list. These + models are specified by the user and can be modified at any moment. + +The buttons "Add material" and "Remove material" in the lower part of +the dialog box can be used to create or remove custom material +models. The same commands are also available via the popup menu that +is shown if the user presses right mouse button in the materials list +box. An additional "Rename material" command, available in popup menu, +can be used to change the name of material model. Examples: \image html material_OCC.png -
          Different materials in OCC viewer
          +Different materials in OCC viewer \image html material_VTK.png -
          Different materials in VTK viewer
          +Different materials in VTK viewer + +The default material model is specified via the preferences of Geometry +module. */ diff --git a/doc/salome/gui/GEOM/input/min_distance.doc b/doc/salome/gui/GEOM/input/min_distance.doc new file mode 100644 index 000000000..690a17f3a --- /dev/null +++ b/doc/salome/gui/GEOM/input/min_distance.doc @@ -0,0 +1,16 @@ +/*! + +\page min_distance_page Min. Distance + +Returns the minimum distance between two geometrical objects and +the coordinates of the vector of distance and shows the vector in the viewer. + +TUI Command: geompy.MinDistance(Shape1, Shape2), +where \em Shape1 and \em Shape2 are shapes between which the minimal +distance is computed. + +See also a \ref tui_min_distance_page "TUI example". + +\image html distance.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/multi_rotation_operation.doc b/doc/salome/gui/GEOM/input/multi_rotation_operation.doc index eff4bac5d..cdc6234a1 100644 --- a/doc/salome/gui/GEOM/input/multi_rotation_operation.doc +++ b/doc/salome/gui/GEOM/input/multi_rotation_operation.doc @@ -12,7 +12,9 @@ or two dimensions basing on the initial geometrical object. \n To produce a Simple Multi Rotation (in one dimension) you need to define a \b Shape to be rotated, an \b Axis of rotation and a Number of Times the shape must be rotated. Rotation Angle will -be 2*PI/NbTimes +be 2 * \a PI / \a NbTimes. Number of shapes in the resulting compound will be equal +to \a NbTimes (if \a NbTimes = 1, the result will contain only the initial +non-transformed shape). \n TUI Command: geompy.MultiRotate1D(Shape, Axis, NbTimes) \n Arguments: Name + 1 shape + 1 vector for direction + 1 value (repetition). @@ -32,7 +34,10 @@ the same way, but the Axis is defined by direction and point. \b Object around the given \b Axis on the given \b Angle a given Number of Times and multi-translates each rotation result. Translation direction passes through the center of gravity of -the rotated shape and its projection on the rotation axis. +the rotated shape and its projection on the rotation axis. Number of +shapes in the resulting compound will be equal to \a NbTimes1 x \a NbTimes2 (if +both \a NbTimes1 and \a NbTimes2 are equal to 1, the result will contain +only the initial non-transformed shape). \b Reverse checkbox allows to set the direction of rotation. \n TUI Command: geompy.MultiRotate2D(Shape, Axis, Angle, NbTimes1, Step, NbTimes2) \n Arguments: Name + 1 shape + 1 vector for direction + 1 angle diff --git a/doc/salome/gui/GEOM/input/multi_translation_operation.doc b/doc/salome/gui/GEOM/input/multi_translation_operation.doc index 7e6d64f46..0d084f3c1 100644 --- a/doc/salome/gui/GEOM/input/multi_translation_operation.doc +++ b/doc/salome/gui/GEOM/input/multi_translation_operation.doc @@ -7,8 +7,18 @@ select Operations - > Transformation - > Multi Translation \n This operation makes several translations of a shape in \b one or \b two directions. -\n The \b Result will be one or several \b GEOM_Objects (compound). +\n The \b Result will be one or several \b GEOM_Objects +(compound). The total number of shapes in the resulting compound (for +a single initial selected shape) will be equal to: +- in case of \ref single_multi_translation "Single multi translation": +\a NbTimes (if \a NbTimes parameter is equal to 1, the result will +contain only the initial non-translated shape). +- in case of \ref double_multi_translation "Double multi translation": +\a NbTimes1 x \a NbTimes2 (if \a NbTimes1 and \a NbTimes2 parameters +are both equal to 1, the result will contain a single non-translated +initial shape). +\anchor single_multi_translation \n To produce a Simple Multi Translation (in one direction) you need to indicate an \b Object to be translated, a \b Vector of translation, a \b Step of translation and a Number of Times the @@ -26,6 +36,7 @@ step value + 1 value (repetition). \image html multi_translation1dsn.png "The result of a simple multi-translation" +\anchor double_multi_translation \n To produce a Double Multi Translation (in two directions) you need to indicate an \b Object to be translated, and, for both axes, a \b Vector of translation, a \b Step of translation and a Number of Times the shape must be duplicated. diff --git a/doc/salome/gui/GEOM/input/normal.doc b/doc/salome/gui/GEOM/input/normal.doc new file mode 100644 index 000000000..aa2950b1f --- /dev/null +++ b/doc/salome/gui/GEOM/input/normal.doc @@ -0,0 +1,16 @@ +/*! + +\page normal_page Normal to a Face + +\n Calculates the normal vector to the selected \b Face. The \b Point +is a point of the \b Face, where the Normal should be calculated. + +\n TUI Command: geompy.GetNormal(Face, OptionalPoint = None), where \em Face is +the face to define normale of and \em OptionalPoint is the point to compute the normal at. +If the point is not given, the normale is calculated at the center of mass. + +See also a \ref tui_normal_face_page "TUI example". + +\image html normaletoface.png + +*/ diff --git a/doc/salome/gui/GEOM/input/pictures.doc b/doc/salome/gui/GEOM/input/pictures.doc new file mode 100644 index 000000000..de4a44859 --- /dev/null +++ b/doc/salome/gui/GEOM/input/pictures.doc @@ -0,0 +1,12 @@ +/*! + +\page pictures_page Designing shapes from pictures + +Some tools in GEOM allow you to create shapes, basing the design on imported pictures (engineering drawings, nautical charts ...) : + +
            +
          • \subpage import_picture_page, such as engeneering drawings or nautical charts as a support for shape design. +
          • \subpage shape_recognition_page previously imported in the OCC viewer . +
          + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/point_coordinates.doc b/doc/salome/gui/GEOM/input/point_coordinates.doc new file mode 100644 index 000000000..d83f62ee1 --- /dev/null +++ b/doc/salome/gui/GEOM/input/point_coordinates.doc @@ -0,0 +1,15 @@ +/*! + +\page point_coordinates_page Point Coordinates + +Returns the coordinates of a point. + +Result: Point coordinates (X, Y, Z) in 3D space in the form of Python Tuple. +\nTUI Command: geompy.PointCoordinates(Point), +where \em Point is a point whose coordinates are inquired. + +See also a \ref tui_point_coordinates_page "TUI example". + +\image html measures1.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/repairing_operations.doc b/doc/salome/gui/GEOM/input/repairing_operations.doc index 3e10dcd07..96ff03ae0 100644 --- a/doc/salome/gui/GEOM/input/repairing_operations.doc +++ b/doc/salome/gui/GEOM/input/repairing_operations.doc @@ -1,6 +1,6 @@ /*! -\page repairing_operations_page Repairing Operations +\page repairing_operations_page Repairing geometrical objects Repairing operations improve the shapes, processing them with complex algorithms: diff --git a/doc/salome/gui/GEOM/input/shape_recognition.doc b/doc/salome/gui/GEOM/input/shape_recognition.doc new file mode 100644 index 000000000..0a894c54d --- /dev/null +++ b/doc/salome/gui/GEOM/input/shape_recognition.doc @@ -0,0 +1,98 @@ +/*! + +\page shape_recognition_page Shape recognition from a picture + +\note +
            +
          1. This functionality is not fully operational yet. It is provided for testing purpose and because it might already be helpful in some situations. + (Do not hesitate to make feedbacks on possible bugs ...)
          2. + +
          3. The functionality is only available if SALOME has been built with the optional prerequisite OpenCV.
          4. +
          + +This tool allows you to automatically create geometrical shapes from +pictures with help of shape recognition algorithms. +Contours or Corners can be built. + +\b Example: + +Detection of the cost line on a nautical chart + +\image html contour_detection_example2.png + +\n + +To use the Shape recogition tool: + +
            +
          1. \ref import_picture_page "Import a picture" in the view
          2. + +
          3. Select New Entity -> Shape Recognition or click on \image html feature_detect.png
          4. + +
          + + + +Then you can choose to create either contours or corners from this picture. + +\n + +To create Contours : + +
            +
          1. Select in the Picture field a previously imported picture.
          2. + +
          3. Click on \image html occ_view_camera_dump.png
          4. + +
          5. Draw a rectangle in the zone whose contour is to be found. The + zone will be identified by the colors of this Filtering Sample. + + \b Example: + + In the picture shown above, the contours have been drawn basing on + the sample, containing white and violet color, thus all white and + violet areas in the picture are included in the outlined zone. + + \image html feature_detection_dlg3.png + + + +
          6. Output type + +
              + +
            • \b Spline : The \b result will be a \b Compound of \b Edges. Each contour will be a single \b edge based on a B-Spline curve (it will be smooth).
            • + +
            • \b Polyline : The \b result will be a \b Compound of \b Wires. Each contour will be a wire made of lines (i.e. a \b Polygon)
            • + +
            + + In both cases each contour can then be retrieved by an explode operation with the appropriate subshape type. + +
          7. + + \note It is better to use the \b Spline output type unless you want to find the frontier of a polygon (rectangle ...) + +
          + + +\n + +To create Corners : + +
            +
          1. In the Picture field select a previously imported picture.
          2. + +
          3. Apply
          4. + + The \b Result will be a \b Compound of \b Vertices + + \image html feature_detection_dlg2.png + + + +
          + + + +*/ diff --git a/doc/salome/gui/GEOM/input/tolerance.doc b/doc/salome/gui/GEOM/input/tolerance.doc new file mode 100644 index 000000000..3b84055f8 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tolerance.doc @@ -0,0 +1,17 @@ +/*! + +\page tolerance_page Tolerance + +\n Returns the maximum and the minimum tolerance for the selected +geometrical object. + +\n Result: Displays the tolerance values (FaceMinTol, +FaceMaxTol, EgdeMinTol, EgdeMaxTol, VertexMinTol, VertexMaxTol). +\n TUI Command: geompy.Tolerance(Shape), where \em Shape +is a shape for which minimal and maximal tolerances are returned. + +See also a \ref tui_tolerance_page "TUI example". + +\image html new-tolerance.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/transformation_operations.doc b/doc/salome/gui/GEOM/input/transformation_operations.doc index fedea7cfc..075973737 100644 --- a/doc/salome/gui/GEOM/input/transformation_operations.doc +++ b/doc/salome/gui/GEOM/input/transformation_operations.doc @@ -18,14 +18,6 @@ which allow to:
        • Create a \subpage projection_operation_page "Projection" of an object on a face.
        • Create a simultaneous \subpage multi_translation_operation_page "Translation in several directions".
        • Create a simultaneous \subpage multi_rotation_operation_page
        • "Rotation in several directions". -
        • Produce a \subpage fillet_operation_page "Fillet" on the selected - edges of an object.
        • -
        • Produce a \subpage fillet1d_operation_page "1D Fillet" on the - corners of a Wire with Planar Edges.
        • -
        • Produce a \subpage fillet2d_operation_page "2D Fillet" on the corners of a Planar Face.
        • -
        • Produce a \subpage chamfer_operation_page "Chamfer" on the selected edges of an object.
        • -
        • Remove matter from an object by producing an \subpage extruded_cut_operation_page "Extruded Cut".
        • -
        • Add matter to an object by producing an \subpage extruded_boss_operation_page "Extruded Boss".
        */ diff --git a/doc/salome/gui/GEOM/input/transforming_geom_objs.doc b/doc/salome/gui/GEOM/input/transforming_geom_objs.doc index 741df2948..573182a4d 100644 --- a/doc/salome/gui/GEOM/input/transforming_geom_objs.doc +++ b/doc/salome/gui/GEOM/input/transforming_geom_objs.doc @@ -6,11 +6,16 @@ The objects created in Salome can be processed with Transformation operations, which can be classified into:
          -
        • \subpage using_boolean_operations_page "Boolean operations" using -Boolean logical operators.
        • +
        • \subpage using_boolean_operations_page "Boolean operations", which allow combining objects +with boolean logical operators.
        • \subpage transformation_operations_page "Transformation operations", which modify shape or location of the selected object.
        • +
        • \subpage features_page "Features", +which allow adding or removing matter from an object.
        • + +
        • Operations with \subpage blocks_operations_page "Blocks".
        • +
        • \subpage partition_page "Partition" operation, which creates a compound by intersection of several shapes with a tool object or a plane.
        • \subpage archimede_page "Archimede" operation, which creates a @@ -21,8 +26,6 @@ special case of \b Explode operation.
        • \subpage shared_shapes_page "Get shared shapes" operation, a special case of \b Explode operation.
        • -
        • Operations with \subpage blocks_operations_page "Blocks".
        • -
        • \subpage restore_presentation_parameters_page "Restore presentation parameters". This cross-operation functionality allows the resulting shape to diff --git a/doc/salome/gui/GEOM/input/tui_angle.doc b/doc/salome/gui/GEOM/input/tui_angle.doc new file mode 100644 index 000000000..120000a68 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_angle.doc @@ -0,0 +1,53 @@ +/*! + +\page tui_angle_page Angle + +\code +import salome +salome.salome_init() + +import math +import geompy +geompy.init_geom(salome.myStudy) + +OX = geompy.MakeVectorDXDYDZ(10, 0,0) +OXY = geompy.MakeVectorDXDYDZ(10,10,0) + +# in one plane +Angle = geompy.GetAngle(OX, OXY) + +print "\nAngle between OX and OXY = ", Angle +if math.fabs(Angle - 45.0) > 1e-05: + print " Error: returned angle is", Angle, "while must be 45.0" + pass + +Angle = geompy.GetAngleRadians(OX, OXY) + +print "\nAngle between OX and OXY in radians = ", Angle +if math.fabs(Angle - math.pi/4) > 1e-05: + print " Error: returned angle is", Angle, "while must be pi/4" + pass + +# not in one plane +OXY_shift = geompy.MakeTranslation(OXY,10,-10,20) +Angle = geompy.GetAngle(OX, OXY_shift) + +print "Angle between OX and OXY_shift = ", Angle +if math.fabs(Angle - 45.0) > 1e-05: + print " Error: returned angle is", Angle, "while must be 45.0" + pass + +# not linear +pnt1 = geompy.MakeVertex(0, 0, 0) +pnt2 = geompy.MakeVertex(10, 0, 0) +pnt3 = geompy.MakeVertex(20, 10, 0) +arc = geompy.MakeArc(pnt1, pnt2, pnt3) +Angle = geompy.GetAngle(OX, arc) + +if (math.fabs(Angle + 1.0) > 1e-6 or geompy.MeasuOp.IsDone()): + print "Error. Angle must not be computed on curvilinear edges" + pass + +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_basic_properties.doc b/doc/salome/gui/GEOM/input/tui_basic_properties.doc new file mode 100644 index 000000000..4c01ec438 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_basic_properties.doc @@ -0,0 +1,26 @@ +/*! + +\page tui_basic_properties_page Basic Properties + +\code +import geompy +import math + +# create a box +box = geompy.MakeBoxDXDYDZ(100,30,100) +props = geompy.BasicProperties(box) +print "\nBox 100x30x100 Basic Properties:" +print " Wires length: ", props[0] +print " Surface area: ", props[1] +print " Volume : ", props[2] +length = math.sqrt((props[0] - 1840)*(props[0] - 1840)) +area = math.sqrt((props[1] - 32000)*(props[1] - 32000)) +volume = math.sqrt((props[2] - 300000)*(props[2] - 300000)) +if length > 1e-7 or area > 1e-7 or volume > 1e-7: + print "While must be:" + print " Wires length: ", 1840 + print " Surface area: ", 32000 + print " Volume : ", 300000. +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_bounding_box.doc b/doc/salome/gui/GEOM/input/tui_bounding_box.doc new file mode 100644 index 000000000..232ab13b4 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_bounding_box.doc @@ -0,0 +1,17 @@ +/*! + +\page tui_bounding_box_page Bounding Box + +\code +import geompy + +# create a box +box = geompy.MakeBoxDXDYDZ(100,30,100) +bb = geompy.BoundingBox(box) +print "\nBounding Box of box 100x30x100:" +print " Xmin = ", bb[0], ", Xmax = ", bb[1] +print " Ymin = ", bb[2], ", Ymax = ", bb[3] +print " Zmin = ", bb[4], ", Zmax = ", bb[5] +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_center_of_mass.doc b/doc/salome/gui/GEOM/input/tui_center_of_mass.doc new file mode 100644 index 000000000..9c9b6f659 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_center_of_mass.doc @@ -0,0 +1,25 @@ +/*! + +\page tui_center_of_mass_page Center of masses + +\code +import geompy +import math + +# create a box +box = geompy.MakeBoxDXDYDZ(100,30,100) +cm = geompy.MakeCDG(box) +if cm is None: + raise RuntimeError, "MakeCDG(box) failed" +else: + print "\nCentre of gravity of box has been successfully obtained:" + coords = geompy.PointCoordinates(cm) + print "(", coords[0], ", ", coords[1], ", ", coords[2], ")" + dx = math.sqrt((coords[0] - 50)*(coords[0] - 50)) + dy = math.sqrt((coords[1] - 15)*(coords[1] - 15)) + dz = math.sqrt((coords[2] - 50)*(coords[2] - 50)) + if dx > 1e-7 or dy > 1e-7 or dz > 1e-7: + print "But must be (50, 15, 50)" +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_check_compound_of_blocks.doc b/doc/salome/gui/GEOM/input/tui_check_compound_of_blocks.doc new file mode 100644 index 000000000..1bd2fe9bb --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_check_compound_of_blocks.doc @@ -0,0 +1,27 @@ +/*! + +\page tui_check_compound_of_blocks_page Check Compound of Blocks + +\code +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +# create boxes +box1 = geompy.MakeBox(0,0,0,100,50,100) +box2 = geompy.MakeBox(100,0,0,250,50,100) + +# make a compound +compound = geompy.MakeCompound([box1, box2]) + +# glue the faces of the compound +tolerance = 1e-5 +glue = geompy.MakeGlueFaces(compound, tolerance) +IsValid = geompy.CheckCompoundOfBlocks(glue) +if IsValid == 0: + raise RuntimeError, "Invalid compound created" +else: + print "\nCompound is valid" +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_check_self_intersections.doc b/doc/salome/gui/GEOM/input/tui_check_self_intersections.doc new file mode 100644 index 000000000..e49de0a30 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_check_self_intersections.doc @@ -0,0 +1,17 @@ +/*! + +\page tui_check_self_intersections_page Detect Self-intersections + +\code +import geompy + +# create a box +box = geompy.MakeBoxDXDYDZ(100,30,100) +IsValid = geompy.CheckSelfIntersections(box) +if IsValid == 0: + raise RuntimeError, "Box with self-intersections created" +else: + print "\nBox is valid" +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_check_shape.doc b/doc/salome/gui/GEOM/input/tui_check_shape.doc new file mode 100644 index 000000000..f9ca32c97 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_check_shape.doc @@ -0,0 +1,17 @@ +/*! + +\page tui_check_shape_page Check Shape + +\code +import geompy + +# create a box +box = geompy.MakeBoxDXDYDZ(100,30,100) +IsValid = geompy.CheckShape(box) +if IsValid == 0: + raise RuntimeError, "Invalid box created" +else: + print "\nBox is valid" +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_free_boundaries.doc b/doc/salome/gui/GEOM/input/tui_free_boundaries.doc new file mode 100644 index 000000000..b764df1b2 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_free_boundaries.doc @@ -0,0 +1,85 @@ +/*! + +\page tui_free_boundaries_page Check Free Boundaries + +\code +import os +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +# create boxes +box1 = geompy.MakeBox(0,0,0,100,50,100) +box2 = geompy.MakeBox(100,0,0,250,50,100) + +# make a compound +compound = geompy.MakeCompound([box1, box2]) + +# import from *.brep +ImportFromBREP = geompy.ImportBREP(os.getenv("DATA_DIR")+"/Shapes/Brep/flight_solid.brep") + +# get a face +faces = geompy.SubShapeAllSortedCentres(ImportFromBREP, geompy.ShapeType["FACE"]) + +# get the free boundary for face 32 +Res = geompy.GetFreeBoundary(faces[32]) +isSuccess = Res[0] +ClosedWires = Res[1] +OpenWires = Res[2] + +if isSuccess == 1 : + print "Checking free boudaries is OK." +else : + print "Checking free boudaries is KO!" +print "len(ClosedWires) = ", len(ClosedWires) + +i = 0 +for wire in ClosedWires : + wire_name = "Face 32 -> Close wires : WIRE %d"%(i+1) + geompy.addToStudy(ClosedWires[i], wire_name) + if i < len(ClosedWires) : + i = i+ 1 + +print "len(OpenWires) = ", len(OpenWires) + +i = 0 +for wire in OpenWires : + wire_name = "Face 32 -> Open wires : WIRE %d"%(i+1) + geompy.addToStudy(OpenWires[i], wire_name) + if i < len(OpenWires) : + i = i+ 1 + +# get the free boundary for face 41 +Res = geompy.GetFreeBoundary(faces[41]) +isSuccess = Res[0] +ClosedWires = Res[1] +OpenWires = Res[2] + +if isSuccess == 1 : + print "Checking free boudaries is OK." +else : + print "Checking free boudaries is KO!" +print "len(ClosedWires) = ", len(ClosedWires) + +i = 0 +for wire in ClosedWires : + wire_name = "Face 41 -> Close wires : WIRE %d"%(i+1) + geompy.addToStudy(ClosedWires[i], wire_name) + if i < len(ClosedWires) : + i = i+ 1 + +print "len(OpenWires) = ", len(OpenWires) + +i = 0 +for wire in OpenWires : + wire_name = "Face 41 -> Open wires : WIRE %d"%(i+1) + geompy.addToStudy(OpenWires[i], wire_name) + if i < len(OpenWires) : + i = i+ 1 + +# add the imported object to the study +id_ImportFromBREP = geompy.addToStudy(ImportFromBREP, "ImportFromBREP") +salome.sg.updateObjBrowser(1) +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_free_faces.doc b/doc/salome/gui/GEOM/input/tui_free_faces.doc new file mode 100644 index 000000000..7fd302288 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_free_faces.doc @@ -0,0 +1,52 @@ +/*! + +\page tui_free_faces_page Check Free Faces + +\code +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +# create a vertex and a vector +p1 = geompy.MakeVertex(35, 35, 0) +p2 = geompy.MakeVertex(35, 35, 50) +v = geompy.MakeVector(p1, p2) + +# create a cylinder +cylinder = geompy.MakeCone(p1, v, 30, 20, 20) + +# create a cone +cone = geompy.MakeCone(p1, v, 70, 40, 60) + +# make cut +cut = geompy.MakeCut(cone, cylinder) + +# get faces as sub-shapes +faces = [] +faces = geompy.SubShapeAllSortedCentres(cut, geompy.ShapeType["FACE"]) +f_2 = geompy.GetSubShapeID(cut, faces[0]) + +# remove one face from the shape +cut_without_f_2 = geompy.SuppressFaces(cut, [f_2]) + +# suppress the specified wire +result = geompy.GetFreeFacesIDs(cut_without_f_2) +print "A number of free faces is ", len(result) + +# add objects in the study +all_faces = geompy.SubShapeAllSortedCentres(cut_without_f_2, geompy.ShapeType["FACE"]) +for face in all_faces : + sub_shape_id = geompy.GetSubShapeID(cut_without_f_2, face) + if result.count(sub_shape_id) > 0 : + face_name = "Free face %d"%(sub_shape_id) + geompy.addToStudy(face, face_name) + +# in this example all faces from cut_without_f_2 are free +id_cut_without_f_2 = geompy.addToStudy(cut_without_f_2, "Cut without f_2") + +# display the results +gg.createAndDisplayGO(id_cut_without_f_2) +gg.setDisplayMode(id_cut_without_f_2,1) +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_inertia.doc b/doc/salome/gui/GEOM/input/tui_inertia.doc new file mode 100644 index 000000000..29530e292 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_inertia.doc @@ -0,0 +1,20 @@ +/*! + +\page tui_inertia_page Inertia + +\code +import geompy +import math + +# create a box +box = geompy.MakeBoxDXDYDZ(100,30,100) +In = geompy.Inertia(box) +print "\nInertia matrix of box 100x30x100:" +print " (", In[0], ", ", In[1], ", ", In[2], ")" +print " (", In[3], ", ", In[4], ", ", In[5], ")" +print " (", In[6], ", ", In[7], ", ", In[8], ")" +print "Main moments of inertia of box 100x30x100:" +print " Ix = ", In[9], ", Iy = ", In[10], ", Iz = ", In[11] +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_measurement_tools.doc b/doc/salome/gui/GEOM/input/tui_measurement_tools.doc index c36edc455..4ce9b4239 100644 --- a/doc/salome/gui/GEOM/input/tui_measurement_tools.doc +++ b/doc/salome/gui/GEOM/input/tui_measurement_tools.doc @@ -2,425 +2,22 @@ \page tui_measurement_tools_page Measurement Tools -

          Point Coordinates

          - -\code -import math -import geompy - -# create a point -point = geompy.MakeVertex(15., 23., 80.) - -# get the coordinates of the point and check its values -coords = geompy.PointCoordinates(point) - -# check the obtained coordinate values -tolerance = 1.e-07 -def IsEqual(val1, val2): return (math.fabs(val1 - val2) < tolerance) - -if IsEqual(coords[0], 15.) and IsEqual(coords[1], 23.) and IsEqual(coords[2], 80.): - print "All values are OK." -else : - print "Coordinates of point must be (15, 23, 80), but returned (", - print coords[0], ", ", coords[1], ", ", coords[2], ")" - pass -\endcode - -

          Basic Properties

          - -\code -import geompy -import math - -# create a box -box = geompy.MakeBoxDXDYDZ(100,30,100) -props = geompy.BasicProperties(box) -print "\nBox 100x30x100 Basic Properties:" -print " Wires length: ", props[0] -print " Surface area: ", props[1] -print " Volume : ", props[2] -length = math.sqrt((props[0] - 1840)*(props[0] - 1840)) -area = math.sqrt((props[1] - 32000)*(props[1] - 32000)) -volume = math.sqrt((props[2] - 300000)*(props[2] - 300000)) -if length > 1e-7 or area > 1e-7 or volume > 1e-7: - print "While must be:" - print " Wires length: ", 1840 - print " Surface area: ", 32000 - print " Volume : ", 300000. -\endcode - -

          Center of masses

          - -\code -import geompy -import math - -# create a box -box = geompy.MakeBoxDXDYDZ(100,30,100) -cm = geompy.MakeCDG(box) -if cm is None: - raise RuntimeError, "MakeCDG(box) failed" -else: - print "\nCentre of gravity of box has been successfully obtained:" - coords = geompy.PointCoordinates(cm) - print "(", coords[0], ", ", coords[1], ", ", coords[2], ")" - dx = math.sqrt((coords[0] - 50)*(coords[0] - 50)) - dy = math.sqrt((coords[1] - 15)*(coords[1] - 15)) - dz = math.sqrt((coords[2] - 50)*(coords[2] - 50)) - if dx > 1e-7 or dy > 1e-7 or dz > 1e-7: - print "But must be (50, 15, 50)" -\endcode - -

          Get vertex by index

          - -\code -import geompy - -# Create auxiliary objects -Vertex_1 = geompy.MakeVertex(0, 0, 0) -Vertex_2 = geompy.MakeVertex(10, 20, 0) -Vertex_3 = geompy.MakeVertex(0, 40, 0) -Vertex_4 = geompy.MakeVertex(-10, 60, 0) -Vertex_5 = geompy.MakeVertex(0, 80, 0) -Curve_1 = geompy.MakeInterpol([Vertex_1, Vertex_2, Vertex_3]) -Curve_2 = geompy.MakeInterpol([Vertex_5, Vertex_4, Vertex_3]) -Wire_1 = geompy.MakeWire([Curve_1, Curve_2]) -Reversed_Wire = geompy.ChangeOrientationShellCopy(Wire_1) - -# Get The vertexes from Reversed Wire by different functions -vertex_0 = geompy.GetFirstVertex(Reversed_Wire) -vertex_1 = geompy.GetVertexByIndex(Reversed_Wire, 1) -vertex_2 = geompy.GetLastVertex(Reversed_Wire) - -# Publish objects in study -geompy.addToStudy( Wire_1, "Wire_1" ) -geompy.addToStudy( Reversed_Wire, "Reversed_Wire" ) -geompy.addToStudy( vertex_0, "vertex_0" ) -geompy.addToStudy( vertex_1, "vertex_1" ) -geompy.addToStudy( vertex_2, "vertex_2" ) -\endcode - -

          Inertia

          - -\code -import geompy -import math - -# create a box -box = geompy.MakeBoxDXDYDZ(100,30,100) -In = geompy.Inertia(box) -print "\nInertia matrix of box 100x30x100:" -print " (", In[0], ", ", In[1], ", ", In[2], ")" -print " (", In[3], ", ", In[4], ", ", In[5], ")" -print " (", In[6], ", ", In[7], ", ", In[8], ")" -print "Main moments of inertia of box 100x30x100:" -print " Ix = ", In[9], ", Iy = ", In[10], ", Iz = ", In[11] -\endcode - -

          Check Free Boundaries

          - -\code -import os -import geompy -import salome -gg = salome.ImportComponentGUI("GEOM") - -# create boxes -box1 = geompy.MakeBox(0,0,0,100,50,100) -box2 = geompy.MakeBox(100,0,0,250,50,100) - -# make a compound -compound = geompy.MakeCompound([box1, box2]) - -# import from *.brep -ImportFromBREP = geompy.ImportBREP(os.getenv("DATA_DIR")+"/Shapes/Brep/flight_solid.brep") - -# get a face -faces = geompy.SubShapeAllSortedCentres(ImportFromBREP, geompy.ShapeType["FACE"]) - -# get the free boundary for face 32 -Res = geompy.GetFreeBoundary(faces[32]) -isSuccess = Res[0] -ClosedWires = Res[1] -OpenWires = Res[2] - -if isSuccess == 1 : - print "Checking free boudaries is OK." -else : - print "Checking free boudaries is KO!" -print "len(ClosedWires) = ", len(ClosedWires) - -i = 0 -for wire in ClosedWires : - wire_name = "Face 32 -> Close wires : WIRE %d"%(i+1) - geompy.addToStudy(ClosedWires[i], wire_name) - if i < len(ClosedWires) : - i = i+ 1 - -print "len(OpenWires) = ", len(OpenWires) - -i = 0 -for wire in OpenWires : - wire_name = "Face 32 -> Open wires : WIRE %d"%(i+1) - geompy.addToStudy(OpenWires[i], wire_name) - if i < len(OpenWires) : - i = i+ 1 - -# get the free boundary for face 41 -Res = geompy.GetFreeBoundary(faces[41]) -isSuccess = Res[0] -ClosedWires = Res[1] -OpenWires = Res[2] - -if isSuccess == 1 : - print "Checking free boudaries is OK." -else : - print "Checking free boudaries is KO!" -print "len(ClosedWires) = ", len(ClosedWires) - -i = 0 -for wire in ClosedWires : - wire_name = "Face 41 -> Close wires : WIRE %d"%(i+1) - geompy.addToStudy(ClosedWires[i], wire_name) - if i < len(ClosedWires) : - i = i+ 1 - -print "len(OpenWires) = ", len(OpenWires) - -i = 0 -for wire in OpenWires : - wire_name = "Face 41 -> Open wires : WIRE %d"%(i+1) - geompy.addToStudy(OpenWires[i], wire_name) - if i < len(OpenWires) : - i = i+ 1 - -# add the imported object to the study -id_ImportFromBREP = geompy.addToStudy(ImportFromBREP, "ImportFromBREP") -salome.sg.updateObjBrowser(1) -\endcode - - -

          Check Free Faces

          - -\code -import geompy -import salome -gg = salome.ImportComponentGUI("GEOM") - -# create a vertex and a vector -p1 = geompy.MakeVertex(35, 35, 0) -p2 = geompy.MakeVertex(35, 35, 50) -v = geompy.MakeVector(p1, p2) - -# create a cylinder -cylinder = geompy.MakeCone(p1, v, 30, 20, 20) - -# create a cone -cone = geompy.MakeCone(p1, v, 70, 40, 60) - -# make cut -cut = geompy.MakeCut(cone, cylinder) - -# get faces as sub-shapes -faces = [] -faces = geompy.SubShapeAllSortedCentres(cut, geompy.ShapeType["FACE"]) -f_2 = geompy.GetSubShapeID(cut, faces[0]) - -# remove one face from the shape -cut_without_f_2 = geompy.SuppressFaces(cut, [f_2]) - -# suppress the specified wire -result = geompy.GetFreeFacesIDs(cut_without_f_2) -print "A number of free faces is ", len(result) - -# add objects in the study -all_faces = geompy.SubShapeAllSortedCentres(cut_without_f_2, geompy.ShapeType["FACE"]) -for face in all_faces : - sub_shape_id = geompy.GetSubShapeID(cut_without_f_2, face) - if result.count(sub_shape_id) > 0 : - face_name = "Free face %d"%(sub_shape_id) - geompy.addToStudy(face, face_name) - -# in this example all faces from cut_without_f_2 are free -id_cut_without_f_2 = geompy.addToStudy(cut_without_f_2, "Cut without f_2") - -# display the results -gg.createAndDisplayGO(id_cut_without_f_2) -gg.setDisplayMode(id_cut_without_f_2,1) -\endcode - - - -

          Bounding Box

          - -\code -import geompy - -# create a box -box = geompy.MakeBoxDXDYDZ(100,30,100) -bb = geompy.BoundingBox(box) -print "\nBounding Box of box 100x30x100:" -print " Xmin = ", bb[0], ", Xmax = ", bb[1] -print " Ymin = ", bb[2], ", Ymax = ", bb[3] -print " Zmin = ", bb[4], ", Zmax = ", bb[5] -\endcode - -

          Minimal Distance

          - -\code -import geompy - -# create boxes -box1 = geompy.MakeBoxDXDYDZ(100,30,100) -box2 = geompy.MakeBox(105,0,0,200,30,100) -min_dist = geompy.MinDistance(box1,box2) -print "\nMinimal distance between box1 and box2 = ", min_dist -\endcode - -

          Tolerance

          - -\code -import geompy - -# create a box -box = geompy.MakeBoxDXDYDZ(100,30,100) -Toler = geompy.Tolerance(box) -print "\nBox 100x30x100 tolerance:" -print " Face min. tolerance: ", Toler[0] -print " Face max. tolerance: ", Toler[1] -print " Edge min. tolerance: ", Toler[2] -print " Edge max. tolerance: ", Toler[3] -print " Vertex min. tolerance: ", Toler[4] -print " Vertex max. tolerance: ", Toler[5] -\endcode - -

          Angle

          - -\code -import salome -salome.salome_init() - -import math -import geompy -geompy.init_geom(salome.myStudy) - -OX = geompy.MakeVectorDXDYDZ(10, 0,0) -OXY = geompy.MakeVectorDXDYDZ(10,10,0) - -# in one plane -Angle = geompy.GetAngle(OX, OXY) - -print "\nAngle between OX and OXY = ", Angle -if math.fabs(Angle - 45.0) > 1e-05: - print " Error: returned angle is", Angle, "while must be 45.0" - pass - -Angle = geompy.GetAngleRadians(OX, OXY) - -print "\nAngle between OX and OXY in radians = ", Angle -if math.fabs(Angle - math.pi/4) > 1e-05: - print " Error: returned angle is", Angle, "while must be pi/4" - pass - -# not in one plane -OXY_shift = geompy.MakeTranslation(OXY,10,-10,20) -Angle = geompy.GetAngle(OX, OXY_shift) - -print "Angle between OX and OXY_shift = ", Angle -if math.fabs(Angle - 45.0) > 1e-05: - print " Error: returned angle is", Angle, "while must be 45.0" - pass - -# not linear -pnt1 = geompy.MakeVertex(0, 0, 0) -pnt2 = geompy.MakeVertex(10, 0, 0) -pnt3 = geompy.MakeVertex(20, 10, 0) -arc = geompy.MakeArc(pnt1, pnt2, pnt3) -Angle = geompy.GetAngle(OX, arc) - -if (math.fabs(Angle + 1.0) > 1e-6 or geompy.MeasuOp.IsDone()): - print "Error. Angle must not be computed on curvilinear edges" - pass - -\endcode - - -

          What Is

          - -\code -import geompy - -# create a box -box = geompy.MakeBoxDXDYDZ(100,30,100) -Descr = geompy.WhatIs(box) -print "\nBox 100x30x100 description:" -print Descr -\endcode - -

          NbShapes and ShapeInfo

          - -\code -import geompy - -# create a box -box = geompy.MakeBoxDXDYDZ(100,30,100) -nbSolids = geompy.NbShapes(box, geompy.ShapeType["SOLID"]) -print "\nBox 100x30x100 quantity of solids:", nbSolids -boxInfo = geompy.ShapeInfo(box) -print "\nBox 100x30x100 shapes:" -print boxInfo -\endcode - -

          Check Shape

          - -\code -import geompy - -# create a box -box = geompy.MakeBoxDXDYDZ(100,30,100) -IsValid = geompy.CheckShape(box) -if IsValid == 0: - raise RuntimeError, "Invalid box created" -else: - print "\nBox is valid" -\endcode - -

          Detect Self-intersections

          - -\code -import geompy - -# create a box -box = geompy.MakeBoxDXDYDZ(100,30,100) -IsValid = geompy.CheckSelfIntersections(box) -if IsValid == 0: - raise RuntimeError, "Box with self-intersections created" -else: - print "\nBox is valid" -\endcode - -

          Check Compound of Blocks

          - -\code -import geompy -import salome -gg = salome.ImportComponentGUI("GEOM") - -# create boxes -box1 = geompy.MakeBox(0,0,0,100,50,100) -box2 = geompy.MakeBox(100,0,0,250,50,100) - -# make a compound -compound = geompy.MakeCompound([box1, box2]) - -# glue the faces of the compound -tolerance = 1e-5 -glue = geompy.MakeGlueFaces(compound, tolerance) -IsValid = geompy.CheckCompoundOfBlocks(glue) -if IsValid == 0: - raise RuntimeError, "Invalid compound created" -else: - print "\nCompound is valid" -\endcode +
            +
          • \subpage tui_point_coordinates_page
          • +
          • \subpage tui_basic_properties_page
          • +
          • \subpage tui_center_of_mass_page
          • +
          • \subpage tui_inertia_page
          • +
          • \subpage tui_normal_face_page
          • +
          • \subpage tui_bounding_box_page
          • +
          • \subpage tui_min_distance_page
          • +
          • \subpage tui_angle_page
          • +
          • \subpage tui_tolerance_page
          • +
          • \subpage tui_whatis_page
          • +
          • \subpage tui_free_boundaries_page
          • +
          • \subpage tui_free_faces_page
          • +
          • \subpage tui_check_shape_page
          • +
          • \subpage tui_check_compound_of_blocks_page
          • +
          • \subpage tui_check_self_intersections_page
          • +
          */ diff --git a/doc/salome/gui/GEOM/input/tui_min_distance.doc b/doc/salome/gui/GEOM/input/tui_min_distance.doc new file mode 100644 index 000000000..e26e219f9 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_min_distance.doc @@ -0,0 +1,15 @@ +/*! + +\page tui_min_distance_page Minimal Distance + +\code +import geompy + +# create boxes +box1 = geompy.MakeBoxDXDYDZ(100,30,100) +box2 = geompy.MakeBox(105,0,0,200,30,100) +min_dist = geompy.MinDistance(box1,box2) +print "\nMinimal distance between box1 and box2 = ", min_dist +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_normal_face.doc b/doc/salome/gui/GEOM/input/tui_normal_face.doc new file mode 100644 index 000000000..0c81116a8 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_normal_face.doc @@ -0,0 +1,23 @@ +/*! + +\page tui_normal_face_page Normal to a Face + +\code +import geompy +import math + +# create a box +box = geompy.MakeBoxDXDYDZ(100,30,100) + +faces = geompy.SubShapeAllSortedCentres(box, geompy.ShapeType["FACE"]) +face0 = faces[0] +vnorm = geompy.GetNormal(face0) +if vnorm is None: + raise RuntimeError, "GetNormal(face0) failed" +else: + geompy.addToStudy(face0, "Face0") + geompy.addToStudy(vnorm, "Normale to Face0") + print "\nNormale of face has been successfully obtained" +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_point_coordinates.doc b/doc/salome/gui/GEOM/input/tui_point_coordinates.doc new file mode 100644 index 000000000..0f138367b --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_point_coordinates.doc @@ -0,0 +1,27 @@ +/*! + +\page tui_point_coordinates_page Point Coordinates + +\code +import math +import geompy + +# create a point +point = geompy.MakeVertex(15., 23., 80.) + +# get the coordinates of the point and check its values +coords = geompy.PointCoordinates(point) + +# check the obtained coordinate values +tolerance = 1.e-07 +def IsEqual(val1, val2): return (math.fabs(val1 - val2) < tolerance) + +if IsEqual(coords[0], 15.) and IsEqual(coords[1], 23.) and IsEqual(coords[2], 80.): + print "All values are OK." +else : + print "Coordinates of point must be (15, 23, 80), but returned (", + print coords[0], ", ", coords[1], ", ", coords[2], ")" + pass +\endcode + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/tui_swig_examples.doc b/doc/salome/gui/GEOM/input/tui_swig_examples.doc index 43b003d42..4385c1174 100644 --- a/doc/salome/gui/GEOM/input/tui_swig_examples.doc +++ b/doc/salome/gui/GEOM/input/tui_swig_examples.doc @@ -6,6 +6,7 @@
        • \subpage tui_test_others_page
        • \subpage tui_test_spanner_page
        • \subpage tui_test_all_page
        • +
        • \subpage tui_test_measures_page
        */ diff --git a/doc/salome/gui/GEOM/input/tui_test_measures.doc b/doc/salome/gui/GEOM/input/tui_test_measures.doc new file mode 100644 index 000000000..90dafb538 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_test_measures.doc @@ -0,0 +1,54 @@ +/*! + +\page tui_test_measures_page GEOM_TestMeasures.py + +\anchor swig_TestMeasures +

        GEOM_TestMeasures.py

        + +\dontinclude GEOM_TestMeasures.py +\skipline def TestMeasureOperations + +\until PointCoordinates + +\anchor swig_PointCoordinates +\until CheckShape + +\anchor swig_CheckShape +\until MakeCompound + +\anchor swig_CheckSelfIntersections +\until WhatIs + +\anchor swig_WhatIs +\until BasicProperties + +\anchor swig_BasicProperties +\until BoundingBox + +\anchor swig_BoundingBox +\until Inertia + +\anchor swig_Inertia +\until Tolerance + +\anchor swig_Tolerance +\until MakeCDG + +\anchor swig_MakeCDG +\until But must be + +\until face0 + +\anchor swig_GetNormal +\until MinDistance + +\anchor swig_MinDistance +\until in one plane + +\anchor swig_GetAngle +\until Error + +\anchor swig_GetAngleRadians +\until pass + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_tolerance.doc b/doc/salome/gui/GEOM/input/tui_tolerance.doc new file mode 100644 index 000000000..55151302a --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_tolerance.doc @@ -0,0 +1,20 @@ +/*! + +\page tui_tolerance_page Tolerance + +\code +import geompy + +# create a box +box = geompy.MakeBoxDXDYDZ(100,30,100) +Toler = geompy.Tolerance(box) +print "\nBox 100x30x100 tolerance:" +print " Face min. tolerance: ", Toler[0] +print " Face max. tolerance: ", Toler[1] +print " Edge min. tolerance: ", Toler[2] +print " Edge max. tolerance: ", Toler[3] +print " Vertex min. tolerance: ", Toler[4] +print " Vertex max. tolerance: ", Toler[5] +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_topological_geom_objs.doc b/doc/salome/gui/GEOM/input/tui_topological_geom_objs.doc new file mode 100644 index 000000000..e314abc85 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_topological_geom_objs.doc @@ -0,0 +1,261 @@ +/*! + +\page tui_topological_geom_objs_page Topological Objects + +\anchor tui_creation_edge +

        Creation of an Edge

        + +\code +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +# +# create edge by two points +# + +# create vertices +p0 = geompy.MakeVertex(0. , 0. , 0. ) +pxyz = geompy.MakeVertex(100., 100., 100.) + +# create an edge +edge = geompy.MakeEdge(p0, pxyz) + +# add object in the study +id_edge = geompy.addToStudy(edge,"Edge_1") + +# display an edge +gg.createAndDisplayGO(id_edge) + +# +# create edge from wire +# + +# create a circle +c = geompy.MakeCircle(None, None, 100) + +# create a wire +w = geompy.MakeWire([c], 1e-07) + +# create an edge from wire +edge = geompy.MakeEdgeWire(w) + +# add object in the study +id_edge = geompy.addToStudy(edge,"Edge_2") + +# display an edge +gg.createAndDisplayGO(id_edge) + +# +# create edge from existing curve and a length +# + +# create a circle +c = geompy.MakeCircle(None, None, 100) + +# create an edge of length 25.0 from the circle +edge = geompy.MakeEdgeOnCurveByLength(c, 25.0) + +# add object in the study +id_edge = geompy.addToStudy(edge,"Edge_3") + +# display an edge +gg.createAndDisplayGO(id_edge) + +\endcode + +\anchor tui_creation_wire +

        Creation of a Wire

        + +\code +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +# create vertices +px = geompy.MakeVertex(100., 0. , 0. ) +py = geompy.MakeVertex(0. , 100., 0. ) +pz = geompy.MakeVertex(0. , 0. , 100.) + +# create a vector from two points +vxy = geompy.MakeVector(px, py) + +# create an arc from three points +arc = geompy.MakeArc(py, pz, px) + +# create a wire +wire = geompy.MakeWire([vxy, arc]) + +# add an object in the study +id_wire = geompy.addToStudy(wire,"Wire") + +# display the wire +gg.createAndDisplayGO(id_wire) +\endcode + +\anchor tui_creation_face +

        Creation of a Face

        + +\code +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +# create vertices +p0 = geompy.MakeVertex(0. , 0. , 0. ) +px = geompy.MakeVertex(100., 0. , 0. ) +py = geompy.MakeVertex(0. , 100., 0. ) +pz = geompy.MakeVertex(0. , 0. , 100.) +pxyz = geompy.MakeVertex(100., 100., 100.) + +# create a vector from two points +vxy = geompy.MakeVector(px, py) + +# create an arc from three points +arc = geompy.MakeArc(py, pz, px) + +# create a wire +wire = geompy.MakeWire([vxy, arc]) + +# create sketchers +sketcher1 = geompy.MakeSketcher("Sketcher:F -100 -100:TT 250 -100:R 0:C 100 150:R 0:L 300:WW", + [100,0,0, 1,1,1, -1,1,0]) +sketcher2 = geompy.MakeSketcher("Sketcher:F 0 0:TT 70 0:TT 70 70:TT 0 70:WW") +sketcher3 = geompy.MakeSketcher("Sketcher:F 20 20:TT 50 20:TT 50 50:TT 20 50:WW") +isPlanarFace = 1 + +# create a face from the wire +face1 = geompy.MakeFace(wire, isPlanarFace) + +# create faces from two wires +face2 = geompy.MakeFaceWires([wire, sketcher1],isPlanarFace) +face3 = geompy.MakeFaces([sketcher2, sketcher3],isPlanarFace) + +# add objects in the study +id_face1 = geompy.addToStudy(face1,"Face1") +id_face2 = geompy.addToStudy(face2,"Face2") +id_face3 = geompy.addToStudy(face3,"Face3") + +# display the faces +gg.createAndDisplayGO(id_face1) +gg.setDisplayMode(id_face1,1) +gg.setTransparency(id_face1,0.2) +gg.createAndDisplayGO(id_face2) +gg.setDisplayMode(id_face2,1) +gg.setTransparency(id_face2,0.2) +gg.createAndDisplayGO(id_face3) +gg.setDisplayMode(id_face3,1) +gg.setTransparency(id_face3,0.2) +\endcode + +\anchor tui_creation_shell +

        Creation of a Shell

        + +\code +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +#create vertices +p0 = geompy.MakeVertex( 0., 0., 0.) +pxyz = geompy.MakeVertex( 5., 5., 40.) + +# create sketchers +sketcher1 = geompy.MakeSketcher("Sketcher:F 0 0:TT 70 0:TT 70 70:TT 0 70:WW") +sketcher2 = geompy.MakeSketcher("Sketcher:F 20 20:TT 50 20:TT 50 50:TT 20 50:WW") +isPlanarFace = 1 + +# create a face from two wires +face = geompy.MakeFaces([sketcher1, sketcher2],isPlanarFace) + +# create a prism +prism = geompy.MakePrism(face, p0, pxyz) + +# explode the prism into faces +prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"]) + +# create a shell from a set of faces +shell = geompy.MakeShell([prism_faces[0], prism_faces[2], prism_faces[3], + prism_faces[7], prism_faces[9]]) + +# add objects in the study +id_shell = geompy.addToStudy(shell,"Shell") + +# display the shell +gg.createAndDisplayGO(id_shell) +gg.setDisplayMode(id_shell,1) +\endcode + +\anchor tui_creation_solid +

        Creation of a Solid

        + +\code +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +#create vertices +p0 = geompy.MakeVertex( 0., 0., 0.) +pz = geompy.MakeVertex( 0., 0., 40.) + +# create sketchers +sketcher = geompy.MakeSketcher("Sketcher:F -50 -50:TT 100 -50:R 0:C 50 70:R 0:L 100:WW") + +# create faces from two wires +face = geompy.MakeFace(sketcher,1) + +# create a prism +prism = geompy.MakePrism(face, p0, pz) + +# explode the prism into faces +prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"]) + +# create a shell from a set of faces +shell = geompy.MakeShell([prism_faces[0], prism_faces[1], + prism_faces[3], prism_faces[4], + prism_faces[5], prism_faces[2]]) + +# create a solid, bounded by the given shells +solid = geompy.MakeSolid([shell]) + +# add objects in the study +id_solid = geompy.addToStudy(solid,"Solid") + +# display the solid +gg.createAndDisplayGO(id_solid) +gg.setDisplayMode(id_solid,1) +\endcode + +\anchor tui_creation_compound +

        Creation of a Compound

        + +\code +import geompy +import salome +gg = salome.ImportComponentGUI("GEOM") + +# create a vertex and a vector +p1 = geompy.MakeVertex( -30., -30., 50.) +p2 = geompy.MakeVertex( -60., -60., 30.) +p3 = geompy.MakeVertex( -30., -30., 10.) + +# create an arc from three points +arc = geompy.MakeArc(p1, p2, p3) +ShapeListCompound = [] +i = 0 +while i <= 3 : + S = geompy.MakeTranslation(arc, i * 50., 0., 0.) + ShapeListCompound.append(S) + i = i + 1 + +# create a compund of the given shapes +compound = geompy.MakeCompound(ShapeListCompound) + +# add object in the study +id_compound = geompy.addToStudy(compound,"Compound") + +# display the compound +gg.createAndDisplayGO(id_compound) +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/tui_whatis.doc b/doc/salome/gui/GEOM/input/tui_whatis.doc new file mode 100644 index 000000000..e89e8bf18 --- /dev/null +++ b/doc/salome/gui/GEOM/input/tui_whatis.doc @@ -0,0 +1,15 @@ +/*! + +\page tui_whatis_page What Is + +\code +import geompy + +# create a box +box = geompy.MakeBoxDXDYDZ(100,30,100) +Descr = geompy.WhatIs(box) +print "\nBox 100x30x100 description:" +print Descr +\endcode + +*/ diff --git a/doc/salome/gui/GEOM/input/using_boolean_operations.doc b/doc/salome/gui/GEOM/input/using_boolean_operations.doc index cfbb5f444..d0bca5b6a 100644 --- a/doc/salome/gui/GEOM/input/using_boolean_operations.doc +++ b/doc/salome/gui/GEOM/input/using_boolean_operations.doc @@ -1,6 +1,6 @@ /*! -\page using_boolean_operations_page Using Boolean Operations +\page using_boolean_operations_page Boolean Operations For detail description of the Boolean operations please refer to this document. diff --git a/doc/salome/gui/GEOM/input/using_measurement_tools.doc b/doc/salome/gui/GEOM/input/using_measurement_tools.doc index 9f30de2a4..7e18a1ddf 100644 --- a/doc/salome/gui/GEOM/input/using_measurement_tools.doc +++ b/doc/salome/gui/GEOM/input/using_measurement_tools.doc @@ -1,282 +1,35 @@ /*! -\page using_measurement_tools_page Using measurement tools +\page using_measurement_tools_page Measuring objects properties \n Measurement tools in GEOM are necessary for getting different data -concerning created or imported geometrical objects. They are: +concerning created or imported geometrical objects :
          -
        • \ref point_coord_anchor "Point coordinates"
        • -
        • \ref basic_prop_anchor "Basic properties"
        • -
        • \ref center_mass_anchor "Center of mass"
        • -
        • \ref vertex_by_index "Get Vertex By Index"
        • -
        • \ref inertia_anchor "Inertia"
        • -
        • \ref normale_anchor "Normal to a Face"
        • -
        • \ref boundaries_anchor "Check Free Boundaries"
        • -
        • \ref faces_anchor "Check Faces"
        • -
        • \ref bounding_box_anchor "Bounding box"
        • -
        • \ref min_distance_anchor "Min. distance"
        • -
        • \ref angle_anchor "Angle"
        • -
        • \ref tolerance_anchor "Tolerance"
        • -
        • \ref whatis_anchor "WhatIs"
        • -
        • \ref check_anchor "Check"
        • -
        • \ref check_compound_anchor "Check compound of blocks"
        • -
        • \ref check_self_intersections_anchor "Detect Self-intersections"
        • +
        • \subpage point_coordinates_page "Point coordinates"
        • +
        • \subpage basic_prop_page "Basic properties"
        • +
        • \subpage center_mass_page "Center of mass"
        • +
        • \subpage inertia_page "Inertia"
        • +
        • \subpage normal_page "Normal to a Face"
        • +
        • \subpage bounding_box_page "Bounding box"
        • +
        • \subpage min_distance_page "Min. distance"
        • +
        • \subpage angle_page "Angle"
        • +
        • \subpage tolerance_page "Tolerance"
        • +
        • \subpage whatis_page "WhatIs"
        -\n Our TUI Scripts show how to use -\ref tui_measurement_tools_page "Measurement Tools" with TUI -commands. - -\n To use measurement tools: -\par -In the Main menu select \b Measures submenu. - -\anchor point_coord_anchor -

        Point coordinates

        - -\n Returns the coordinates of a point. - -\n Result: Point coordinates (X, Y, Z) in 3D space in the form of Python Tuple. -\n TUI Command: geompy.PointCoordinates(Point), -where \em Point is a point whose coordinates are inquired. - -\image html measures1.png - -\anchor basic_prop_anchor -

        Basic properties

        - -\n Returns the properties (Length, Surface & Volume) for the selected -geometrical object. - -\n Result: Display Length, Surface & Volume in the form of -Python Tuple. -\n TUI Command: geompy.BasicProperties(Shape), where -\em Shape is a shape whose properties are inquired. - -\image html neo-basicprop.png - -\anchor center_mass_anchor -

        Center of mass

        - -\n Calculates and returns the coordinates of the gravity center for -the selected geometrical object. - -\n Result: GEOM_Object (vertex). -\n TUI Command: geompy.MakeCDG(Shape), where \em Shape is -the shape for which a center of gravity is computed. - -\image html measures3.png - -\anchor vertex_by_index -

        Get Vertex by Index

        - -\n It is possible to get the first or the last vertex from an edge or a wire, depending on -its direction (orientation), or to find the vertex by the index inside the wire. -The numeration of vertexes starts from 0. This function has only a TUI implementation) - -\n Result: GEOM_Object (vertex). -\n TUI Command: geompy.GetVertexByIndex(Shape, Index), - geompy.GetFirstVertex(Shape), - geompy.GetLastVertex(Shape), where \em Shape must be Wire or Edge. - -\anchor inertia_anchor -

        Inertia

        - -Returns the axial moments of inertia for the selected geometrical object. - -\n Result: Displays the matrix of the own moments of inertia and -the relative moments of inertia in the form of Python Tuple -
        (I11, I12, I13,
        -
        I21, I22, I23,
        -
        I31, I32, I33,
        -
        Ix, Iy, Iz).
        -\n TUI Command: geompy.Inertia(Shape), where \em Shape is -a shape for which the own matrix of inertia and the relative moments of inertia are -returned. - -\image html measures4.png - -\anchor normale_anchor -

        Normal to a Face

        - -\n Calculates the normal vector to the selected \b Face. The \b Point -is a point of the \b Face, where the Normal should be calculated. - -\image html normaletoface.png - -\anchor boundaries_anchor -

        Check Free Boundaries

        - -\n Detects and highlights wires and edges that are not shared between -two faces and are considered a shape's boundary. - -\n TUI Command: (NoError, ClosedWires, OpenWires) = -geompy.GetFreeBoundary(Shape), where \em Shape is a shape to be -checked, \em NoError is false if an error occurred while checking free -boundaries, \em ClosedWires is a list of closed free boundary wires, -\em OpenWires is a list of open free boundary wires. - -\image html repair9.png - -\anchor faces_anchor -

        Check Free Faces

        - -\n Highlights all free faces of a given shape. A free -face is a face which is not shared between two objects of the shape. - -\n \b NOTE: This functionality works only in VTK viewer. - -\n \b Result: a list of IDs of all free faces, containing in the shape. -\n TUI Command: GetFreeFacesIDs(Shape), where \em Shape is -a shape to be checked. - -\image html repair10.png - -\anchor bounding_box_anchor -

        Bounding box

        - -Returns the dimensions of the bounding box for the selected -geometrical object. - -\b NOTE: In order to take into account any possible distortion of a shape -that affects the resulting bounding box, the algorithm enlarges -the bounding box to the value of the maximum deflection value of -faces (by iterating through all faces of a shape). -This functionallity is implemented in such a way in order to have -satisfactory performance. - -Result: Displays the dimensions of the bounding box of a -geometrical object in the form of Python Tuple (Xmin, Xmax, Ymin, -Ymax, Zmin, Zmax). -\n TUI Command: geompy.BoundingBox(Shape), where \em Shape -is a shape for which a bounding box is computed. +\n Or to check their integrity: -\image html measures5.png - -\anchor min_distance_anchor -

        Min. distance

        - -\n Returns the minimum distance between two geometrical objects and -the coordinates of the vector of distance and shows the vector in the viewer. - -\n TUI Command: geompy.MinDistance(Shape1, Shape2), -where \em Shape1 and \em Shape2 are shapes between which the minimal -distance is computed. - -\image html distance.png - -\anchor angle_anchor -

        Angle

        - -\n Returns the angle between two lines or linear edges in degrees. - -\note If both arguments are vectors, the angle is computed in - accordance with their orientations, otherwise the minimum angle - is computed. - -\n TUI Command: geompy.GetAngle(shape1, shape2), where -Shape1 and Shape2 are shapes between which the angle is computed. -Another TUI command is geompy.GetAngleRadians(shape1,shape2), -which returns the value of angle in radians. - -\image html angle.png - -\anchor tolerance_anchor -

        Tolerance

        - -\n Returns the maximum and the minimum tolerance for the selected -geometrical object. - -\n Result: Displays the tolerance values (FaceMinTol, -FaceMaxTol, EgdeMinTol, EgdeMaxTol, VertexMinTol, VertexMaxTol). -\n TUI Command: geompy.Tolerance(Shape), where \em Shape -is a shape for which minimal and maximal tolerances are returned. - -\image html new-tolerance.png - -\anchor whatis_anchor -

        WhatIs

        - -\n General information about the selected geometrical object is the -list of types and quantities of all topological entities, composing -the shape. - -\n TUI Command: geompy.WhatIs(Shape), where \em Shape is a -shape from which a description is returned. - -\image html measures8.png - -\n Kind of Shape field characterises the -whole shape. If there is no additional information available for the -shape, Basic Properties button will be disabled, otherwise it -will show a dialog with information about -dimensions, position, orientation and other parameters of the shape. - -\n TUI Command: geompy.KindOfShape(Shape), where \em Shape is a -shape from which a description is returned. - -\image html measures8a.png - -\anchor check_anchor -

        Check

        - -\n Checks the topology of the selected geometrical object and returns -True if it is valid. Check also geometry checkbox allows to test the -geometry as well. - -\n Result: Boolean. -\n TUI Command: geompy.CheckShape(theShape, theIsCheckGeom = 0), -where \em theShape is the shape checked for validity. - -\image html measures9.png - -\anchor check_compound_anchor -

        Check compound of blocks

        - -\n Checks whether a shape is a compound of glued blocks. To be -considered as a compound of blocks, the given shape must satisfy the -following conditions:
          -
        • Each element of the compound should be a Block (6 faces and 12 edges);
        • -
        • A connection between two Blocks should be an entire quadrangle face or an entire edge;
        • -
        • The compound should be connected;
        • -
        • Two quadrangle faces should be glued.
        • +
        • \subpage boundaries_page "Check Free Boundaries"
        • +
        • \subpage free_faces_page "Check Free Faces"
        • +
        • \subpage check_shape_page "Check Shape"
        • +
        • \subpage check_compound_of_blocks_page "Check compound of blocks"
        • +
        • \subpage check_self_intersections_page "Detect Self-intersections"
        -\n Informs of the following possible errors: -
          -
        • not a block;
        • -
        • not glued;
        • -
        • not connected;
        • -
        • extra or degenerated edge.
        • -
        - -\n Result: Boolean; highlight in the viewer. -\n TUI Command: -geompy.CheckCompoundOfBlocks(Compound). Checks if the shape -is a valid compound of blocks. If it is true, then the validity flag -is returned, and encountered errors are printed in the python console. - -\image html measures10.png - -\anchor check_self_intersections_anchor -

        Detect Self-intersections

        - -\n Checks the topology of the selected shape to detect self-intersections. - Returns True if there are no self-intersections. Reports pairs of - intersected sub-shapes, if there are any. - -\note This tool is useful for detection of shapes, not suitable for -arguments of Boolean operations and Partition algorithm. -For more information about Partition and Boolean Operations Algorithms -and their limitations refer to this document. - -\n Result: Boolean. -\n TUI Command: geompy.CheckSelfIntersections(theShape), -where \em theShape is the shape checked for validity. - -\image html measures11.png - -*/ +\n Our TUI Scripts show how to use +\ref tui_measurement_tools_page "Measurement Tools" with TUI +commands. +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/viewing_geom_obj.doc b/doc/salome/gui/GEOM/input/viewing_geom_obj.doc index fdb4e7798..44cea48a6 100644 --- a/doc/salome/gui/GEOM/input/viewing_geom_obj.doc +++ b/doc/salome/gui/GEOM/input/viewing_geom_obj.doc @@ -22,9 +22,9 @@ viewer and from the Object Browser.
      • \subpage display_mode_page "Display Mode" - allows to select between Wireframe and Shading presentation.
      • \subpage bring_to_front_page "Bring To Front" - allows to bring to -front of the viewer selected geometrical object.
      • -
      • Clear Top Level State - allows to remove from foregroung of the viewer -geometrical objects which were added there via Bring To Front command.
      • +front of the viewer the selected geometrical object. +
      • Clear Top Level State - allows to remove from the viewer foreground +geometrical objects that have been placed there via Bring To Front command.
      • \subpage color_page "Color" - allows to change the filling color in the standard Select Color menu.
      • \subpage transparency_page "Transparency" - allows to change the @@ -38,7 +38,7 @@ material properties of a shape.
      • \subpage point_marker_page "Point Marker" - allows to change the representation of geometrical vertices.
      • \subpage line_width_page "Line Width" - allows to change the -width of the edges and isolines.
      • +width of edges and isolines.
      • Auto color / Disable auto color - activates the auto color mode. When the auto color mode is enabled, the groups created on the sub-shapes of the selected geometrical object are automatically diff --git a/doc/salome/gui/GEOM/input/whatis.doc b/doc/salome/gui/GEOM/input/whatis.doc new file mode 100644 index 000000000..faa183032 --- /dev/null +++ b/doc/salome/gui/GEOM/input/whatis.doc @@ -0,0 +1,27 @@ +/*! + +\page whatis_page What Is ? + +General information about the selected geometrical object is the +list of types and quantities of all topological entities, composing +the shape. + +\n TUI Command: geompy.WhatIs(Shape), where \em Shape is a +shape from which a description is returned. + +See also a \ref tui_whatis_page "TUI example". + +\image html measures8.png + +\n Kind of Shape field characterises the +whole shape. If there is no additional information available for the +shape, Basic Properties button will be disabled, otherwise it +will show a dialog with information about +dimensions, position, orientation and other parameters of the shape. + +\n TUI Command: geompy.KindOfShape(Shape), where \em Shape is a +shape from which a description is returned. + +\image html measures8a.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/static/footer.html b/doc/salome/gui/GEOM/static/footer.html index b344790a6..4c89a2ba1 100755 --- a/doc/salome/gui/GEOM/static/footer.html +++ b/doc/salome/gui/GEOM/static/footer.html @@ -3,7 +3,7 @@
        - Copyright © 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
        + Copyright © 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
        Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
        diff --git a/doc/salome/gui/Makefile.am b/doc/salome/gui/Makefile.am index fada74efd..03e3efc6e 100644 --- a/doc/salome/gui/Makefile.am +++ b/doc/salome/gui/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/doc/salome/tui/Makefile.am b/doc/salome/tui/Makefile.am index a2b5e1a66..bf44e17b2 100644 --- a/doc/salome/tui/Makefile.am +++ b/doc/salome/tui/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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 @@ -49,4 +49,13 @@ install-data-local: fi; uninstall-local: - rm -rf $(DESTDIR)$(docdir)/tui/GEOM + @test -d $(DESTDIR)$(tuidocdir) && chmod -R +w $(DESTDIR)$(tuidocdir) ; \ + for filen in `find $(DESTDIR)$(tuidocdir) -mindepth 1 -maxdepth 1` dummy ; do \ + case $${filen} in \ + dummy ) ;; \ + $(DESTDIR)$(tuidocdir)/docutils ) ;; \ + $(DESTDIR)$(tuidocdir)/head.png ) ;; \ + $(DESTDIR)$(tuidocdir)/geomscreen.png ) ;; \ + * ) echo "removing $${filen}" && rm -rf $${filen} ;; \ + esac ; \ + done diff --git a/doc/salome/tui/doxyfile.in b/doc/salome/tui/doxyfile.in index 23195824e..8b7feba7a 100755 --- a/doc/salome/tui/doxyfile.in +++ b/doc/salome/tui/doxyfile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -250,7 +250,7 @@ INCLUDED_BY_GRAPH = NO CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = jpg +DOT_IMAGE_FORMAT = png DOT_FONTNAME = Arial DOT_PATH = DOTFILE_DIRS = diff --git a/doc/salome/tui/static/footer.html b/doc/salome/tui/static/footer.html index d77ef0a32..5b030c021 100755 --- a/doc/salome/tui/static/footer.html +++ b/doc/salome/tui/static/footer.html @@ -6,7 +6,7 @@
        -Copyright © 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
        +Copyright © 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
        Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
        diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 9fd614d99..783392170 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -2118,6 +2118,17 @@ module GEOM */ GEOM_Object GetSame (in GEOM_Object theShapeWhere, in GEOM_Object theShapeWhat); + + /*! + * \brief Get sub-shape Ids of theShapeWhere, which are + * coincident with \a theShapeWhat that can either SOLID, FACE, EDGE or VERTEX. + * \param theShapeWhere Shape to find sub-shapes of. + * \param theShapeWhat Shape, specifying what to find. + * \return found sub-shape Ids. + */ + ListOfLong GetSameIDs (in GEOM_Object theShapeWhere, + in GEOM_Object theShapeWhat); + }; // # GEOM_IBlocksOperations: diff --git a/idl/GEOM_Superv.idl b/idl/GEOM_Superv.idl index fa6ef3a03..7bc184a7f 100644 --- a/idl/GEOM_Superv.idl +++ b/idl/GEOM_Superv.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/idl/Makefile.am b/idl/Makefile.am index c5140066c..22ae8e15c 100644 --- a/idl/Makefile.am +++ b/idl/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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 @@ -26,6 +26,8 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am BASEIDL_FILES = GEOM_Gen.idl GEOM_Superv.idl +BASEIDL_FILES_PY=$(BASEIDL_FILES:%.idl=%_idl.py) + # This variable defines the files to be installed dist_salomeidl_DATA = $(BASEIDL_FILES) @@ -64,9 +66,15 @@ install-exec-local: $(BASEIDL_FILES:%=$(top_srcdir)/idl/%) $(OMNIORB_IDL) $(IDLPYFLAGS) -C$(DESTDIR)$(salomepythondir) $$file ; \ done -# uninstall-local removes too much, but it works in distcheck +# we want to remove only staff generated for IDL files and nothing more uninstall-local: - rm -rf $(DESTDIR)$(salomepythondir)/* + @for modulen in GEOM ; do \ + test -d $(DESTDIR)$(salomepythondir)/$${modulen} && echo "Removing $(DESTDIR)$(salomepythondir)/$${modulen}" && rm -rf $(DESTDIR)$(salomepythondir)/$${modulen} ; \ + test -d $(DESTDIR)$(salomepythondir)/$${modulen}__POA && echo "Removing $(DESTDIR)$(salomepythondir)/$${modulen}__POA" && rm -rf $(DESTDIR)$(salomepythondir)/$${modulen}__POA ; \ + done ; \ + for filen in $(BASEIDL_FILES_PY) ; do \ + echo "Removing $(DESTDIR)$(salomepythondir)/$${filen}" && rm -f $(DESTDIR)$(salomepythondir)/$${filen}* ; \ + done mostlyclean-local: -rm -f *.hh *.cc .depidl diff --git a/resources/GEOMCatalog.xml.in b/resources/GEOMCatalog.xml.in index 9552fdae5..db645d25b 100644 --- a/resources/GEOMCatalog.xml.in +++ b/resources/GEOMCatalog.xml.in @@ -1,6 +1,6 @@ - QColor c; - QString s; - - // 1. ============= Plastic - std::cout << "---- Plastic:" << std::endl; - // ambient - c.setRgbF(0.2, 0.2, 0.2); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.0, 0.0, 0.0); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(1.0, 1.0, 1.0); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 2. ============= Shiny plastic - std::cout << "---- Shiny plastic:" << std::endl; - // ambient - c.setRgbF(0.2, 0.2, 0.2); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.0, 0.0, 0.0); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(1.0, 1.0, 1.0); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 3. ============= Satin - std::cout << "---- Satin:" << std::endl; - // ambient - c.setRgbF(0.2, 0.2, 0.2); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.0, 0.0, 0.0); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(1.0, 1.0, 1.0); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 4. ============= Metal - std::cout << "---- Metal:" << std::endl; - // diffuse - c.setRgbF(0.0, 0.0, 0.0); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(1.0, 1.0, 1.0); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 5. ============= Brass - std::cout << "---- Brass:" << std::endl; - // ambient - c.setRgbF(0.329412, 0.223529, 0.027451); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.780392, 0.568627, 0.113725); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.992157, 0.941176, 0.807843); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 6. ============= Bronze - std::cout << "---- Bronze:" << std::endl; - // ambient - c.setRgbF(0.2125, 0.1275, 0.054); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.714, 0.4284, 0.18144); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.393548, 0.271906, 0.166721); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 7. ============= Copper - std::cout << "---- Copper:" << std::endl; - // ambient - c.setRgbF(0.33, 0.26, 0.23); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.50, 0.11, 0.0); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.95, 0.73, 0.0); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 8. ============= Gold - std::cout << "---- Gold:" << std::endl; - // ambient - c.setRgbF(1.0, 0.76862745, 0.31764706); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(1.0, 0.69, 0.0); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(1.0, 0.98, 0.78); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 9. ============= Pewter - std::cout << "---- Pewter:" << std::endl; - // ambient - c.setRgbF(0.105882, 0.058824, 0.113725); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.427451, 0.470588, 0.541176); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.333333, 0.333333, 0.521569); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 10. ============= Plaster - std::cout << "---- Plaster:" << std::endl; - // ambient - c.setRgbF(0.19225, 0.19225, 0.19225); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.50754, 0.50754, 0.50754); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.508273, 0.508273, 0.508273); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 11. ============= Silver - std::cout << "---- Silver:" << std::endl; - // ambient - c.setRgbF(0.19225, 0.19225, 0.19225); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.50754, 0.50754, 0.50754); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.508273, 0.508273, 0.508273); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 12. ============= Steel - std::cout << "---- Steel:" << std::endl; - // ambient - c.setRgbF(0.2, 0.2, 0.2); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.0, 0.0, 0.0); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(1.0, 1.0, 1.0); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 13. ============= Stone - std::cout << "---- Stone:" << std::endl; - // ambient - c.setRgbF(1.0, 0.8, 0.62); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(1.0, 0.8, 0.62); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.98, 1.0, 0.60); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 14. ============= Chrome - std::cout << "---- Chrome:" << std::endl; - // ambient - c.setRgbF(0.35, 0.35, 0.35); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.4, 0.4, 0.4); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.974597, 0.974597, 0.974597); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 15. ============= Neon - std::cout << "---- Neon:" << std::endl; - // ambient - c.setRgbF(1.0, 1.0, 1.0); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(1.0, 1.0, 1.0); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(1.0, 1.0, 1.0); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - // emissive - c.setRgbF(0.0, 1.0, 0.46); - s = Qtx::colorToString( c ); - std::cout << " emissive color: " << s.toStdString().c_str() << std::endl; - - // 16. ============= Aluminium - std::cout << "---- Aluminium:" << std::endl; - // ambient - c.setRgbF(0.30, 0.30, 0.30); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.30, 0.30, 0.30); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.70, 0.70, 0.80); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 17. ============= Obsidian - std::cout << "---- Obsidian:" << std::endl; - // ambient - c.setRgbF(0.05375, 0.05, 0.06625); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.18275, 0.17, 0.22525); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.332741, 0.328634, 0.346435); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 18. ============= Jade - std::cout << "---- Jade:" << std::endl; - // ambient - c.setRgbF(0.135, 0.2225, 0.1575); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.54, 0.89, 0.63); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(0.316228, 0.316228, 0.316228); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // 19. ============= Default material - std::cout << "---- Default material:" << std::endl; - // ambient - c.setRgbF(0.2, 0.2, 0.2); - s = Qtx::colorToString( c ); - std::cout << " ambient color: " << s.toStdString().c_str() << std::endl; - // diffuse - c.setRgbF(0.0, 0.0, 0.0); - s = Qtx::colorToString( c ); - std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl; - // specular - c.setRgbF(1.0, 1.0, 1.0); - s = Qtx::colorToString( c ); - std::cout << " specular color: " << s.toStdString().c_str() << std::endl; - - // Get string equivalent for colors of global materials <---- - */ } /*! @@ -359,49 +63,54 @@ Material_ResourceMgr::~Material_ResourceMgr() */ QStringList Material_ResourceMgr::materials( MaterialType theType, bool theSort ) { - QStringList sl; - + // store original working mode WorkingMode m = workingMode(); + QStringList slglobal, sluser; + + // retrieve all materials : global + user + setWorkingMode( AllowUserValues ); + sluser = sections(); + + // retrieve only global materials + setWorkingMode( IgnoreUserValues ); + slglobal = sections(); + + // remove global materials from user list to obtain only user materials + QMutableListIterator it( sluser ); + while ( it.hasNext() ) { + QString s = it.next(); + if ( slglobal.contains( s ) ) it.remove(); + } + + // remove 'common' material + slglobal.removeAll("[common]"); + + // restore original working mode + setWorkingMode( m ); + + // sort if necessary (separately global and user materials) + if ( theSort ) { + qSort( slglobal ); + qSort( sluser ); + } + + // combine the materials to obtain result list + QStringList result; + switch ( theType ) { case Global: - setWorkingMode( IgnoreUserValues ); - sl = sections(); + result = slglobal; break; case User: - { - setWorkingMode( AllowUserValues ); - sl = sections(); - setWorkingMode( IgnoreUserValues ); - QMutableListIterator it( sl ); - while ( it.hasNext() ) { - QString s = it.next(); - if ( hasSection( s ) ) it.remove(); - } - } + result = sluser; break; case All: - setWorkingMode( AllowUserValues ); - sl = sections(); + result = slglobal + sluser; break; default: break; } - setWorkingMode( m ); - - if ( theSort ) - qSort( sl ); - - return sl; -} - -/*! - \brief Get list of materials names for preferences dialog - \return list of materials names -*/ -QStringList Material_ResourceMgr::getPreferenceMaterialsNames() -{ - QStringList aMaterialsList = materials( Material_ResourceMgr::All ); - return aMaterialsList; + return result; } diff --git a/src/Material/Material_ResourceMgr.h b/src/Material/Material_ResourceMgr.h index a78203320..a98a531d7 100644 --- a/src/Material/Material_ResourceMgr.h +++ b/src/Material/Material_ResourceMgr.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -41,8 +41,6 @@ public: ~Material_ResourceMgr(); QStringList materials( MaterialType = All, bool = true ); - - QStringList getPreferenceMaterialsNames(); }; diff --git a/src/Material/resources/SalomeMaterial.xml b/src/Material/resources/SalomeMaterial.xml index 9741ce641..d1e26882c 100644 --- a/src/Material/resources/SalomeMaterial.xml +++ b/src/Material/resources/SalomeMaterial.xml @@ -1,5 +1,5 @@ -
        +
        + + + + - + + - + + - + + + + +
        +
        + + +
        - + - - -
        - + - - -
        -
        - +
        + + + + + + + +
        +
        + + + - -
        - + + - + - + - +
        - + + - + - + - +
        - + + - + - + - +
        - + + - + - + - +
        - + + - + - + - +
        - + - + - + - +
        - + + - + - + - +
        - + + - - - +
        - + + - + - + - +
        - + + - + - + - +
        -
        - +
        + + + - + + - + - - - + + + +
        - + + - + - + - +
        - + + - + - + - +
        - + + - + - + - +
        diff --git a/src/MeasureGUI/Makefile.am b/src/MeasureGUI/Makefile.am index 766128d86..8b0541a9a 100644 --- a/src/MeasureGUI/Makefile.am +++ b/src/MeasureGUI/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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 @@ -15,6 +15,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# # GEOM MEASUREGUI : # File : Makefile.am diff --git a/src/MeasureGUI/MeasureGUI.cxx b/src/MeasureGUI/MeasureGUI.cxx index 7b21bcb05..e1ddbfcff 100644 --- a/src/MeasureGUI/MeasureGUI.cxx +++ b/src/MeasureGUI/MeasureGUI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM GEOMGUI : GUI for Geometry component // File : MeasureGUI.cxx diff --git a/src/MeasureGUI/MeasureGUI.h b/src/MeasureGUI/MeasureGUI.h index d196684f8..ce2aeb277 100644 --- a/src/MeasureGUI/MeasureGUI.h +++ b/src/MeasureGUI/MeasureGUI.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_AngleDlg.cxx b/src/MeasureGUI/MeasureGUI_AngleDlg.cxx index c473dd78d..90a87dcd9 100644 --- a/src/MeasureGUI/MeasureGUI_AngleDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_AngleDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -15,6 +15,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM GEOMGUI : GUI for Geometry component // File : MeasureGUI_AngleDlg.cxx diff --git a/src/MeasureGUI/MeasureGUI_AngleDlg.h b/src/MeasureGUI/MeasureGUI_AngleDlg.h index bf1eb24c0..fa24fbdda 100644 --- a/src/MeasureGUI/MeasureGUI_AngleDlg.h +++ b/src/MeasureGUI/MeasureGUI_AngleDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx b/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx index a319b3f1f..3544009ac 100644 --- a/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_BndBoxDlg.h b/src/MeasureGUI/MeasureGUI_BndBoxDlg.h index c0b824565..8fd3af034 100644 --- a/src/MeasureGUI/MeasureGUI_BndBoxDlg.h +++ b/src/MeasureGUI/MeasureGUI_BndBoxDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx b/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx index 534f677db..84676e669 100644 --- a/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_CenterMassDlg.h b/src/MeasureGUI/MeasureGUI_CenterMassDlg.h index 5dfce20b2..d3100620e 100644 --- a/src/MeasureGUI/MeasureGUI_CenterMassDlg.h +++ b/src/MeasureGUI/MeasureGUI_CenterMassDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx b/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx index 2c8166beb..ac4272130 100644 --- a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.h b/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.h index efee68c60..ddbde0949 100644 --- a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.h +++ b/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_CheckSelfIntersectionsDlg.cxx b/src/MeasureGUI/MeasureGUI_CheckSelfIntersectionsDlg.cxx index 886549598..df12686dd 100644 --- a/src/MeasureGUI/MeasureGUI_CheckSelfIntersectionsDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_CheckSelfIntersectionsDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM GEOMGUI : GUI for Geometry component // File : MeasureGUI_CheckSelfIntersectionsDlg.cxx diff --git a/src/MeasureGUI/MeasureGUI_CheckSelfIntersectionsDlg.h b/src/MeasureGUI/MeasureGUI_CheckSelfIntersectionsDlg.h index c98ec1365..8671706b3 100644 --- a/src/MeasureGUI/MeasureGUI_CheckSelfIntersectionsDlg.h +++ b/src/MeasureGUI/MeasureGUI_CheckSelfIntersectionsDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM GEOMGUI : GUI for Geometry component // File : MeasureGUI_CheckSelfIntersectionsDlg.h diff --git a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx b/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx index d1bb67f72..7cd562cd7 100644 --- a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.h b/src/MeasureGUI/MeasureGUI_CheckShapeDlg.h index 815a247e4..ebb8ccc70 100644 --- a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.h +++ b/src/MeasureGUI/MeasureGUI_CheckShapeDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx b/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx index f3493ec0a..ffd630a9a 100644 --- a/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_DistanceDlg.h b/src/MeasureGUI/MeasureGUI_DistanceDlg.h index f679ac808..2c4e9c56d 100644 --- a/src/MeasureGUI/MeasureGUI_DistanceDlg.h +++ b/src/MeasureGUI/MeasureGUI_DistanceDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx b/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx index abd4759a9..389345dd9 100644 --- a/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_InertiaDlg.h b/src/MeasureGUI/MeasureGUI_InertiaDlg.h index f71cb3533..6e57605ab 100644 --- a/src/MeasureGUI/MeasureGUI_InertiaDlg.h +++ b/src/MeasureGUI/MeasureGUI_InertiaDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx b/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx index 6f39591b8..a886d9a84 100644 --- a/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h b/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h index e494cd362..52f764d6e 100644 --- a/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h +++ b/src/MeasureGUI/MeasureGUI_MaxToleranceDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx b/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx index 4b8ab9329..6484ad1f2 100644 --- a/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/MeasureGUI/MeasureGUI_NormaleDlg.h b/src/MeasureGUI/MeasureGUI_NormaleDlg.h index 3a3cba8ea..faf262bb7 100644 --- a/src/MeasureGUI/MeasureGUI_NormaleDlg.h +++ b/src/MeasureGUI/MeasureGUI_NormaleDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/MeasureGUI/MeasureGUI_PointDlg.cxx b/src/MeasureGUI/MeasureGUI_PointDlg.cxx index 21f515a1a..d68c20512 100644 --- a/src/MeasureGUI/MeasureGUI_PointDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_PointDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_PointDlg.h b/src/MeasureGUI/MeasureGUI_PointDlg.h index c284a7c19..8e43c0292 100644 --- a/src/MeasureGUI/MeasureGUI_PointDlg.h +++ b/src/MeasureGUI/MeasureGUI_PointDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx b/src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx index ec0838f6a..426be51d1 100644 --- a/src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_PropertiesDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_PropertiesDlg.h b/src/MeasureGUI/MeasureGUI_PropertiesDlg.h index c937dd339..c8e37fd78 100644 --- a/src/MeasureGUI/MeasureGUI_PropertiesDlg.h +++ b/src/MeasureGUI/MeasureGUI_PropertiesDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_Skeleton.cxx b/src/MeasureGUI/MeasureGUI_Skeleton.cxx index 66a5f36fb..83ca1072c 100644 --- a/src/MeasureGUI/MeasureGUI_Skeleton.cxx +++ b/src/MeasureGUI/MeasureGUI_Skeleton.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_Skeleton.h b/src/MeasureGUI/MeasureGUI_Skeleton.h index 8cb28df26..737732bbd 100644 --- a/src/MeasureGUI/MeasureGUI_Skeleton.h +++ b/src/MeasureGUI/MeasureGUI_Skeleton.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_WhatisDlg.cxx b/src/MeasureGUI/MeasureGUI_WhatisDlg.cxx index 5c615a42f..7c528b4b9 100644 --- a/src/MeasureGUI/MeasureGUI_WhatisDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_WhatisDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_WhatisDlg.h b/src/MeasureGUI/MeasureGUI_WhatisDlg.h index 399769f6d..c5e31ccbd 100644 --- a/src/MeasureGUI/MeasureGUI_WhatisDlg.h +++ b/src/MeasureGUI/MeasureGUI_WhatisDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/MeasureGUI/MeasureGUI_Widgets.cxx b/src/MeasureGUI/MeasureGUI_Widgets.cxx index 81cd4bb39..5cb2936fd 100644 --- a/src/MeasureGUI/MeasureGUI_Widgets.cxx +++ b/src/MeasureGUI/MeasureGUI_Widgets.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/MeasureGUI/MeasureGUI_Widgets.h b/src/MeasureGUI/MeasureGUI_Widgets.h index cbdf8ffbb..17067d067 100644 --- a/src/MeasureGUI/MeasureGUI_Widgets.h +++ b/src/MeasureGUI/MeasureGUI_Widgets.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/NMTDS_NEW/FILES b/src/NMTDS/FILES similarity index 100% rename from src/NMTDS_NEW/FILES rename to src/NMTDS/FILES diff --git a/src/NMTDS/Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx b/src/NMTDS/Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx deleted file mode 100644 index 62796b182..000000000 --- a/src/NMTDS/Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile -#define _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger); - -class Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)(const Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)(const NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)& operator=(const Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)& operator=(const NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger* operator->() const - { - return (NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)(); - - Standard_EXPORT static const Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx deleted file mode 100644 index f69f8948c..000000000 --- a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#define _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger); - -class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& operator=(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)& operator=(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger* operator->() const - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)(); - - Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx deleted file mode 100644 index b57f82fd7..000000000 --- a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#define _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape); - -class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& operator=(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& operator=(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* operator->() const - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(); - - Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx deleted file mode 100644 index e78314cf5..000000000 --- a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_HeaderFile -#define _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere); - -class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)& operator=(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)& operator=(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere* operator->() const - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)(); - - Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx deleted file mode 100644 index b4d4a6b62..000000000 --- a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#define _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox); - -class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& operator=(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& operator=(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* operator->() const - { - return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(); - - Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx deleted file mode 100644 index 630bdb40b..000000000 --- a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors); - -class Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(const NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& operator=(const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)& operator=(const NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors* operator->() const - { - return (NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)(); - - Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPair.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPair.hxx deleted file mode 100644 index 39d49e534..000000000 --- a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPair.hxx +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _Handle_NMTDS_ListNodeOfListOfPair_HeaderFile -#define _Handle_NMTDS_ListNodeOfListOfPair_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_DefineHandle_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle(Standard_Type); -class Handle(TCollection_MapNode); -class NMTDS_ListNodeOfListOfPair; - -DEFINE_STANDARD_HANDLE(NMTDS_ListNodeOfListOfPair,TCollection_MapNode) - -#endif diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPairBoolean.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPairBoolean.hxx deleted file mode 100644 index bf4025362..000000000 --- a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPairBoolean.hxx +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _Handle_NMTDS_ListNodeOfListOfPairBoolean_HeaderFile -#define _Handle_NMTDS_ListNodeOfListOfPairBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_DefineHandle_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle(Standard_Type); -class Handle(TCollection_MapNode); -class NMTDS_ListNodeOfListOfPairBoolean; - -DEFINE_STANDARD_HANDLE(NMTDS_ListNodeOfListOfPairBoolean,TCollection_MapNode) - -#endif diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx deleted file mode 100644 index ba6f85af8..000000000 --- a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile -#define _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_ListNodeOfListOfPassKey; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey); - -class Handle(NMTDS_ListNodeOfListOfPassKey) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_ListNodeOfListOfPassKey)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_ListNodeOfListOfPassKey)(const Handle(NMTDS_ListNodeOfListOfPassKey)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_ListNodeOfListOfPassKey)(const NMTDS_ListNodeOfListOfPassKey* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_ListNodeOfListOfPassKey)& operator=(const Handle(NMTDS_ListNodeOfListOfPassKey)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_ListNodeOfListOfPassKey)& operator=(const NMTDS_ListNodeOfListOfPassKey* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_ListNodeOfListOfPassKey* operator->() const - { - return (NMTDS_ListNodeOfListOfPassKey *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfPassKey)(); - - Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfPassKey) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx deleted file mode 100644 index f3846466c..000000000 --- a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile -#define _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_ListNodeOfListOfPassKeyBoolean; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean); - -class Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(const NMTDS_ListNodeOfListOfPassKeyBoolean* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& operator=(const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& operator=(const NMTDS_ListNodeOfListOfPassKeyBoolean* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_ListNodeOfListOfPassKeyBoolean* operator->() const - { - return (NMTDS_ListNodeOfListOfPassKeyBoolean *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(); - - Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPairBoolean.hxx b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPairBoolean.hxx deleted file mode 100644 index 84112e209..000000000 --- a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPairBoolean.hxx +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPairBoolean_HeaderFile -#define _Handle_NMTDS_StdMapNodeOfMapOfPairBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_DefineHandle_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle(Standard_Type); -class Handle(TCollection_MapNode); -class NMTDS_StdMapNodeOfMapOfPairBoolean; - -DEFINE_STANDARD_HANDLE(NMTDS_StdMapNodeOfMapOfPairBoolean,TCollection_MapNode) - -#endif diff --git a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx deleted file mode 100644 index b413a219f..000000000 --- a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile -#define _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_StdMapNodeOfMapOfPassKey; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey); - -class Handle(NMTDS_StdMapNodeOfMapOfPassKey) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_StdMapNodeOfMapOfPassKey)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_StdMapNodeOfMapOfPassKey)(const Handle(NMTDS_StdMapNodeOfMapOfPassKey)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_StdMapNodeOfMapOfPassKey)(const NMTDS_StdMapNodeOfMapOfPassKey* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_StdMapNodeOfMapOfPassKey)& operator=(const Handle(NMTDS_StdMapNodeOfMapOfPassKey)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_StdMapNodeOfMapOfPassKey)& operator=(const NMTDS_StdMapNodeOfMapOfPassKey* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_StdMapNodeOfMapOfPassKey* operator->() const - { - return (NMTDS_StdMapNodeOfMapOfPassKey *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_StdMapNodeOfMapOfPassKey)(); - - Standard_EXPORT static const Handle(NMTDS_StdMapNodeOfMapOfPassKey) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx deleted file mode 100644 index 1829b8e4f..000000000 --- a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile -#define _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTDS_StdMapNodeOfMapOfPassKeyBoolean; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean); - -class Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) : public Handle(TCollection_MapNode) { - public: - Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)():Handle(TCollection_MapNode)() {} - Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(const NMTDS_StdMapNodeOfMapOfPassKeyBoolean* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& operator=(const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& operator=(const NMTDS_StdMapNodeOfMapOfPassKeyBoolean* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTDS_StdMapNodeOfMapOfPassKeyBoolean* operator->() const - { - return (NMTDS_StdMapNodeOfMapOfPassKeyBoolean *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(); - - Standard_EXPORT static const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTDS/Makefile.am b/src/NMTDS/Makefile.am index ecef7e050..a8a43b8dd 100644 --- a/src/NMTDS/Makefile.am +++ b/src/NMTDS/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 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 @@ -26,165 +26,73 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am # header files salomeinclude_HEADERS = \ - Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx \ - Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx \ - Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx \ - Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx \ - Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ - Handle_NMTDS_ListNodeOfListOfPair.hxx \ - Handle_NMTDS_ListNodeOfListOfPairBoolean.hxx \ - Handle_NMTDS_StdMapNodeOfMapOfPairBoolean.hxx \ - Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx \ - Handle_NMTDS_ListNodeOfListOfPassKey.hxx \ - Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx \ - Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx \ - Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx \ + NMTDS_BndSphere.hxx \ + NMTDS_BndSphere.lxx \ + NMTDS_BndSphereTree.hxx \ + NMTDS_BoxBndTree.hxx \ NMTDS_CArray1OfIndexRange.hxx \ NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx \ - NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx \ NMTDS_DataMapOfIntegerMapOfInteger.hxx \ - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx \ - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx \ - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx \ - NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx \ NMTDS_IndexedDataMapOfIntegerShape.hxx \ - NMTDS_IndexedDataMapOfShapeBox.hxx \ - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx \ NMTDS_IndexedDataMapOfShapeBndSphere.hxx \ + NMTDS_IndexedDataMapOfShapeBox.hxx \ NMTDS_IndexRange.hxx \ - NMTDS_IndexRange.ixx \ - NMTDS_IndexRange.jxx \ NMTDS_InterfPool.hxx \ - NMTDS_InterfPool.ixx \ - NMTDS_InterfPool.jxx \ NMTDS_InterfType.hxx \ - NMTDS_Iterator.hxx \ - NMTDS_Iterator.ixx \ - NMTDS_Iterator.jxx \ NMTDS_IteratorCheckerSI.hxx \ - NMTDS_IteratorCheckerSI.ixx \ - NMTDS_IteratorCheckerSI.jxx \ + NMTDS_Iterator.hxx \ NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ - NMTDS_ListIteratorOfListOfPair.hxx \ NMTDS_ListIteratorOfListOfPairBoolean.hxx \ - NMTDS_ListNodeOfListOfPair.hxx \ - NMTDS_ListNodeOfListOfPairBoolean.hxx \ - NMTDS_ListOfPair.hxx \ - NMTDS_ListOfPairBoolean.hxx \ - NMTDS_MapIteratorOfMapOfPairBoolean.hxx \ - NMTDS_MapOfPairBoolean.hxx \ - NMTDS_Pair.hxx \ - NMTDS_Pair.ixx \ - NMTDS_Pair.jxx \ - NMTDS_PairBoolean.hxx \ - NMTDS_PairBoolean.ixx \ - NMTDS_PairBoolean.jxx \ - NMTDS_PairMapHasher.hxx \ - NMTDS_PairMapHasher.ixx \ - NMTDS_PairMapHasher.jxx \ - NMTDS_StdMapNodeOfMapOfPairBoolean.hxx \ + NMTDS_ListIteratorOfListOfPair.hxx \ NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx \ NMTDS_ListIteratorOfListOfPassKey.hxx \ - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ - NMTDS_ListNodeOfListOfPassKeyBoolean.hxx \ - NMTDS_ListNodeOfListOfPassKey.hxx \ NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ + NMTDS_ListOfPairBoolean.hxx \ + NMTDS_ListOfPair.hxx \ NMTDS_ListOfPassKeyBoolean.hxx \ NMTDS_ListOfPassKey.hxx \ + NMTDS_MapIteratorOfMapOfPairBoolean.hxx \ NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx \ NMTDS_MapIteratorOfMapOfPassKey.hxx \ + NMTDS_MapOfPairBoolean.hxx \ NMTDS_MapOfPassKeyBoolean.hxx \ NMTDS_MapOfPassKey.hxx \ + NMTDS_PairBoolean.hxx \ + NMTDS_Pair.hxx \ + NMTDS_PairMapHasher.hxx \ NMTDS_PassKeyBoolean.hxx \ - NMTDS_PassKeyBoolean.ixx \ - NMTDS_PassKeyBoolean.jxx \ - NMTDS_PInterfPool.hxx \ - NMTDS_PIterator.hxx \ NMTDS_PassKey.hxx \ - NMTDS_PassKey.ixx \ - NMTDS_PassKey.jxx \ NMTDS_PassKeyMapHasher.hxx \ - NMTDS_PassKeyMapHasher.ixx \ - NMTDS_PassKeyMapHasher.jxx \ NMTDS_PassKeyShape.hxx \ - NMTDS_PassKeyShape.ixx \ - NMTDS_PassKeyShape.jxx \ NMTDS_PassKeyShapeMapHasher.hxx \ - NMTDS_PassKeyShapeMapHasher.ixx \ - NMTDS_PassKeyShapeMapHasher.jxx \ + NMTDS_PInterfPool.hxx \ + NMTDS_PIterator.hxx \ NMTDS_PShapesDataStructure.hxx \ NMTDS_ShapesDataStructure.hxx \ - NMTDS_ShapesDataStructure.ixx \ - NMTDS_ShapesDataStructure.jxx \ - NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx \ - NMTDS_StdMapNodeOfMapOfPassKey.hxx \ - NMTDS_Tools.hxx \ - NMTDS_Tools.ixx \ - NMTDS_Tools.jxx \ - NMTDS_BndSphere.hxx \ - NMTDS_BndSphere.ixx \ - NMTDS_BndSphere.jxx \ - NMTDS_BndSphere.lxx \ - NMTDS_BndSphereTree.hxx \ - NMTDS_BoxBndTree.hxx + NMTDS_Tools.hxx # Libraries targets lib_LTLIBRARIES = libNMTDS.la dist_libNMTDS_la_SOURCES = \ - NMTDS_CArray1OfIndexRange_0.cxx \ - NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_0.cxx \ - NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_0.cxx \ - NMTDS_DataMapOfIntegerMapOfInteger_0.cxx \ - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx \ - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx \ - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx \ - NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx \ - NMTDS_IndexedDataMapOfIntegerShape_0.cxx \ - NMTDS_IndexedDataMapOfShapeBox_0.cxx \ - NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_0.cxx \ - NMTDS_IndexedDataMapOfShapeBndSphere_0.cxx \ + NMTDS_BndSphere.cxx \ + NMTDS_BndSphereTree.cxx \ + NMTDS_BoxBndTree.cxx \ + NMTDS_CArray1OfIndexRange.cxx \ NMTDS_IndexRange.cxx \ NMTDS_InterfPool.cxx \ - NMTDS_Iterator.cxx \ NMTDS_IteratorCheckerSI.cxx \ - NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \ - NMTDS_ListIteratorOfListOfPairBoolean_0.cxx \ - NMTDS_ListIteratorOfListOfPair_0.cxx \ - NMTDS_ListNodeOfListOfPairBoolean_0.cxx \ - NMTDS_ListNodeOfListOfPair_0.cxx \ - NMTDS_ListOfPairBoolean_0.cxx \ - NMTDS_ListOfPair_0.cxx \ - NMTDS_MapIteratorOfMapOfPairBoolean_0.cxx \ - NMTDS_MapOfPairBoolean_0.cxx \ - NMTDS_Pair.cxx \ + NMTDS_Iterator.cxx \ NMTDS_PairBoolean.cxx \ + NMTDS_Pair.cxx \ NMTDS_PairMapHasher.cxx \ - NMTDS_StdMapNodeOfMapOfPairBoolean_0.cxx \ - NMTDS_ListIteratorOfListOfPassKey_0.cxx \ - NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx \ - NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \ - NMTDS_ListNodeOfListOfPassKey_0.cxx \ - NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx \ - NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \ - NMTDS_ListOfPassKey_0.cxx \ - NMTDS_ListOfPassKeyBoolean_0.cxx \ - NMTDS_MapIteratorOfMapOfPassKey_0.cxx \ - NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx \ - NMTDS_MapOfPassKey_0.cxx \ - NMTDS_MapOfPassKeyBoolean_0.cxx \ NMTDS_PassKeyBoolean.cxx \ NMTDS_PassKey.cxx \ NMTDS_PassKeyMapHasher.cxx \ NMTDS_PassKeyShape.cxx \ NMTDS_PassKeyShapeMapHasher.cxx \ NMTDS_ShapesDataStructure.cxx \ - NMTDS_StdMapNodeOfMapOfPassKey_0.cxx \ - NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx \ - NMTDS_Tools.cxx \ - NMTDS_BndSphere.cxx \ - NMTDS_BndSphereTree.cxx \ - NMTDS_BoxBndTree.cxx + NMTDS_Tools.cxx # additional information to compile and link file @@ -197,22 +105,8 @@ libNMTDS_la_LDFLAGS = \ $(CAS_LDPATH) -lTKBool -lTKBO # extra dist files -CDL_FILES = \ - NMTDS.cdl \ - NMTDS_BndSphere.cdl \ - NMTDS_IndexRange.cdl \ - NMTDS_InterfPool.cdl \ - NMTDS_Iterator.cdl \ - NMTDS_IteratorCheckerSI.cdl \ - NMTDS_Pair.cdl \ - NMTDS_PairBoolean.cdl \ - NMTDS_PairMapHasher.cdl \ - NMTDS_PassKey.cdl \ - NMTDS_PassKeyBoolean.cdl \ - NMTDS_PassKeyMapHasher.cdl \ - NMTDS_PassKeyShape.cdl \ - NMTDS_PassKeyShapeMapHasher.cdl \ - NMTDS_ShapesDataStructure.cdl \ - NMTDS_Tools.cdl +CDL_FILES = NMTDS.cdl -EXTRA_DIST += $(CDL_FILES) +EXTRA_DIST += \ + $(CDL_FILES) \ + FILES diff --git a/src/NMTDS/NMTDS.cdl b/src/NMTDS/NMTDS.cdl index 8e678d405..de747be18 100644 --- a/src/NMTDS/NMTDS.cdl +++ b/src/NMTDS/NMTDS.cdl @@ -1,4 +1,4 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +-- Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE -- -- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -28,109 +28,67 @@ package NMTDS ---Purpose: -uses - TCollection, - TColStd, - gp, - Bnd, - TopoDS, - TopAbs, - TopTools, - BooleanOperations, - BOPTools, - BOPTColStd +--uses + --TCollection, + --TColStd, + --gp, + --Bnd, + --TopoDS, + --TopAbs, + --TopTools, + --BooleanOperations, + --BOPTools, + --BOPTColStd is - enumeration InterfType is - TI_VV, - TI_VE, - TI_VF, - TI_EE, - TI_EF, - TI_FF, - TI_UNKNOWN - end InterfType; + imported InterfType from NMTDS; + imported BndSphere from NMTDS; + imported IndexRange from NMTDS; + imported InterfPool from NMTDS; + imported Iterator from NMTDS; + imported IteratorCheckerSI from NMTDS; + imported Pair from NMTDS; + imported PairBoolean from NMTDS; + imported PairMapHasher from NMTDS; + imported PassKey from NMTDS; + imported PassKeyBoolean from NMTDS; + imported PassKeyMapHasher from NMTDS; + imported PassKeyShape from NMTDS; + imported PassKeyShapeMapHasher from NMTDS; + imported Tools from NMTDS; + imported ShapesDataStructure from NMTDS; + imported PShapesDataStructure from NMTDS; + imported PIterator from NMTDS; + imported PInterfPool from NMTDS; -- - class ShapesDataStructure; - class IndexRange; - - class Iterator; - - class PassKey; - class PassKeyBoolean; - class PassKeyMapHasher; - class PassKeyShape; - class PassKeyShapeMapHasher; - class IteratorCheckerSI; - class Tools; - class InterfPool; - class BndSphere; - --modified by NIZNHY-PKV Mon Dec 12 08:39:27 2011f - class Pair; - class PairBoolean; - class PairMapHasher; - --modified by NIZNHY-PKV Mon Dec 12 08:39:30 2011t - -- - pointer PShapesDataStructure to ShapesDataStructure from NMTDS; - pointer PIterator to Iterator from NMTDS; - pointer PInterfPool to InterfPool from NMTDS; - - class CArray1OfIndexRange instantiates - CArray1 from BOPTColStd(IndexRange from NMTDS); + imported ListOfPassKey from NMTDS; + imported ListIteratorOfListOfPassKey from NMTDS; + + imported ListOfPassKeyBoolean from NMTDS; + imported ListIteratorOfListOfPassKeyBoolean from NMTDS; - class ListOfIndexedDataMapOfShapeAncestorsSuccessors instantiates - List from TCollection(IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations); - - class ListOfPassKey instantiates - List from TCollection(PassKey from NMTDS); + imported ListOfPair from NMTDS; + imported ListIteratorOfListOfPair from NMTDS; + + imported ListOfPairBoolean from NMTDS; + imported ListIteratorOfListOfPairBoolean from NMTDS; - class MapOfPassKey instantiates - Map from TCollection(PassKey from NMTDS, - PassKeyMapHasher from NMTDS); - - class ListOfPassKeyBoolean instantiates - List from TCollection(PassKeyBoolean from NMTDS); + imported ListOfIndexedDataMapOfShapeAncestorsSuccessors from NMTDS; + imported ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors from NMTDS; + + imported MapOfPassKey from NMTDS; + imported MapIteratorOfMapOfPassKey from NMTDS; - class MapOfPassKeyBoolean instantiates - Map from TCollection(PassKeyBoolean from NMTDS, - PassKeyMapHasher from NMTDS); - - class IndexedDataMapOfShapeBox - instantiates IndexedDataMap from TCollection (Shape from TopoDS, - Box from Bnd, - ShapeMapHasher from TopTools); - class IndexedDataMapOfIntegerShape - instantiates IndexedDataMap from TCollection (Integer from Standard, - Shape from TopoDS, - MapIntegerHasher from TColStd); - - class DataMapOfIntegerMapOfInteger - instantiates DataMap from TCollection (Integer from Standard, - MapOfInteger from TColStd, - MapIntegerHasher from TColStd); + imported MapOfPairBoolean from NMTDS; + imported MapIteratorOfMapOfPairBoolean from NMTDS; - - class IndexedDataMapOfShapeBndSphere - instantiates IndexedDataMap from TCollection(Shape from TopoDS, - BndSphere from NMTDS, - ShapeMapHasher from TopTools); + imported IndexedDataMapOfShapeBox from NMTDS; + imported IndexedDataMapOfIntegerShape from NMTDS; + imported IndexedDataMapOfShapeBndSphere from NMTDS; + imported DataMapOfIntegerMapOfInteger from NMTDS; + imported DataMapIteratorOfDataMapOfIntegerMapOfInteger from NMTDS; - --modified by NIZNHY-PKV Mon Dec 12 08:41:50 2011f - class ListOfPair instantiates - List from TCollection(Pair from NMTDS); - - class ListOfPairBoolean instantiates - List from TCollection(PairBoolean from NMTDS); - - class MapOfPairBoolean instantiates - Map from TCollection(PairBoolean from NMTDS, - PairMapHasher from NMTDS); --- class IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger instantiates --- IndexedDataMap from TCollection(Integer from Standard, --- IndexedDataMapOfShapeInteger from BooleanOperations, --- MapIntegerHasher from TColStd); - --modified by NIZNHY-PKV Mon Dec 12 08:41:54 2011t - - + imported CArray1OfIndexRange from NMTDS; + end NMTDS; diff --git a/src/NMTDS/NMTDS.pro b/src/NMTDS/NMTDS.pro deleted file mode 100644 index d41ffa6fe..000000000 --- a/src/NMTDS/NMTDS.pro +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = NMTDS -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -STDLIB = -lstdc++ - -CAS_LDPATH = -L$$(CASROOT)/Linux/lib - -INCLUDEPATH += $${CAS_CPPFLAGS} $${KERNEL_CXXFLAGS} - -LIBS += $${STDLIB} $${CAS_LDPATH} -lTKBool -lTKBO - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS - -HEADERS = Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx -HEADERS += Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx -HEADERS += Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx -HEADERS += Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx -HEADERS += Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx -HEADERS += Handle_NMTDS_ListNodeOfListOfPassKey.hxx -HEADERS += Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx -HEADERS += Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx -HEADERS += NMTDS_CArray1OfIndexRange.hxx -HEADERS += NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx -HEADERS += NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx -HEADERS += NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx -HEADERS += NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx -HEADERS += NMTDS_IndexedDataMapOfIntegerShape.hxx -HEADERS += NMTDS_IndexedDataMapOfShapeBox.hxx -HEADERS += NMTDS_IndexRange.hxx -HEADERS += NMTDS_Iterator.hxx -HEADERS += NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx -HEADERS += NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx -HEADERS += NMTDS_ListIteratorOfListOfPassKey.hxx -HEADERS += NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx -HEADERS += NMTDS_ListNodeOfListOfPassKeyBoolean.hxx -HEADERS += NMTDS_ListNodeOfListOfPassKey.hxx -HEADERS += NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx -HEADERS += NMTDS_ListOfPassKeyBoolean.hxx -HEADERS += NMTDS_ListOfPassKey.hxx -HEADERS += NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx -HEADERS += NMTDS_MapIteratorOfMapOfPassKey.hxx -HEADERS += NMTDS_MapOfPassKeyBoolean.hxx -HEADERS += NMTDS_MapOfPassKey.hxx -HEADERS += NMTDS_PassKeyBoolean.hxx -HEADERS += NMTDS_PassKey.hxx -HEADERS += NMTDS_PassKeyMapHasher.hxx -HEADERS += NMTDS_PShapesDataStructure.hxx -HEADERS += NMTDS_ShapesDataStructure.hxx -HEADERS += NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx -HEADERS += NMTDS_StdMapNodeOfMapOfPassKey.hxx -HEADERS += NMTDS_BoxBndTree.hxx - -SOURCES = NMTDS_CArray1OfIndexRange_0.cxx -SOURCES += NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx -SOURCES += NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx -SOURCES += NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx -SOURCES += NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx -SOURCES += NMTDS_IndexedDataMapOfIntegerShape_0.cxx -SOURCES += NMTDS_IndexedDataMapOfShapeBox_0.cxx -SOURCES += NMTDS_IndexRange.cxx -SOURCES += NMTDS_Iterator.cxx -SOURCES += NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx -SOURCES += NMTDS_ListIteratorOfListOfPassKey_0.cxx -SOURCES += NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx -SOURCES += NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx -SOURCES += NMTDS_ListNodeOfListOfPassKey_0.cxx -SOURCES += NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx -SOURCES += NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx -SOURCES += NMTDS_ListOfPassKey_0.cxx -SOURCES += NMTDS_ListOfPassKeyBoolean_0.cxx -SOURCES += NMTDS_MapIteratorOfMapOfPassKey_0.cxx -SOURCES += NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx -SOURCES += NMTDS_MapOfPassKey_0.cxx -SOURCES += NMTDS_MapOfPassKeyBoolean_0.cxx -SOURCES += NMTDS_PassKeyBoolean.cxx -SOURCES += NMTDS_PassKey.cxx -SOURCES += NMTDS_PassKeyMapHasher.cxx -SOURCES += NMTDS_ShapesDataStructure.cxx -SOURCES += NMTDS_StdMapNodeOfMapOfPassKey_0.cxx -SOURCES += NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx -SOURCES += NMTDS_BoxBndTree.cxx - -includes.files = $$HEADERS -includes.path = ../../include - -INSTALLS += includes diff --git a/src/NMTDS/NMTDS_BndSphere.cdl b/src/NMTDS/NMTDS_BndSphere.cdl deleted file mode 100644 index f60da4932..000000000 --- a/src/NMTDS/NMTDS_BndSphere.cdl +++ /dev/null @@ -1,78 +0,0 @@ --- Copyright (C) 2007-2011 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: NMTDS_BndSphere.cdl --- Created: --- Author: Peter KURNEV --- --- -class BndSphere from NMTDS - - ---Purpose: - -uses - Pnt from gp - -is - Create - returns BndSphere from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_BndSphere();" - - SetCenter(me:out; - theP:Pnt from gp); - ---C++: inline - - Center(me) - returns Pnt from gp; - ---C++:return const& - ---C++: inline - - SetRadius(me:out; - theR:Real from Standard); - ---C++: inline - - Radius(me) - returns Real from Standard; - ---C++: inline - - SetGap(me:out; - theGap:Real from Standard); - ---C++: inline - - Gap(me) - returns Real from Standard; - ---C++: inline - - Add(me:out; - theOther: BndSphere from NMTDS); - ---C++: inline - - IsOut(me; - theOther: BndSphere from NMTDS) - returns Boolean from Standard; - - SquareExtent(me) - returns Real from Standard; - ---C++: inline -fields - myCenter: Pnt from gp is protected; - myRadius: Real from Standard is protected; - myGap : Real from Standard is protected; - -end BndSphere; diff --git a/src/NMTDS/NMTDS_BndSphere.cxx b/src/NMTDS/NMTDS_BndSphere.cxx index af8c0c4d1..6d1b2d8b2 100644 --- a/src/NMTDS/NMTDS_BndSphere.cxx +++ b/src/NMTDS/NMTDS_BndSphere.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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,7 +22,7 @@ // Author: Peter KURNEV // // -#include +#include //======================================================================= //function : diff --git a/src/NMTDS/NMTDS_BndSphere.hxx b/src/NMTDS/NMTDS_BndSphere.hxx index 7b5e23e6c..9e5f6554e 100644 --- a/src/NMTDS/NMTDS_BndSphere.hxx +++ b/src/NMTDS/NMTDS_BndSphere.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -17,107 +17,57 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_BndSphere.hxx +// Created: +// Author: Peter KURNEV +// + #ifndef _NMTDS_BndSphere_HeaderFile #define _NMTDS_BndSphere_HeaderFile -#ifndef _gp_Pnt_HeaderFile +#include +#include #include -#endif -#ifndef _Standard_Real_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif -class gp_Pnt; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - +//======================================================================= +//class : NMTDS_BndSphere +//purpose : +//======================================================================= class NMTDS_BndSphere { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_BndSphere(); -Standard_EXPORT virtual ~NMTDS_BndSphere(); - + public: + Standard_EXPORT + NMTDS_BndSphere(); + + Standard_EXPORT + virtual ~NMTDS_BndSphere(); + void SetCenter(const gp_Pnt& theP) ; - - const gp_Pnt& Center() const; - + + const gp_Pnt& Center() const; + void SetRadius(const Standard_Real theR) ; - + Standard_Real Radius() const; - + void SetGap(const Standard_Real theGap) ; - + Standard_Real Gap() const; - + void Add(const NMTDS_BndSphere& theOther) ; - - -Standard_EXPORT Standard_Boolean IsOut(const NMTDS_BndSphere& theOther) const; - + + Standard_EXPORT + Standard_Boolean IsOut(const NMTDS_BndSphere& theOther) const; + Standard_Real SquareExtent() const; - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -gp_Pnt myCenter; -Standard_Real myRadius; -Standard_Real myGap; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + protected: + gp_Pnt myCenter; + Standard_Real myRadius; + Standard_Real myGap; }; - #include - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_BndSphere.ixx b/src/NMTDS/NMTDS_BndSphere.ixx deleted file mode 100644 index 1cf5404e0..000000000 --- a/src/NMTDS/NMTDS_BndSphere.ixx +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_BndSphere.jxx b/src/NMTDS/NMTDS_BndSphere.jxx deleted file mode 100644 index 699c2a272..000000000 --- a/src/NMTDS/NMTDS_BndSphere.jxx +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _NMTDS_BndSphere_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_BndSphere.lxx b/src/NMTDS/NMTDS_BndSphere.lxx index 582e8d290..a7be22637 100644 --- a/src/NMTDS/NMTDS_BndSphere.lxx +++ b/src/NMTDS/NMTDS_BndSphere.lxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/NMTDS/NMTDS_BndSphereTree.cxx b/src/NMTDS/NMTDS_BndSphereTree.cxx index f5f810fc4..a6b449ac9 100644 --- a/src/NMTDS/NMTDS_BndSphereTree.cxx +++ b/src/NMTDS/NMTDS_BndSphereTree.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/NMTDS/NMTDS_BndSphereTree.hxx b/src/NMTDS/NMTDS_BndSphereTree.hxx index 518745cf7..1721f1dc0 100644 --- a/src/NMTDS/NMTDS_BndSphereTree.hxx +++ b/src/NMTDS/NMTDS_BndSphereTree.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/NMTDS/NMTDS_BoxBndTree.cxx b/src/NMTDS/NMTDS_BoxBndTree.cxx index 100d9857c..055007096 100644 --- a/src/NMTDS/NMTDS_BoxBndTree.cxx +++ b/src/NMTDS/NMTDS_BoxBndTree.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/NMTDS/NMTDS_BoxBndTree.hxx b/src/NMTDS/NMTDS_BoxBndTree.hxx index 171da43ae..9ab98bb43 100755 --- a/src/NMTDS/NMTDS_BoxBndTree.hxx +++ b/src/NMTDS/NMTDS_BoxBndTree.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/NMTDS_NEW/NMTDS_CArray1OfIndexRange.cxx b/src/NMTDS/NMTDS_CArray1OfIndexRange.cxx similarity index 93% rename from src/NMTDS_NEW/NMTDS_CArray1OfIndexRange.cxx rename to src/NMTDS/NMTDS_CArray1OfIndexRange.cxx index d7dbed2c1..c984bebf2 100644 --- a/src/NMTDS_NEW/NMTDS_CArray1OfIndexRange.cxx +++ b/src/NMTDS/NMTDS_CArray1OfIndexRange.cxx @@ -1,40 +1,40 @@ -// Copyright (C) 2007-2011 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: NMTDS_CArray1OfIndexRange.hxx -// Created: -// Author: Peter KURNEV -// - -#include - -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_OutOfMemory_HeaderFile -#include -#endif - - -#define Array1Item NMTDS_IndexRange -#define Array1Item_hxx -#define BOPTColStd_CArray1 NMTDS_CArray1OfIndexRange -#define BOPTColStd_CArray1_hxx -#include - +// Copyright (C) 2007-2012 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: NMTDS_CArray1OfIndexRange.hxx +// Created: +// Author: Peter KURNEV +// + +#include + +#ifndef _Standard_OutOfRange_HeaderFile +#include +#endif +#ifndef _Standard_OutOfMemory_HeaderFile +#include +#endif + + +#define Array1Item NMTDS_IndexRange +#define Array1Item_hxx +#define BOPTColStd_CArray1 NMTDS_CArray1OfIndexRange +#define BOPTColStd_CArray1_hxx +#include + diff --git a/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx b/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx index 78abab26c..b2451b241 100644 --- a/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx +++ b/src/NMTDS/NMTDS_CArray1OfIndexRange.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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 @@ -18,137 +15,107 @@ // 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: NMTDS_BndSphere.hxx +// Created: +// Author: Peter KURNEV +// #ifndef _NMTDS_CArray1OfIndexRange_HeaderFile #define _NMTDS_CArray1OfIndexRange_HeaderFile -#include - -#ifndef _Standard_Address_HeaderFile +#include +#include #include -#endif -#ifndef _Standard_Integer_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif +#include class Standard_OutOfRange; class Standard_OutOfMemory; -class NMTDS_IndexRange; -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif +//======================================================================= +//function : NMTDS_CArray1OfIndexRange +//purpose : +//======================================================================= class NMTDS_CArray1OfIndexRange { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_CArray1OfIndexRange(const Standard_Integer Length = 0,const Standard_Integer BlockLength = 5); - - -Standard_EXPORT void Resize(const Standard_Integer theNewLength) ; - - -Standard_EXPORT void Destroy() ; -~NMTDS_CArray1OfIndexRange() -{ - Destroy(); -} - - - -Standard_EXPORT Standard_Integer Length() const; - - -Standard_EXPORT Standard_Integer Extent() const; - - -Standard_EXPORT Standard_Integer FactLength() const; - - -Standard_EXPORT Standard_Integer Append(const NMTDS_IndexRange& Value) ; - - -Standard_EXPORT void Remove(const Standard_Integer Index) ; - - -Standard_EXPORT const NMTDS_IndexRange& Value(const Standard_Integer Index) const; - const NMTDS_IndexRange& operator ()(const Standard_Integer Index) const -{ - return Value(Index); -} - - - -Standard_EXPORT NMTDS_IndexRange& ChangeValue(const Standard_Integer Index) ; - NMTDS_IndexRange& operator ()(const Standard_Integer Index) -{ - return ChangeValue(Index); -} - -Standard_EXPORT void SetBlockLength(const Standard_Integer aBL) ; -Standard_EXPORT Standard_Integer BlockLength() const; - -#if OCC_VERSION_LARGE > 0x06050200 -Standard_EXPORT void Purge(); -#endif - -protected: - - // Methods PROTECTED - // - - // Fields PROTECTED - // - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTDS_CArray1OfIndexRange(const NMTDS_CArray1OfIndexRange& AnArray); - - -Standard_EXPORT NMTDS_CArray1OfIndexRange& Assign(const NMTDS_CArray1OfIndexRange& Other) ; - NMTDS_CArray1OfIndexRange& operator =(const NMTDS_CArray1OfIndexRange& Other) -{ - return Assign(Other); -} - -Standard_EXPORT Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; - - // Fields PRIVATE - // -Standard_Address myStart; -Standard_Integer myLength; -Standard_Integer myFactLength; -Standard_Integer myBlockLength; -Standard_Boolean myIsAllocated; + public: + + Standard_EXPORT + NMTDS_CArray1OfIndexRange(const Standard_Integer Length = 0, + const Standard_Integer BlockLength = 5); + + Standard_EXPORT + void Resize(const Standard_Integer theNewLength) ; + + Standard_EXPORT + void Destroy() ; + + ~NMTDS_CArray1OfIndexRange() { + Destroy(); + } + + Standard_EXPORT + Standard_Integer Length() const; + + Standard_EXPORT + Standard_Integer Extent() const; + + Standard_EXPORT + Standard_Integer FactLength() const; + + Standard_EXPORT + Standard_Integer Append(const NMTDS_IndexRange& Value) ; + + Standard_EXPORT + void Remove(const Standard_Integer Index) ; + + Standard_EXPORT + const NMTDS_IndexRange& Value(const Standard_Integer Index) const; + + const NMTDS_IndexRange& operator ()(const Standard_Integer Index) const { + return Value(Index); + } + + Standard_EXPORT + NMTDS_IndexRange& ChangeValue(const Standard_Integer Index) ; + + NMTDS_IndexRange& operator ()(const Standard_Integer Index) { + return ChangeValue(Index); + } + + Standard_EXPORT + void SetBlockLength(const Standard_Integer aBL) ; + + Standard_EXPORT + Standard_Integer BlockLength() const; + + Standard_EXPORT + void Purge() ; + + private: + Standard_EXPORT + NMTDS_CArray1OfIndexRange(const NMTDS_CArray1OfIndexRange& AnArray); + + Standard_EXPORT + NMTDS_CArray1OfIndexRange& Assign(const NMTDS_CArray1OfIndexRange& Other) ; + + NMTDS_CArray1OfIndexRange& operator =(const NMTDS_CArray1OfIndexRange& Other) { + return Assign(Other); + } + + Standard_EXPORT + Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; + + + Standard_Address myStart; + Standard_Integer myLength; + Standard_Integer myFactLength; + Standard_Integer myBlockLength; + Standard_Boolean myIsAllocated; }; -// other Inline functions and methods (like "C++: function call" methods) -// - #endif diff --git a/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx b/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx deleted file mode 100644 index a9c32d62e..000000000 --- a/src/NMTDS/NMTDS_CArray1OfIndexRange_0.cxx +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_OutOfMemory_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexRange_HeaderFile -#include -#endif - - -#define Array1Item NMTDS_IndexRange -#define Array1Item_hxx -#define BOPTColStd_CArray1 NMTDS_CArray1OfIndexRange -#define BOPTColStd_CArray1_hxx -#include - diff --git a/src/NMTDS/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx b/src/NMTDS/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx index 2c1df380d..e139ab938 100644 --- a/src/NMTDS/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx +++ b/src/NMTDS/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -16,100 +16,17 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx +// Created: Mon Feb 20 09:31:43 2012 +// Author: +// -#ifndef _NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile -#define _NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class TColStd_MapOfInteger; -class TColStd_MapIntegerHasher; -class NMTDS_DataMapOfIntegerMapOfInteger; -class NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger; +#ifndef NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile +#define NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include +#ifndef NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile +#include #endif - -class NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger : public TCollection_BasicMapIterator { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger(); - - -Standard_EXPORT NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger(const NMTDS_DataMapOfIntegerMapOfInteger& aMap); - - -Standard_EXPORT void Initialize(const NMTDS_DataMapOfIntegerMapOfInteger& aMap) ; - - -Standard_EXPORT const Standard_Integer& Key() const; - - -Standard_EXPORT const TColStd_MapOfInteger& Value() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_0.cxx b/src/NMTDS/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_0.cxx deleted file mode 100644 index 7f5ab6964..000000000 --- a/src/NMTDS/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_0.cxx +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TColStd_MapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif -#ifndef _NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_MapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapNode_Type_() NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_() -#define TCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger -#define TCollection_DataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx b/src/NMTDS/NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx deleted file mode 100644 index d31ac8768..000000000 --- a/src/NMTDS/NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile -#define _NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TColStd_MapOfInteger_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class TColStd_MapOfInteger; -class TColStd_MapIntegerHasher; -class NMTDS_DataMapOfIntegerMapOfInteger; -class NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger; - - - -class NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger(const Standard_Integer& K,const TColStd_MapOfInteger& I,const TCollection_MapNodePtr& n); - - Standard_Integer& Key() const; - - TColStd_MapOfInteger& Value() const; -//Standard_EXPORT ~NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myKey; -TColStd_MapOfInteger myValue; - - -}; - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_MapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapNode_Type_() NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_() -#define TCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger -#define TCollection_DataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_DataMapNode -#undef TCollection_DataMapNode_hxx -#undef TCollection_DataMapIterator -#undef TCollection_DataMapIterator_hxx -#undef Handle_TCollection_DataMapNode -#undef TCollection_DataMapNode_Type_ -#undef TCollection_DataMap -#undef TCollection_DataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_0.cxx b/src/NMTDS/NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_0.cxx deleted file mode 100644 index 4bdaffb35..000000000 --- a/src/NMTDS/NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_0.cxx +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TColStd_MapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif -#ifndef _NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif -//NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger::~NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger", - sizeof(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger))) { - _anOtherObject = Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)((Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) ; -} -//Standard_Boolean NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger::~Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger() {} -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_MapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapNode_Type_() NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_() -#define TCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger -#define TCollection_DataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_DataMapOfIntegerMapOfInteger.hxx b/src/NMTDS/NMTDS_DataMapOfIntegerMapOfInteger.hxx index 06494e1a3..69278c1a5 100644 --- a/src/NMTDS/NMTDS_DataMapOfIntegerMapOfInteger.hxx +++ b/src/NMTDS/NMTDS_DataMapOfIntegerMapOfInteger.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -15,100 +15,26 @@ // 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: NMTDS_DataMapOfIntegerMapOfInteger.hxx +// Created: Mon Feb 20 09:27:40 2012 +// Author: +// -#ifndef _NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile -#define _NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_NoSuchObject; -class TColStd_MapOfInteger; -class TColStd_MapIntegerHasher; -class NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger; -class NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTDS_DataMapOfIntegerMapOfInteger : public TCollection_BasicMap -{ -public: - - void* operator new(size_t,void* anAddress) - { return anAddress; } - void* operator new(size_t size) - { return Standard::Allocate(size); } - void operator delete(void *anAddress) - { if (anAddress) Standard::Free((Standard_Address&)anAddress); } - - // Methods PUBLIC - // - - Standard_EXPORT NMTDS_DataMapOfIntegerMapOfInteger(const Standard_Integer NbBuckets = 1); - - Standard_EXPORT NMTDS_DataMapOfIntegerMapOfInteger& Assign(const NMTDS_DataMapOfIntegerMapOfInteger& Other); - NMTDS_DataMapOfIntegerMapOfInteger& operator =(const NMTDS_DataMapOfIntegerMapOfInteger& Other) - { - return Assign(Other); - } - - Standard_EXPORT void ReSize(const Standard_Integer NbBuckets); - - Standard_EXPORT void Clear(); - ~NMTDS_DataMapOfIntegerMapOfInteger() - { - Clear(); - } - - Standard_EXPORT Standard_Boolean Bind (const Standard_Integer& K,const TColStd_MapOfInteger& I); - Standard_EXPORT Standard_Boolean IsBound (const Standard_Integer& K) const; - Standard_EXPORT Standard_Boolean UnBind (const Standard_Integer& K); - - Standard_EXPORT const TColStd_MapOfInteger& Find (const Standard_Integer& K) const; - const TColStd_MapOfInteger& operator()(const Standard_Integer& K) const - { - return Find(K); - } - - Standard_EXPORT TColStd_MapOfInteger& ChangeFind(const Standard_Integer& K); - TColStd_MapOfInteger& operator()(const Standard_Integer& K) - { - return ChangeFind(K); - } - -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address Find1 (const Standard_Integer& K) const; - Standard_EXPORT Standard_Address ChangeFind1 (const Standard_Integer& K); -#endif -private: +#ifndef NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile +#define NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile - // Methods PRIVATE - // +#include +#include - Standard_EXPORT NMTDS_DataMapOfIntegerMapOfInteger(const NMTDS_DataMapOfIntegerMapOfInteger& Other); +#define _NCollection_MapHasher +#include -}; +typedef NCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger; +typedef NMTDS_DataMapOfIntegerMapOfInteger::Iterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger; + +#undef _NCollection_MapHasher -// other Inline functions and methods (like "C++: function call" methods) -// #endif diff --git a/src/NMTDS/NMTDS_DataMapOfIntegerMapOfInteger_0.cxx b/src/NMTDS/NMTDS_DataMapOfIntegerMapOfInteger_0.cxx deleted file mode 100644 index 00e94c760..000000000 --- a/src/NMTDS/NMTDS_DataMapOfIntegerMapOfInteger_0.cxx +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TColStd_MapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif -#ifndef _NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_MapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger -#define TCollection_DataMapNode_Type_() NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_() -#define TCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger -#define TCollection_DataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexRange.cdl b/src/NMTDS/NMTDS_IndexRange.cdl deleted file mode 100644 index 353eb8b87..000000000 --- a/src/NMTDS/NMTDS_IndexRange.cdl +++ /dev/null @@ -1,58 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTDS_IndexRange.cdl --- Created: Fri Nov 28 10:31:05 2003 --- Author: Peter KURNEV --- -class IndexRange from NMTDS - - ---Purpose: - ---uses ---raises - -is - Create - returns IndexRange from NMTDS; - - SetFirst(me:out; - aFirst:Integer from Standard); - - SetLast(me:out; - aLast:Integer from Standard); - - First(me) - returns Integer from Standard; - - Last(me) - returns Integer from Standard; - - IsInRange(me; - aIndex:Integer from Standard) - returns Boolean from Standard; - -fields - myFirst : Integer from Standard is protected; - myLast : Integer from Standard is protected; - -end IndexRange; diff --git a/src/NMTDS/NMTDS_IndexRange.cxx b/src/NMTDS/NMTDS_IndexRange.cxx index 798a6dad8..83969f5ae 100644 --- a/src/NMTDS/NMTDS_IndexRange.cxx +++ b/src/NMTDS/NMTDS_IndexRange.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,7 +25,8 @@ // Author: Peter KURNEV // // -#include +#include + //======================================================================= //function :NMTDS_IndexRange::NMTDS_IndexRange //purpose : diff --git a/src/NMTDS/NMTDS_IndexRange.hxx b/src/NMTDS/NMTDS_IndexRange.hxx index 2a7a152e2..84b055745 100644 --- a/src/NMTDS/NMTDS_IndexRange.hxx +++ b/src/NMTDS/NMTDS_IndexRange.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,96 +20,43 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_IndexRange.hxx +// Created: +// Author: Peter KURNEV +// +// + #ifndef _NMTDS_IndexRange_HeaderFile #define _NMTDS_IndexRange_HeaderFile -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile #include -#endif -#ifndef _Standard_Macro_HeaderFile #include -#endif - +#include +#include +//======================================================================= +//class : NMTDS_IndexRange +//purpose : +//======================================================================= class NMTDS_IndexRange { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_IndexRange(); - - -Standard_EXPORT void SetFirst(const Standard_Integer aFirst) ; - - -Standard_EXPORT void SetLast(const Standard_Integer aLast) ; - - -Standard_EXPORT Standard_Integer First() const; - - -Standard_EXPORT Standard_Integer Last() const; - - -Standard_EXPORT Standard_Boolean IsInRange(const Standard_Integer aIndex) const; - - - - + public: + + Standard_EXPORT + NMTDS_IndexRange(); + + Standard_EXPORT void SetFirst(const Standard_Integer aFirst) ; + + Standard_EXPORT void SetLast(const Standard_Integer aLast) ; + + Standard_EXPORT Standard_Integer First() const; + + Standard_EXPORT Standard_Integer Last() const; + + Standard_EXPORT Standard_Boolean IsInRange(const Standard_Integer aIndex) const; protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -Standard_Integer myFirst; -Standard_Integer myLast; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + Standard_Integer myFirst; + Standard_Integer myLast; }; - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_IndexRange.ixx b/src/NMTDS/NMTDS_IndexRange.ixx deleted file mode 100644 index 03bdbba36..000000000 --- a/src/NMTDS/NMTDS_IndexRange.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_IndexRange.jxx b/src/NMTDS/NMTDS_IndexRange.jxx deleted file mode 100644 index 4a50e2f52..000000000 --- a/src/NMTDS/NMTDS_IndexRange.jxx +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_IndexRange_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx deleted file mode 100644 index 6b06b3e3b..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#define _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class BooleanOperations_IndexedDataMapOfShapeInteger; -class TColStd_MapIntegerHasher; -class NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger; - - - -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(const Standard_Integer& K1,const Standard_Integer K2,const BooleanOperations_IndexedDataMapOfShapeInteger& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - - Standard_Integer& Key1() const; - - Standard_Integer& Key2() const; - - TCollection_MapNodePtr& Next2() const; - - BooleanOperations_IndexedDataMapOfShapeInteger& Value() const; -//Standard_EXPORT ~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myKey1; -Standard_Integer myKey2; -BooleanOperations_IndexedDataMapOfShapeInteger myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BooleanOperations_IndexedDataMapOfShapeInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx deleted file mode 100644 index 205b8e4d0..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _BooleanOperations_IndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -//NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger", - sizeof(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger))) { - _anOtherObject = Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)((Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) ; -} -//Standard_Boolean NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger::~Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() {} -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BooleanOperations_IndexedDataMapOfShapeInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx deleted file mode 100644 index 46f885532..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#define _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class TColStd_MapIntegerHasher; -class NMTDS_IndexedDataMapOfIntegerShape; - - - -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape(const Standard_Integer& K1,const Standard_Integer K2,const TopoDS_Shape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - - Standard_Integer& Key1() const; - - Standard_Integer& Key2() const; - - TCollection_MapNodePtr& Next2() const; - - TopoDS_Shape& Value() const; -//Standard_EXPORT ~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myKey1; -Standard_Integer myKey2; -TopoDS_Shape myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TopoDS_Shape -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx deleted file mode 100644 index ee03aa28c..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapOfIntegerShape_HeaderFile -#include -#endif -//NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape", - sizeof(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape))) { - _anOtherObject = Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)((Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) ; -} -//Standard_Boolean NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TopoDS_Shape -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx deleted file mode 100644 index ba267a420..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere.hxx +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_HeaderFile -#define _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _NMTDS_BndSphere_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class NMTDS_BndSphere; -class TopTools_ShapeMapHasher; -class NMTDS_IndexedDataMapOfShapeBndSphere; - - - -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere(const TopoDS_Shape& K1,const Standard_Integer K2,const NMTDS_BndSphere& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - - TopoDS_Shape& Key1() const; - - Standard_Integer& Key2() const; - - TCollection_MapNodePtr& Next2() const; - - NMTDS_BndSphere& Value() const; -//Standard_EXPORT ~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Shape myKey1; -Standard_Integer myKey2; -NMTDS_BndSphere myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem NMTDS_BndSphere -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBndSphere -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_0.cxx deleted file mode 100644 index 0f53830c6..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_0.cxx +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTDS_BndSphere_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapOfShapeBndSphere_HeaderFile -#include -#endif -//NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere::~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere", - sizeof(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere) Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere))) { - _anOtherObject = Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)((Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere) ; -} -//Standard_Boolean NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere::~Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere() {} -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem NMTDS_BndSphere -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBndSphere -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx deleted file mode 100644 index e378f9265..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#define _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Bnd_Box_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class Bnd_Box; -class TopTools_ShapeMapHasher; -class NMTDS_IndexedDataMapOfShapeBox; - - - -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox(const TopoDS_Shape& K1,const Standard_Integer K2,const Bnd_Box& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - - TopoDS_Shape& Key1() const; - - Standard_Integer& Key2() const; - - TCollection_MapNodePtr& Next2() const; - - Bnd_Box& Value() const; -//Standard_EXPORT ~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Shape myKey1; -Standard_Integer myKey2; -Bnd_Box myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem Bnd_Box -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBox -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx deleted file mode 100644 index c12f0e2e7..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Bnd_Box_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapOfShapeBox_HeaderFile -#include -#endif -//NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox", - sizeof(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox))) { - _anOtherObject = Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)((Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) ; -} -//Standard_Boolean NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem Bnd_Box -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBox -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx deleted file mode 100644 index 6a25d0770..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#define _NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class BooleanOperations_IndexedDataMapOfShapeInteger; -class TColStd_MapIntegerHasher; -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Assign(const NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Other) ; - NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& operator =(const NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger() -{ - Clear(); -} - - - -Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const BooleanOperations_IndexedDataMapOfShapeInteger& I) ; - - -Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const BooleanOperations_IndexedDataMapOfShapeInteger& T) ; - - -Standard_EXPORT void RemoveLast() ; - - -Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; - - -Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; - - -Standard_EXPORT const BooleanOperations_IndexedDataMapOfShapeInteger& FindFromIndex(const Standard_Integer I) const; - const BooleanOperations_IndexedDataMapOfShapeInteger& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - - - -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeInteger& ChangeFromIndex(const Standard_Integer I) ; - BooleanOperations_IndexedDataMapOfShapeInteger& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - - - -Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; - - -Standard_EXPORT const BooleanOperations_IndexedDataMapOfShapeInteger& FindFromKey(const Standard_Integer& K) const; - - -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeInteger& ChangeFromKey(const Standard_Integer& K) ; - -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address FindFromKey1 (const Standard_Integer& K) const; - Standard_EXPORT Standard_Address ChangeFromKey1 (const Standard_Integer& K); -#endif - -private: - - // Methods PRIVATE - // - -Standard_EXPORT NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger(const NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger& Other); - -}; - -// other Inline functions and methods (like "C++: function call" methods) -// - -#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx deleted file mode 100644 index e0ee10027..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BooleanOperations_IndexedDataMapOfShapeInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape.hxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape.hxx index f4405a215..8ae674ea8 100644 --- a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape.hxx +++ b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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 @@ -18,146 +15,28 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_IndexedDataMapOfIntegerShape_HeaderFile -#define _NMTDS_IndexedDataMapOfIntegerShape_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class TColStd_MapIntegerHasher; -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTDS_IndexedDataMapOfIntegerShape : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_IndexedDataMapOfIntegerShape(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTDS_IndexedDataMapOfIntegerShape& Assign(const NMTDS_IndexedDataMapOfIntegerShape& Other) ; - NMTDS_IndexedDataMapOfIntegerShape& operator =(const NMTDS_IndexedDataMapOfIntegerShape& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTDS_IndexedDataMapOfIntegerShape() -{ - Clear(); -} - - - -Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const TopoDS_Shape& I) ; - - -Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const TopoDS_Shape& T) ; - - -Standard_EXPORT void RemoveLast() ; - - -Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; - - -Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; - - -Standard_EXPORT const TopoDS_Shape& FindFromIndex(const Standard_Integer I) const; - const TopoDS_Shape& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - - - -Standard_EXPORT TopoDS_Shape& ChangeFromIndex(const Standard_Integer I) ; - TopoDS_Shape& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - - - -Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; - - -Standard_EXPORT const TopoDS_Shape& FindFromKey(const Standard_Integer& K) const; - - -Standard_EXPORT TopoDS_Shape& ChangeFromKey(const Standard_Integer& K) ; - -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address FindFromKey1 (const Standard_Integer& K) const; - Standard_EXPORT Standard_Address ChangeFromKey1 (const Standard_Integer& K); -#endif - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTDS_IndexedDataMapOfIntegerShape(const NMTDS_IndexedDataMapOfIntegerShape& Other); - - - // Fields PRIVATE - // +// +// File: NMTDS_IndexedDataMapOfIntegerShape.hxx +// Created: Mon Feb 20 09:20:07 2012 +// Author: +// -}; +#ifndef NMTDS_IndexedDataMapOfIntegerShape_HeaderFile +#define NMTDS_IndexedDataMapOfIntegerShape_HeaderFile +#include +#include +#include +#define _NCollection_MapHasher +#include +typedef NCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerShape; + +#undef _NCollection_MapHasher -// other Inline functions and methods (like "C++: function call" methods) -// #endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape_0.cxx deleted file mode 100644 index cf0b18c57..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape_0.cxx +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TopoDS_Shape -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBndSphere.hxx b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBndSphere.hxx index db75c3a34..23a1df289 100644 --- a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBndSphere.hxx +++ b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBndSphere.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -15,136 +15,31 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// -#ifndef _NMTDS_IndexedDataMapOfShapeBndSphere_HeaderFile -#define _NMTDS_IndexedDataMapOfShapeBndSphere_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class NMTDS_BndSphere; -class TopTools_ShapeMapHasher; -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTDS_IndexedDataMapOfShapeBndSphere : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_IndexedDataMapOfShapeBndSphere(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTDS_IndexedDataMapOfShapeBndSphere& Assign(const NMTDS_IndexedDataMapOfShapeBndSphere& Other) ; - NMTDS_IndexedDataMapOfShapeBndSphere& operator =(const NMTDS_IndexedDataMapOfShapeBndSphere& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTDS_IndexedDataMapOfShapeBndSphere() -{ - Clear(); -} - - - -Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const NMTDS_BndSphere& I) ; - - -Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const NMTDS_BndSphere& T) ; - - -Standard_EXPORT void RemoveLast() ; - - -Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; - - -Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; - - -Standard_EXPORT const NMTDS_BndSphere& FindFromIndex(const Standard_Integer I) const; - const NMTDS_BndSphere& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - - - -Standard_EXPORT NMTDS_BndSphere& ChangeFromIndex(const Standard_Integer I) ; - NMTDS_BndSphere& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - - +// File: NMTDS_IndexedDataMapOfShapeBndSphere.hxx +// Created: Mon Feb 20 09:17:01 2012 +// Author: +// -Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; +#ifndef NMTDS_IndexedDataMapOfShapeBndSphere_HeaderFile +#define NMTDS_IndexedDataMapOfShapeBndSphere_HeaderFile -Standard_EXPORT const NMTDS_BndSphere& FindFromKey(const TopoDS_Shape& K) const; +#include +#include +#include +#define _NCollection_MapHasher +#include -Standard_EXPORT NMTDS_BndSphere& ChangeFromKey(const TopoDS_Shape& K) ; -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address FindFromKey1 (const TopoDS_Shape& K) const; - Standard_EXPORT Standard_Address ChangeFromKey1 (const TopoDS_Shape& K); -#endif -private: +typedef NCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBndSphere; + +#undef _NCollection_MapHasher - // Methods PRIVATE - // -Standard_EXPORT NMTDS_IndexedDataMapOfShapeBndSphere(const NMTDS_IndexedDataMapOfShapeBndSphere& Other); -}; - -// other Inline functions and methods (like "C++: function call" methods) -// #endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBndSphere_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBndSphere_0.cxx deleted file mode 100644 index e96d9d38d..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBndSphere_0.cxx +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTDS_BndSphere_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_HeaderFile -#include -#endif - - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem NMTDS_BndSphere -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBndSphere_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBndSphere -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox.hxx b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox.hxx index 2492f25af..7c50c3925 100644 --- a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox.hxx +++ b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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 @@ -18,157 +15,30 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// -#ifndef _NMTDS_IndexedDataMapOfShapeBox_HeaderFile -#define _NMTDS_IndexedDataMapOfShapeBox_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class Bnd_Box; -class TopTools_ShapeMapHasher; -class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTDS_IndexedDataMapOfShapeBox : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_IndexedDataMapOfShapeBox(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTDS_IndexedDataMapOfShapeBox& Assign(const NMTDS_IndexedDataMapOfShapeBox& Other) ; - NMTDS_IndexedDataMapOfShapeBox& operator =(const NMTDS_IndexedDataMapOfShapeBox& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTDS_IndexedDataMapOfShapeBox() -{ - Clear(); -} - - - -Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const Bnd_Box& I) ; - - -Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const Bnd_Box& T) ; - - -Standard_EXPORT void RemoveLast() ; - - -Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; - - -Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; - - -Standard_EXPORT const Bnd_Box& FindFromIndex(const Standard_Integer I) const; - const Bnd_Box& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - - - -Standard_EXPORT Bnd_Box& ChangeFromIndex(const Standard_Integer I) ; - Bnd_Box& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - - - -Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; - - -Standard_EXPORT const Bnd_Box& FindFromKey(const TopoDS_Shape& K) const; - - -Standard_EXPORT Bnd_Box& ChangeFromKey(const TopoDS_Shape& K) ; - -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address FindFromKey1 (const TopoDS_Shape& K) const; - Standard_EXPORT Standard_Address ChangeFromKey1 (const TopoDS_Shape& K); -#endif - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTDS_IndexedDataMapOfShapeBox(const NMTDS_IndexedDataMapOfShapeBox& Other); - +// File: NMTDS_IndexedDataMapOfShapeBox.hxx +// Created: Mon Feb 20 09:17:01 2012 +// Author: +// - // Fields PRIVATE - // +#ifndef NMTDS_IndexedDataMapOfShapeBox_HeaderFile +#define NMTDS_IndexedDataMapOfShapeBox_HeaderFile -}; +#include +#include +#include +#define _NCollection_MapHasher +#include +typedef NCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBox; + +#undef _NCollection_MapHasher -// other Inline functions and methods (like "C++: function call" methods) -// #endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox_0.cxx deleted file mode 100644 index b5bfaaa9a..000000000 --- a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox_0.cxx +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Bnd_Box_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile -#include -#endif - - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem Bnd_Box -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox -#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() -#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBox -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTDS/NMTDS_InterfPool.cdl b/src/NMTDS/NMTDS_InterfPool.cdl deleted file mode 100644 index 188357053..000000000 --- a/src/NMTDS/NMTDS_InterfPool.cdl +++ /dev/null @@ -1,150 +0,0 @@ --- Copyright (C) 2007-2011 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: NMTDS_InterfPool.cdl --- Created: --- Author: Peter KURNEV --- -class InterfPool from NMTDS - - ---Purpose: - -uses - MapOfPairBoolean from NMTDS, - ListOfPairBoolean from NMTDS, - PairBoolean from NMTDS, - InterfType from NMTDS, - -- - CArray1OfSSInterference from BOPTools, - CArray1OfESInterference from BOPTools, - CArray1OfVSInterference from BOPTools, - CArray1OfEEInterference from BOPTools, - CArray1OfVEInterference from BOPTools, - CArray1OfVVInterference from BOPTools - ---raises - -is - Create - returns InterfPool from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_InterfPool();" - - - Add (me:out; - aPKB : PairBoolean from NMTDS; - aType: InterfType from NMTDS) - returns Boolean from Standard; - - Add (me:out; - aInd1 : Integer from Standard; - aInd2 : Integer from Standard; - aType : InterfType from NMTDS) - returns Boolean from Standard; - - Add (me:out; - aInd1 : Integer from Standard; - aInd2 : Integer from Standard; - bFlag : Boolean from Standard; - aType : InterfType from NMTDS) - returns Boolean from Standard; - - Contains(me; - aPKB : PairBoolean from NMTDS) - returns Boolean from Standard; - - Contains(me; - aInd1 : Integer from Standard; - aInd2 : Integer from Standard) - returns Boolean from Standard; - - Get(me) - returns ListOfPairBoolean from NMTDS; - ---C++: return const & - - Get(me; - aType : InterfType from NMTDS) - returns ListOfPairBoolean from NMTDS; - ---C++: return const & - - Get(me; - aInd : Integer from Standard) - returns ListOfPairBoolean from NMTDS; - ---C++: return const & - - Get(me; - aInd : Integer from Standard; - aType: InterfType from NMTDS) - returns ListOfPairBoolean from NMTDS; - ---C++: return const & - - -- - -- Interferences - -- - SSInterferences (me:out) - returns CArray1OfSSInterference from BOPTools; - ---C++: return & - ---Purpose: - --- Returns the reference to array Of F/F interferences - --- - ESInterferences (me:out) - returns CArray1OfESInterference from BOPTools; - ---C++: return & - ---Purpose: - --- Returns the reference to array Of E/F interferences - --- - VSInterferences (me:out) - returns CArray1OfVSInterference from BOPTools; - ---C++: return & - ---Purpose: - --- Returns the reference to array Of V/F interferences - --- - EEInterferences (me:out) - returns CArray1OfEEInterference from BOPTools; - ---C++: return & - ---Purpose: - --- Returns the reference to arrray Of E/E interferences - --- - VEInterferences (me:out) - returns CArray1OfVEInterference from BOPTools; - ---C++: return & - ---Purpose: - --- Returns the reference to arrray Of V/E interferences - --- - VVInterferences (me:out) - returns CArray1OfVVInterference from BOPTools; - ---C++: return & - ---Purpose: - --- Returns the reference to arrray Of V/V interferences - --- - --modified by NIZNHY-PKV Mon Dec 12 09:07:13 2011f - Purge(me:out) ; - --modified by NIZNHY-PKV Mon Dec 12 09:07:16 2011t -fields - myTable : MapOfPairBoolean from NMTDS [6] is protected; - myList : ListOfPairBoolean from NMTDS is protected; - myMaxInd: Integer from Standard is protected; - -- - mySSInterferences : CArray1OfSSInterference from BOPTools is protected; - myESInterferences : CArray1OfESInterference from BOPTools is protected; - myVSInterferences : CArray1OfVSInterference from BOPTools is protected; - myEEInterferences : CArray1OfEEInterference from BOPTools is protected; - myVEInterferences : CArray1OfVEInterference from BOPTools is protected; - myVVInterferences : CArray1OfVVInterference from BOPTools is protected; - -end InterfPool; diff --git a/src/NMTDS/NMTDS_InterfPool.cxx b/src/NMTDS/NMTDS_InterfPool.cxx index a4b6132df..025946bab 100644 --- a/src/NMTDS/NMTDS_InterfPool.cxx +++ b/src/NMTDS/NMTDS_InterfPool.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -15,11 +15,12 @@ // 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: NMTDS_InterfPool.cxx // Author: Peter KURNEV -#include +#include #include #include diff --git a/src/NMTDS/NMTDS_InterfPool.hxx b/src/NMTDS/NMTDS_InterfPool.hxx index cbb6cded6..71dc6c2ae 100644 --- a/src/NMTDS/NMTDS_InterfPool.hxx +++ b/src/NMTDS/NMTDS_InterfPool.hxx @@ -1,165 +1,123 @@ -// Copyright (C) 2007-2011 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 - -#ifndef _NMTDS_InterfPool_HeaderFile -#define _NMTDS_InterfPool_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _NMTDS_MapOfPairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPairBoolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfSSInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfESInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfVSInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfEEInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfVEInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfVVInterference_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _NMTDS_InterfType_HeaderFile -#include -#endif -class NMTDS_PairBoolean; -class NMTDS_ListOfPairBoolean; -class BOPTools_CArray1OfSSInterference; -class BOPTools_CArray1OfESInterference; -class BOPTools_CArray1OfVSInterference; -class BOPTools_CArray1OfEEInterference; -class BOPTools_CArray1OfVEInterference; -class BOPTools_CArray1OfVVInterference; - - - -class NMTDS_InterfPool { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_InterfPool(); -Standard_EXPORT virtual ~NMTDS_InterfPool(); - - Standard_EXPORT Standard_Boolean Add(const NMTDS_PairBoolean& aPKB,const NMTDS_InterfType aType) ; - - Standard_EXPORT Standard_Boolean Add(const Standard_Integer aInd1,const Standard_Integer aInd2,const NMTDS_InterfType aType) ; - - Standard_EXPORT Standard_Boolean Add(const Standard_Integer aInd1,const Standard_Integer aInd2,const Standard_Boolean bFlag,const NMTDS_InterfType aType) ; - - Standard_EXPORT Standard_Boolean Contains(const NMTDS_PairBoolean& aPKB) const; - - Standard_EXPORT Standard_Boolean Contains(const Standard_Integer aInd1,const Standard_Integer aInd2) const; - - Standard_EXPORT const NMTDS_ListOfPairBoolean& Get() const; - - Standard_EXPORT const NMTDS_ListOfPairBoolean& Get(const NMTDS_InterfType aType) const; - - Standard_EXPORT const NMTDS_ListOfPairBoolean& Get(const Standard_Integer aInd) const; - - Standard_EXPORT const NMTDS_ListOfPairBoolean& Get(const Standard_Integer aInd,const NMTDS_InterfType aType) const; - -//! Returns the reference to array Of F/F interferences
        - Standard_EXPORT BOPTools_CArray1OfSSInterference& SSInterferences() ; - -//! Returns the reference to array Of E/F interferences
        - Standard_EXPORT BOPTools_CArray1OfESInterference& ESInterferences() ; - -//! Returns the reference to array Of V/F interferences
        - Standard_EXPORT BOPTools_CArray1OfVSInterference& VSInterferences() ; - -//! Returns the reference to arrray Of E/E interferences
        - Standard_EXPORT BOPTools_CArray1OfEEInterference& EEInterferences() ; - -//! Returns the reference to arrray Of V/E interferences
        - Standard_EXPORT BOPTools_CArray1OfVEInterference& VEInterferences() ; - -//! Returns the reference to arrray Of V/V interferences
        - Standard_EXPORT BOPTools_CArray1OfVVInterference& VVInterferences() ; - - Standard_EXPORT void Purge() ; - - - - - -protected: - - - -NMTDS_MapOfPairBoolean myTable[6]; -NMTDS_ListOfPairBoolean myList; -Standard_Integer myMaxInd; -BOPTools_CArray1OfSSInterference mySSInterferences; -BOPTools_CArray1OfESInterference myESInterferences; -BOPTools_CArray1OfVSInterference myVSInterferences; -BOPTools_CArray1OfEEInterference myEEInterferences; -BOPTools_CArray1OfVEInterference myVEInterferences; -BOPTools_CArray1OfVVInterference myVVInterferences; - - -private: - - - - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 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: NMTDS_InterfPool.hxx +// +// Author: Peter KURNEV + +#ifndef _NMTDS_InterfPool_HeaderFile +#define _NMTDS_InterfPool_HeaderFile + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//class : NMTDS_InterfPool +//purpose : +//======================================================================= +class NMTDS_InterfPool { + public: + Standard_EXPORT + NMTDS_InterfPool(); + Standard_EXPORT + virtual ~NMTDS_InterfPool(); + + Standard_EXPORT + Standard_Boolean Add(const NMTDS_PairBoolean& aPKB, + const NMTDS_InterfType aType) ; + + Standard_EXPORT + Standard_Boolean Add(const Standard_Integer aInd1, + const Standard_Integer aInd2, + const NMTDS_InterfType aType) ; + + Standard_EXPORT + Standard_Boolean Add(const Standard_Integer aInd1, + const Standard_Integer aInd2, + const Standard_Boolean bFlag, + const NMTDS_InterfType aType) ; + + Standard_EXPORT + Standard_Boolean Contains(const NMTDS_PairBoolean& aPKB) const; + + Standard_EXPORT + Standard_Boolean Contains(const Standard_Integer aInd1, + const Standard_Integer aInd2) const; + + Standard_EXPORT + const NMTDS_ListOfPairBoolean& Get() const; + + Standard_EXPORT + const NMTDS_ListOfPairBoolean& Get(const NMTDS_InterfType aType) const; + + Standard_EXPORT + const NMTDS_ListOfPairBoolean& Get(const Standard_Integer aInd) const; + + Standard_EXPORT + const NMTDS_ListOfPairBoolean& Get(const Standard_Integer aInd, + const NMTDS_InterfType aType) const; + + //! Returns the reference to array Of F/F interferences
        + Standard_EXPORT BOPTools_CArray1OfSSInterference& SSInterferences() ; + + //! Returns the reference to array Of E/F interferences
        + Standard_EXPORT BOPTools_CArray1OfESInterference& ESInterferences() ; + + //! Returns the reference to array Of V/F interferences
        + Standard_EXPORT BOPTools_CArray1OfVSInterference& VSInterferences() ; + + //! Returns the reference to arrray Of E/E interferences
        + Standard_EXPORT BOPTools_CArray1OfEEInterference& EEInterferences() ; + + //! Returns the reference to arrray Of V/E interferences
        + Standard_EXPORT BOPTools_CArray1OfVEInterference& VEInterferences() ; + + //! Returns the reference to arrray Of V/V interferences
        + Standard_EXPORT BOPTools_CArray1OfVVInterference& VVInterferences() ; + + Standard_EXPORT void Purge() ; + +protected: + NMTDS_MapOfPairBoolean myTable[6]; + NMTDS_ListOfPairBoolean myList; + Standard_Integer myMaxInd; + BOPTools_CArray1OfSSInterference mySSInterferences; + BOPTools_CArray1OfESInterference myESInterferences; + BOPTools_CArray1OfVSInterference myVSInterferences; + BOPTools_CArray1OfEEInterference myEEInterferences; + BOPTools_CArray1OfVEInterference myVEInterferences; + BOPTools_CArray1OfVVInterference myVVInterferences; + +private: +}; + +#endif diff --git a/src/NMTDS/NMTDS_InterfPool.ixx b/src/NMTDS/NMTDS_InterfPool.ixx deleted file mode 100644 index c38b19ea8..000000000 --- a/src/NMTDS/NMTDS_InterfPool.ixx +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_InterfPool.jxx b/src/NMTDS/NMTDS_InterfPool.jxx deleted file mode 100644 index 96e12ff0a..000000000 --- a/src/NMTDS/NMTDS_InterfPool.jxx +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2007-2011 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 - -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPairBoolean_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfSSInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfESInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfVSInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfEEInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfVEInterference_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfVVInterference_HeaderFile -#include -#endif -#ifndef _NMTDS_InterfPool_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_InterfType.hxx b/src/NMTDS/NMTDS_InterfType.hxx index 145e248a7..5bf1e72a8 100644 --- a/src/NMTDS/NMTDS_InterfType.hxx +++ b/src/NMTDS/NMTDS_InterfType.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -17,12 +17,18 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_InterfType.hxx +// Created: +// Author: Peter KURNEV +// + + #ifndef _NMTDS_InterfType_HeaderFile #define _NMTDS_InterfType_HeaderFile -enum NMTDS_InterfType { - NMTDS_TI_VV, +enum NMTDS_InterfType { +NMTDS_TI_VV, NMTDS_TI_VE, NMTDS_TI_VF, NMTDS_TI_EE, @@ -31,7 +37,6 @@ NMTDS_TI_FF, NMTDS_TI_UNKNOWN }; - #ifndef _Standard_PrimitiveTypes_HeaderFile #include #endif diff --git a/src/NMTDS/NMTDS_Iterator.cdl b/src/NMTDS/NMTDS_Iterator.cdl deleted file mode 100755 index 1a836be17..000000000 --- a/src/NMTDS/NMTDS_Iterator.cdl +++ /dev/null @@ -1,96 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTDS_Iterator.cdl --- Created: --- Author: Peter KURNEV --- -class Iterator from NMTDS - - ---Purpose: - -uses - DataMapOfIntegerListOfInteger from TColStd, - ShapeEnum from TopAbs, - ShapesDataStructure from NMTDS, - PShapesDataStructure from NMTDS, - ListOfPairBoolean from NMTDS, - ListIteratorOfListOfPairBoolean from NMTDS, - PassKeyBoolean from NMTDS - ---raises - -is - Create - returns Iterator from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_Iterator();" - - - SetDS(me:out; - pDS:PShapesDataStructure from NMTDS); - - DS(me) - returns ShapesDataStructure from NMTDS; - ---C++:return const & - - Initialize(me: out; - aType1: ShapeEnum from TopAbs; - aType2: ShapeEnum from TopAbs); - More(me) - returns Boolean from Standard; - - Next(me: out); - - Current(me; aIndex1:out Integer from Standard; - aIndex2:out Integer from Standard; - aWithSubShape: out Boolean from Standard); - - Prepare(me:out) - is virtual; - - Intersect(me:out) - is virtual protected; - - ExpectedLength(me) - returns Integer from Standard; - - BlockLength(me) - returns Integer from Standard; - - SDVertices(me) - returns DataMapOfIntegerListOfInteger from TColStd; - ---C++:return const & - - FillMVSD(myclass; - aMVSD1:DataMapOfIntegerListOfInteger from TColStd; - aMVSD2:out DataMapOfIntegerListOfInteger from TColStd); - -fields - myDS :PShapesDataStructure from NMTDS is protected; - myLists :ListOfPairBoolean from NMTDS [6] is protected; - myIterator :ListIteratorOfListOfPairBoolean from NMTDS is protected; - myEmptyList:ListOfPairBoolean from NMTDS is protected; - myLength :Integer from Standard is protected; - -- - myMVSD :DataMapOfIntegerListOfInteger from TColStd is protected; - -end Iterator; diff --git a/src/NMTDS/NMTDS_Iterator.cxx b/src/NMTDS/NMTDS_Iterator.cxx index 3db662e57..00bd62623 100755 --- a/src/NMTDS/NMTDS_Iterator.cxx +++ b/src/NMTDS/NMTDS_Iterator.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,11 +18,12 @@ // 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: NMTDS_Iterator.cxx // Author: Peter KURNEV -#include +#include // #include // @@ -52,6 +53,7 @@ #include #include #include +#include //======================================================================= //function : NMTDS_Iterator diff --git a/src/NMTDS/NMTDS_Iterator.hxx b/src/NMTDS/NMTDS_Iterator.hxx index 3dd7fb3f7..d1d0ebd92 100644 --- a/src/NMTDS/NMTDS_Iterator.hxx +++ b/src/NMTDS/NMTDS_Iterator.hxx @@ -1,122 +1,103 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_Iterator_HeaderFile -#define _NMTDS_Iterator_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _NMTDS_PShapesDataStructure_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfPairBoolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TColStd_DataMapOfIntegerListOfInteger_HeaderFile -#include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class NMTDS_ShapesDataStructure; -class TColStd_DataMapOfIntegerListOfInteger; - - - -class NMTDS_Iterator { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_Iterator(); -Standard_EXPORT virtual ~NMTDS_Iterator(); - - Standard_EXPORT void SetDS(const NMTDS_PShapesDataStructure& pDS) ; - - Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const; - - Standard_EXPORT void Initialize(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; - - Standard_EXPORT Standard_Boolean More() const; - - Standard_EXPORT void Next() ; - - Standard_EXPORT void Current(Standard_Integer& aIndex1,Standard_Integer& aIndex2,Standard_Boolean& aWithSubShape) const; - - Standard_EXPORT virtual void Prepare() ; - - Standard_EXPORT Standard_Integer ExpectedLength() const; - - Standard_EXPORT Standard_Integer BlockLength() const; - - Standard_EXPORT const TColStd_DataMapOfIntegerListOfInteger& SDVertices() const; - - Standard_EXPORT static void FillMVSD(const TColStd_DataMapOfIntegerListOfInteger& aMVSD1,TColStd_DataMapOfIntegerListOfInteger& aMVSD2) ; - - -protected: - - - Standard_EXPORT virtual void Intersect() ; - - -NMTDS_PShapesDataStructure myDS; -NMTDS_ListOfPairBoolean myLists[6]; -NMTDS_ListIteratorOfListOfPairBoolean myIterator; -NMTDS_ListOfPairBoolean myEmptyList; -Standard_Integer myLength; -TColStd_DataMapOfIntegerListOfInteger myMVSD; - - -private: - -}; - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File: NMTDS_Iterator.hxx +// Author: Peter KURNEV + +#ifndef _NMTDS_Iterator_HeaderFile +#define _NMTDS_Iterator_HeaderFile + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//class : NMTDS_Iterator +//purpose : +//======================================================================= +class NMTDS_Iterator { + public: + Standard_EXPORT + NMTDS_Iterator(); + + Standard_EXPORT + virtual ~NMTDS_Iterator(); + + Standard_EXPORT + void SetDS(const NMTDS_PShapesDataStructure& pDS) ; + + Standard_EXPORT + const NMTDS_ShapesDataStructure& DS() const; + + Standard_EXPORT + void Initialize(const TopAbs_ShapeEnum aType1, + const TopAbs_ShapeEnum aType2) ; + + Standard_EXPORT + Standard_Boolean More() const; + + Standard_EXPORT + void Next() ; + + Standard_EXPORT + void Current(Standard_Integer& aIndex1, + Standard_Integer& aIndex2, + Standard_Boolean& aWithSubShape) const; + + Standard_EXPORT + virtual void Prepare() ; + + Standard_EXPORT + Standard_Integer ExpectedLength() const; + + Standard_EXPORT + Standard_Integer BlockLength() const; + + Standard_EXPORT + const TColStd_DataMapOfIntegerListOfInteger& SDVertices() const; + + Standard_EXPORT + static void FillMVSD(const TColStd_DataMapOfIntegerListOfInteger& aMVSD1, + TColStd_DataMapOfIntegerListOfInteger& aMVSD2) ; + +protected: + Standard_EXPORT + virtual void Intersect() ; + // + + NMTDS_PShapesDataStructure myDS; + NMTDS_ListOfPairBoolean myLists[6]; + NMTDS_ListIteratorOfListOfPairBoolean myIterator; + NMTDS_ListOfPairBoolean myEmptyList; + Standard_Integer myLength; + TColStd_DataMapOfIntegerListOfInteger myMVSD; +}; + +#endif diff --git a/src/NMTDS/NMTDS_Iterator.ixx b/src/NMTDS/NMTDS_Iterator.ixx deleted file mode 100644 index 7995348dd..000000000 --- a/src/NMTDS/NMTDS_Iterator.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_Iterator.jxx b/src/NMTDS/NMTDS_Iterator.jxx deleted file mode 100644 index b20bc92c2..000000000 --- a/src/NMTDS/NMTDS_Iterator.jxx +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_ShapesDataStructure_HeaderFile -#include -#endif -#ifndef _TColStd_DataMapOfIntegerListOfInteger_HeaderFile -#include -#endif -#ifndef _NMTDS_Iterator_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_IteratorCheckerSI.cdl b/src/NMTDS/NMTDS_IteratorCheckerSI.cdl deleted file mode 100644 index 3c3ecb8cb..000000000 --- a/src/NMTDS/NMTDS_IteratorCheckerSI.cdl +++ /dev/null @@ -1,41 +0,0 @@ --- Copyright (C) 2007-2011 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: NMTDS_IteratorCheckerSI.cdl --- Created: Tue Feb 6 10:18:27 2007 --- Author: Peter KURNEV --- -class IteratorCheckerSI from NMTDS - inherits Iterator from NMTDS - - ---Purpose: - ---uses ---raises - -is - Create - returns IteratorCheckerSI from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_IteratorCheckerSI();" - - Intersect(me:out) - is redefined protected; - ---fields -end IteratorCheckerSI; diff --git a/src/NMTDS/NMTDS_IteratorCheckerSI.cxx b/src/NMTDS/NMTDS_IteratorCheckerSI.cxx index 51ce1bb80..275333e9d 100644 --- a/src/NMTDS/NMTDS_IteratorCheckerSI.cxx +++ b/src/NMTDS/NMTDS_IteratorCheckerSI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -15,11 +15,12 @@ // 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: NMTDS_IteratorChecker.cxx +// File: NMTDS_IteratorChecker.hxx // Author: Peter KURNEV -#include +#include #include #include diff --git a/src/NMTDS/NMTDS_IteratorCheckerSI.hxx b/src/NMTDS/NMTDS_IteratorCheckerSI.hxx index 1b540ffea..3278a86c4 100644 --- a/src/NMTDS/NMTDS_IteratorCheckerSI.hxx +++ b/src/NMTDS/NMTDS_IteratorCheckerSI.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -17,80 +17,30 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_IteratorChecker.cxx +// Author: Peter KURNEV + #ifndef _NMTDS_IteratorCheckerSI_HeaderFile #define _NMTDS_IteratorCheckerSI_HeaderFile -#ifndef _NMTDS_Iterator_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile #include -#endif -#ifndef _Standard_Macro_HeaderFile #include -#endif - +#include +//======================================================================= +//class : NMTDS_IteratorCheckerSI +//purpose : +//======================================================================= class NMTDS_IteratorCheckerSI : public NMTDS_Iterator { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_IteratorCheckerSI(); -Standard_EXPORT virtual ~NMTDS_IteratorCheckerSI(); - - - - + public: + + Standard_EXPORT + NMTDS_IteratorCheckerSI(); + Standard_EXPORT + virtual ~NMTDS_IteratorCheckerSI(); protected: - - // Methods PROTECTED - // - - -Standard_EXPORT virtual void Intersect() ; - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + Standard_EXPORT + virtual void Intersect() ; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_IteratorCheckerSI.ixx b/src/NMTDS/NMTDS_IteratorCheckerSI.ixx deleted file mode 100644 index 511621306..000000000 --- a/src/NMTDS/NMTDS_IteratorCheckerSI.ixx +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_IteratorCheckerSI.jxx b/src/NMTDS/NMTDS_IteratorCheckerSI.jxx deleted file mode 100644 index 4ab2a09d7..000000000 --- a/src/NMTDS/NMTDS_IteratorCheckerSI.jxx +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _NMTDS_IteratorCheckerSI_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx index f91c7fb8e..b2738719c 100644 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,126 +16,17 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// -#ifndef _NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define _NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors; -class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors; -class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors(); - - -Standard_EXPORT NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& L); - - -Standard_EXPORT void Initialize(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& L) ; - - Standard_Boolean More() const; - - -Standard_EXPORT void Next() ; +#ifndef NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile +#define NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& Value() const; - - -friend class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - +#ifndef NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile +#include +#endif #endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx deleted file mode 100644 index a4e98c39c..000000000 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif - - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPair.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPair.hxx index cba16cdaa..958ce936b 100644 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfPair.hxx +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPair.hxx @@ -1,127 +1,32 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_ListIteratorOfListOfPair_HeaderFile -#define _NMTDS_ListIteratorOfListOfPair_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPair_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTDS_ListOfPair; -class NMTDS_Pair; -class NMTDS_ListNodeOfListOfPair; - - - -class NMTDS_ListIteratorOfListOfPair { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_ListIteratorOfListOfPair(); - - Standard_EXPORT NMTDS_ListIteratorOfListOfPair(const NMTDS_ListOfPair& L); - - Standard_EXPORT void Initialize(const NMTDS_ListOfPair& L) ; - - Standard_Boolean More() const; - - Standard_EXPORT void Next() ; - - Standard_EXPORT NMTDS_Pair& Value() const; - - -friend class NMTDS_ListOfPair; - - - -protected: - - - - - -private: - - - -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item NMTDS_Pair -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPair -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPair_Type_() -#define TCollection_List NMTDS_ListOfPair -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 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: NMTDS_ListIteratorOfListOfPair.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// + + +#ifndef NMTDS_ListIteratorOfListOfPair_HeaderFile +#define NMTDS_ListIteratorOfListOfPair_HeaderFile + +#ifndef NMTDS_ListOfPair_HeaderFile +#include +#endif + +#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPairBoolean.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPairBoolean.hxx index 97bc01b72..4353f75be 100644 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfPairBoolean.hxx +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPairBoolean.hxx @@ -1,127 +1,32 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_ListIteratorOfListOfPairBoolean_HeaderFile -#define _NMTDS_ListIteratorOfListOfPairBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPairBoolean_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTDS_ListOfPairBoolean; -class NMTDS_PairBoolean; -class NMTDS_ListNodeOfListOfPairBoolean; - - - -class NMTDS_ListIteratorOfListOfPairBoolean { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_ListIteratorOfListOfPairBoolean(); - - Standard_EXPORT NMTDS_ListIteratorOfListOfPairBoolean(const NMTDS_ListOfPairBoolean& L); - - Standard_EXPORT void Initialize(const NMTDS_ListOfPairBoolean& L) ; - - Standard_Boolean More() const; - - Standard_EXPORT void Next() ; - - Standard_EXPORT NMTDS_PairBoolean& Value() const; - - -friend class NMTDS_ListOfPairBoolean; - - - -protected: - - - - - -private: - - - -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item NMTDS_PairBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPairBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPairBoolean_Type_() -#define TCollection_List NMTDS_ListOfPairBoolean -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 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: NMTDS_ListIteratorOfListOfPairBoolean.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// + + +#ifndef NMTDS_ListIteratorOfListOfPairBoolean_HeaderFile +#define NMTDS_ListIteratorOfListOfPairBoolean_HeaderFile + +#ifndef NMTDS_ListOfPairBoolean_HeaderFile +#include +#endif + +#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPairBoolean_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPairBoolean_0.cxx deleted file mode 100644 index f9b27daaa..000000000 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfPairBoolean_0.cxx +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfPairBoolean_HeaderFile -#include -#endif - - -#define Item NMTDS_PairBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPairBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPairBoolean_Type_() -#define TCollection_List NMTDS_ListOfPairBoolean -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPair_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPair_0.cxx deleted file mode 100644 index c186b06d9..000000000 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfPair_0.cxx +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPair_HeaderFile -#include -#endif -#ifndef _NMTDS_Pair_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfPair_HeaderFile -#include -#endif - - -#define Item NMTDS_Pair -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPair -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPair_Type_() -#define TCollection_List NMTDS_ListOfPair -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx index 8f6229653..8f7980ea2 100644 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,126 +16,17 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_ListIteratorOfListOfPassKey.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// -#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile -#define _NMTDS_ListIteratorOfListOfPassKey_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTDS_ListOfPassKey; -class NMTDS_PassKey; -class NMTDS_ListNodeOfListOfPassKey; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_ListIteratorOfListOfPassKey { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_ListIteratorOfListOfPassKey(); - - -Standard_EXPORT NMTDS_ListIteratorOfListOfPassKey(const NMTDS_ListOfPassKey& L); - - -Standard_EXPORT void Initialize(const NMTDS_ListOfPassKey& L) ; - - Standard_Boolean More() const; - - -Standard_EXPORT void Next() ; +#ifndef NMTDS_ListIteratorOfListOfPassKey_HeaderFile +#define NMTDS_ListIteratorOfListOfPassKey_HeaderFile -Standard_EXPORT NMTDS_PassKey& Value() const; - - -friend class NMTDS_ListOfPassKey; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item NMTDS_PassKey -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() -#define TCollection_List NMTDS_ListOfPassKey -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - +#ifndef NMTDS_ListOfPassKey_HeaderFile +#include +#endif #endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx index c23177b37..908b61d72 100644 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,126 +16,17 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// -#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile -#define _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTDS_ListOfPassKeyBoolean; -class NMTDS_PassKeyBoolean; -class NMTDS_ListNodeOfListOfPassKeyBoolean; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_ListIteratorOfListOfPassKeyBoolean { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_ListIteratorOfListOfPassKeyBoolean(); - - -Standard_EXPORT NMTDS_ListIteratorOfListOfPassKeyBoolean(const NMTDS_ListOfPassKeyBoolean& L); - - -Standard_EXPORT void Initialize(const NMTDS_ListOfPassKeyBoolean& L) ; - - Standard_Boolean More() const; - - -Standard_EXPORT void Next() ; +#ifndef NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#define NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile -Standard_EXPORT NMTDS_PassKeyBoolean& Value() const; - - -friend class NMTDS_ListOfPassKeyBoolean; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item NMTDS_PassKeyBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() -#define TCollection_List NMTDS_ListOfPassKeyBoolean -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - +#ifndef NMTDS_ListOfPassKeyBoolean_HeaderFile +#include +#endif #endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx deleted file mode 100644 index 0d662f761..000000000 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile -#include -#endif - - -#define Item NMTDS_PassKeyBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() -#define TCollection_List NMTDS_ListOfPassKeyBoolean -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx deleted file mode 100644 index 50645de9b..000000000 --- a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile -#include -#endif - - -#define Item NMTDS_PassKey -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() -#define TCollection_List NMTDS_ListOfPassKey -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx deleted file mode 100644 index 5d060a9a7..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define _NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif - -#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors; -class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors; -class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors; - - - -class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,const TCollection_MapNodePtr& n); - - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& Value() const; -//Standard_EXPORT ~NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors myValue; - - -}; - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx deleted file mode 100644 index 83c36360b..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -//NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::~NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors", - sizeof(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors))) { - _anOtherObject = Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)((Handle(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) ; -} -//Standard_Boolean NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors::~Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors() {} -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPair.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfPair.hxx deleted file mode 100644 index bd6aaa8df..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfPair.hxx +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_ListNodeOfListOfPair_HeaderFile -#define _NMTDS_ListNodeOfListOfPair_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_DefineHandle_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPair_HeaderFile -#include -#endif - -#ifndef _NMTDS_Pair_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTDS_Pair; -class NMTDS_ListOfPair; -class NMTDS_ListIteratorOfListOfPair; - - - -class NMTDS_ListNodeOfListOfPair : public TCollection_MapNode { - -public: - - - NMTDS_ListNodeOfListOfPair(const NMTDS_Pair& I,const TCollection_MapNodePtr& n); - - NMTDS_Pair& Value() const; - - - - - DEFINE_STANDARD_RTTI(NMTDS_ListNodeOfListOfPair) - -protected: - - - - -private: - - -NMTDS_Pair myValue; - - -}; - -#define Item NMTDS_Pair -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPair -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPair_Type_() -#define TCollection_List NMTDS_ListOfPair -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPairBoolean.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfPairBoolean.hxx deleted file mode 100644 index 2661de064..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfPairBoolean.hxx +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_ListNodeOfListOfPairBoolean_HeaderFile -#define _NMTDS_ListNodeOfListOfPairBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_DefineHandle_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPairBoolean_HeaderFile -#include -#endif - -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTDS_PairBoolean; -class NMTDS_ListOfPairBoolean; -class NMTDS_ListIteratorOfListOfPairBoolean; - - - -class NMTDS_ListNodeOfListOfPairBoolean : public TCollection_MapNode { - -public: - - - NMTDS_ListNodeOfListOfPairBoolean(const NMTDS_PairBoolean& I,const TCollection_MapNodePtr& n); - - NMTDS_PairBoolean& Value() const; - - - - - DEFINE_STANDARD_RTTI(NMTDS_ListNodeOfListOfPairBoolean) - -protected: - - - - -private: - - -NMTDS_PairBoolean myValue; - - -}; - -#define Item NMTDS_PairBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPairBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPairBoolean_Type_() -#define TCollection_List NMTDS_ListOfPairBoolean -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPairBoolean_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfPairBoolean_0.cxx deleted file mode 100644 index 8aef0cdb3..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfPairBoolean_0.cxx +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - -#ifndef _Standard_Type_HeaderFile -#include -#endif - -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfPairBoolean_HeaderFile -#include -#endif - - - - -IMPLEMENT_STANDARD_TYPE(NMTDS_ListNodeOfListOfPairBoolean) -IMPLEMENT_STANDARD_SUPERTYPE_ARRAY() - STANDARD_TYPE(TCollection_MapNode), - STANDARD_TYPE(MMgt_TShared), - STANDARD_TYPE(Standard_Transient), - -IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_END() -IMPLEMENT_STANDARD_TYPE_END(NMTDS_ListNodeOfListOfPairBoolean) - - -IMPLEMENT_DOWNCAST(NMTDS_ListNodeOfListOfPairBoolean,Standard_Transient) -IMPLEMENT_STANDARD_RTTI(NMTDS_ListNodeOfListOfPairBoolean) - - -#define Item NMTDS_PairBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPairBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPairBoolean_Type_() -#define TCollection_List NMTDS_ListOfPairBoolean -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPair_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfPair_0.cxx deleted file mode 100644 index d35a153db..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfPair_0.cxx +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - -#ifndef _Standard_Type_HeaderFile -#include -#endif - -#ifndef _NMTDS_Pair_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPair_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfPair_HeaderFile -#include -#endif - - - - -IMPLEMENT_STANDARD_TYPE(NMTDS_ListNodeOfListOfPair) -IMPLEMENT_STANDARD_SUPERTYPE_ARRAY() - STANDARD_TYPE(TCollection_MapNode), - STANDARD_TYPE(MMgt_TShared), - STANDARD_TYPE(Standard_Transient), - -IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_END() -IMPLEMENT_STANDARD_TYPE_END(NMTDS_ListNodeOfListOfPair) - - -IMPLEMENT_DOWNCAST(NMTDS_ListNodeOfListOfPair,Standard_Transient) -IMPLEMENT_STANDARD_RTTI(NMTDS_ListNodeOfListOfPair) - - -#define Item NMTDS_Pair -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPair -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPair_Type_() -#define TCollection_List NMTDS_ListOfPair -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx deleted file mode 100644 index 86a966dbb..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile -#define _NMTDS_ListNodeOfListOfPassKey_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile -#include -#endif - -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTDS_PassKey; -class NMTDS_ListOfPassKey; -class NMTDS_ListIteratorOfListOfPassKey; - - - -class NMTDS_ListNodeOfListOfPassKey : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_ListNodeOfListOfPassKey(const NMTDS_PassKey& I,const TCollection_MapNodePtr& n); - - NMTDS_PassKey& Value() const; -//Standard_EXPORT ~NMTDS_ListNodeOfListOfPassKey(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -NMTDS_PassKey myValue; - - -}; - -#define Item NMTDS_PassKey -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() -#define TCollection_List NMTDS_ListOfPassKey -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx deleted file mode 100644 index b952252f8..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile -#define _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile -#include -#endif - -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTDS_PassKeyBoolean; -class NMTDS_ListOfPassKeyBoolean; -class NMTDS_ListIteratorOfListOfPassKeyBoolean; - - - -class NMTDS_ListNodeOfListOfPassKeyBoolean : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_ListNodeOfListOfPassKeyBoolean(const NMTDS_PassKeyBoolean& I,const TCollection_MapNodePtr& n); - - NMTDS_PassKeyBoolean& Value() const; -//Standard_EXPORT ~NMTDS_ListNodeOfListOfPassKeyBoolean(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -NMTDS_PassKeyBoolean myValue; - - -}; - -#define Item NMTDS_PassKeyBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() -#define TCollection_List NMTDS_ListOfPassKeyBoolean -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx deleted file mode 100644 index beed5e0b2..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile -#include -#endif -//NMTDS_ListNodeOfListOfPassKeyBoolean::~NMTDS_ListNodeOfListOfPassKeyBoolean() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_ListNodeOfListOfPassKeyBoolean", - sizeof(NMTDS_ListNodeOfListOfPassKeyBoolean), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean))) { - _anOtherObject = Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)((Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_ListNodeOfListOfPassKeyBoolean::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean) ; -} -//Standard_Boolean NMTDS_ListNodeOfListOfPassKeyBoolean::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_ListNodeOfListOfPassKeyBoolean::~Handle_NMTDS_ListNodeOfListOfPassKeyBoolean() {} -#define Item NMTDS_PassKeyBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() -#define TCollection_List NMTDS_ListOfPassKeyBoolean -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx deleted file mode 100644 index f6dd197a6..000000000 --- a/src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_ListOfPassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile -#include -#endif -//NMTDS_ListNodeOfListOfPassKey::~NMTDS_ListNodeOfListOfPassKey() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_ListNodeOfListOfPassKey_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_ListNodeOfListOfPassKey", - sizeof(NMTDS_ListNodeOfListOfPassKey), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_ListNodeOfListOfPassKey) Handle(NMTDS_ListNodeOfListOfPassKey)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_ListNodeOfListOfPassKey) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey))) { - _anOtherObject = Handle(NMTDS_ListNodeOfListOfPassKey)((Handle(NMTDS_ListNodeOfListOfPassKey)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_ListNodeOfListOfPassKey::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey) ; -} -//Standard_Boolean NMTDS_ListNodeOfListOfPassKey::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_ListNodeOfListOfPassKey::~Handle_NMTDS_ListNodeOfListOfPassKey() {} -#define Item NMTDS_PassKey -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() -#define TCollection_List NMTDS_ListOfPassKey -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx index 47e901258..f89d3e3ac 100644 --- a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ b/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,180 +16,19 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// -#ifndef _NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define _NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors; -class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors; -class NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors(); - - -Standard_EXPORT void Assign(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) ; - void operator=(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) -{ - Assign(Other); -} - - - -Standard_EXPORT Standard_Integer Extent() const; - - -Standard_EXPORT void Clear() ; -~NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors() -{ - Clear(); -} - - - Standard_Boolean IsEmpty() const; - - -Standard_EXPORT void Prepend(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I) ; - - -Standard_EXPORT void Prepend(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& theIt) ; - - -Standard_EXPORT void Prepend(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) ; - - -Standard_EXPORT void Append(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I) ; - - -Standard_EXPORT void Append(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& theIt) ; - - -Standard_EXPORT void Append(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other) ; +#ifndef NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile +#define NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& First() const; - - -Standard_EXPORT BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& Last() const; - - -Standard_EXPORT void RemoveFirst() ; - - -Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; - - -Standard_EXPORT void InsertBefore(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; - - -Standard_EXPORT void InsertBefore(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; - - -Standard_EXPORT void InsertAfter(const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& I,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; - - -Standard_EXPORT void InsertAfter(NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other,NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors& It) ; - - -friend class NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors(const NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// +#include +#include +typedef NCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors; +typedef NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors::Iterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors; #endif diff --git a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx b/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx deleted file mode 100644 index 7fbe65c83..000000000 --- a/src/NMTDS/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif - - -#define Item BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors_Type_() -#define TCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListOfPair.hxx b/src/NMTDS/NMTDS_ListOfPair.hxx index 9da05334d..400cd66fb 100644 --- a/src/NMTDS/NMTDS_ListOfPair.hxx +++ b/src/NMTDS/NMTDS_ListOfPair.hxx @@ -1,165 +1,34 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_ListOfPair_HeaderFile -#define _NMTDS_ListOfPair_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPair_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_ListIteratorOfListOfPair; -class NMTDS_Pair; -class NMTDS_ListNodeOfListOfPair; - - - -class NMTDS_ListOfPair { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_ListOfPair(); - - Standard_EXPORT void Assign(const NMTDS_ListOfPair& Other) ; - void operator=(const NMTDS_ListOfPair& Other) -{ - Assign(Other); -} - - Standard_EXPORT Standard_Integer Extent() const; - - Standard_EXPORT void Clear() ; -~NMTDS_ListOfPair() -{ - Clear(); -} - - Standard_Boolean IsEmpty() const; - - Standard_EXPORT void Prepend(const NMTDS_Pair& I) ; - - Standard_EXPORT void Prepend(const NMTDS_Pair& I,NMTDS_ListIteratorOfListOfPair& theIt) ; - - Standard_EXPORT void Prepend(NMTDS_ListOfPair& Other) ; - - Standard_EXPORT void Append(const NMTDS_Pair& I) ; - - Standard_EXPORT void Append(const NMTDS_Pair& I,NMTDS_ListIteratorOfListOfPair& theIt) ; - - Standard_EXPORT void Append(NMTDS_ListOfPair& Other) ; - - Standard_EXPORT NMTDS_Pair& First() const; - - Standard_EXPORT NMTDS_Pair& Last() const; - - Standard_EXPORT void RemoveFirst() ; - - Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfPair& It) ; - - Standard_EXPORT void InsertBefore(const NMTDS_Pair& I,NMTDS_ListIteratorOfListOfPair& It) ; - - Standard_EXPORT void InsertBefore(NMTDS_ListOfPair& Other,NMTDS_ListIteratorOfListOfPair& It) ; - - Standard_EXPORT void InsertAfter(const NMTDS_Pair& I,NMTDS_ListIteratorOfListOfPair& It) ; - - Standard_EXPORT void InsertAfter(NMTDS_ListOfPair& Other,NMTDS_ListIteratorOfListOfPair& It) ; - - -friend class NMTDS_ListIteratorOfListOfPair; - - - -protected: - - - - - -private: - - - Standard_EXPORT NMTDS_ListOfPair(const NMTDS_ListOfPair& Other); - - -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item NMTDS_Pair -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPair -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPair_Type_() -#define TCollection_List NMTDS_ListOfPair -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 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: NMTDS_ListOfPair.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// + + +#ifndef NMTDS_ListOfPair_HeaderFile +#define NMTDS_ListOfPair_HeaderFile + +#include +#include + +typedef NCollection_List NMTDS_ListOfPair; +typedef NMTDS_ListOfPair::Iterator NMTDS_ListIteratorOfListOfPair; + +#endif diff --git a/src/NMTDS/NMTDS_ListOfPairBoolean.hxx b/src/NMTDS/NMTDS_ListOfPairBoolean.hxx index 7e8d08ad5..e45f4b91a 100644 --- a/src/NMTDS/NMTDS_ListOfPairBoolean.hxx +++ b/src/NMTDS/NMTDS_ListOfPairBoolean.hxx @@ -1,165 +1,34 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_ListOfPairBoolean_HeaderFile -#define _NMTDS_ListOfPairBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPairBoolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_ListIteratorOfListOfPairBoolean; -class NMTDS_PairBoolean; -class NMTDS_ListNodeOfListOfPairBoolean; - - - -class NMTDS_ListOfPairBoolean { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_ListOfPairBoolean(); - - Standard_EXPORT void Assign(const NMTDS_ListOfPairBoolean& Other) ; - void operator=(const NMTDS_ListOfPairBoolean& Other) -{ - Assign(Other); -} - - Standard_EXPORT Standard_Integer Extent() const; - - Standard_EXPORT void Clear() ; -~NMTDS_ListOfPairBoolean() -{ - Clear(); -} - - Standard_Boolean IsEmpty() const; - - Standard_EXPORT void Prepend(const NMTDS_PairBoolean& I) ; - - Standard_EXPORT void Prepend(const NMTDS_PairBoolean& I,NMTDS_ListIteratorOfListOfPairBoolean& theIt) ; - - Standard_EXPORT void Prepend(NMTDS_ListOfPairBoolean& Other) ; - - Standard_EXPORT void Append(const NMTDS_PairBoolean& I) ; - - Standard_EXPORT void Append(const NMTDS_PairBoolean& I,NMTDS_ListIteratorOfListOfPairBoolean& theIt) ; - - Standard_EXPORT void Append(NMTDS_ListOfPairBoolean& Other) ; - - Standard_EXPORT NMTDS_PairBoolean& First() const; - - Standard_EXPORT NMTDS_PairBoolean& Last() const; - - Standard_EXPORT void RemoveFirst() ; - - Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfPairBoolean& It) ; - - Standard_EXPORT void InsertBefore(const NMTDS_PairBoolean& I,NMTDS_ListIteratorOfListOfPairBoolean& It) ; - - Standard_EXPORT void InsertBefore(NMTDS_ListOfPairBoolean& Other,NMTDS_ListIteratorOfListOfPairBoolean& It) ; - - Standard_EXPORT void InsertAfter(const NMTDS_PairBoolean& I,NMTDS_ListIteratorOfListOfPairBoolean& It) ; - - Standard_EXPORT void InsertAfter(NMTDS_ListOfPairBoolean& Other,NMTDS_ListIteratorOfListOfPairBoolean& It) ; - - -friend class NMTDS_ListIteratorOfListOfPairBoolean; - - - -protected: - - - - - -private: - - - Standard_EXPORT NMTDS_ListOfPairBoolean(const NMTDS_ListOfPairBoolean& Other); - - -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item NMTDS_PairBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPairBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPairBoolean_Type_() -#define TCollection_List NMTDS_ListOfPairBoolean -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 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: NMTDS_ListOfPairBoolean.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// + + +#ifndef NMTDS_ListOfPairBoolean_HeaderFile +#define NMTDS_ListOfPairBoolean_HeaderFile + +#include +#include + +typedef NCollection_List NMTDS_ListOfPairBoolean; +typedef NMTDS_ListOfPairBoolean::Iterator NMTDS_ListIteratorOfListOfPairBoolean; + +#endif diff --git a/src/NMTDS/NMTDS_ListOfPairBoolean_0.cxx b/src/NMTDS/NMTDS_ListOfPairBoolean_0.cxx deleted file mode 100644 index 40e4ff1c4..000000000 --- a/src/NMTDS/NMTDS_ListOfPairBoolean_0.cxx +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfPairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfPairBoolean_HeaderFile -#include -#endif - - -#define Item NMTDS_PairBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPairBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPairBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPairBoolean_Type_() -#define TCollection_List NMTDS_ListOfPairBoolean -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListOfPair_0.cxx b/src/NMTDS/NMTDS_ListOfPair_0.cxx deleted file mode 100644 index ff7491667..000000000 --- a/src/NMTDS/NMTDS_ListOfPair_0.cxx +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfPair_HeaderFile -#include -#endif -#ifndef _NMTDS_Pair_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfPair_HeaderFile -#include -#endif - - -#define Item NMTDS_Pair -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPair -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPair -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPair_Type_() -#define TCollection_List NMTDS_ListOfPair -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListOfPassKey.hxx b/src/NMTDS/NMTDS_ListOfPassKey.hxx index a56136834..3c920f215 100644 --- a/src/NMTDS/NMTDS_ListOfPassKey.hxx +++ b/src/NMTDS/NMTDS_ListOfPassKey.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,180 +16,19 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_ListOfPassKey.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// -#ifndef _NMTDS_ListOfPassKey_HeaderFile -#define _NMTDS_ListOfPassKey_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_ListIteratorOfListOfPassKey; -class NMTDS_PassKey; -class NMTDS_ListNodeOfListOfPassKey; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_ListOfPassKey { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_ListOfPassKey(); - - -Standard_EXPORT void Assign(const NMTDS_ListOfPassKey& Other) ; - void operator=(const NMTDS_ListOfPassKey& Other) -{ - Assign(Other); -} - - - -Standard_EXPORT Standard_Integer Extent() const; - - -Standard_EXPORT void Clear() ; -~NMTDS_ListOfPassKey() -{ - Clear(); -} - - - Standard_Boolean IsEmpty() const; - - -Standard_EXPORT void Prepend(const NMTDS_PassKey& I) ; - - -Standard_EXPORT void Prepend(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& theIt) ; - - -Standard_EXPORT void Prepend(NMTDS_ListOfPassKey& Other) ; - - -Standard_EXPORT void Append(const NMTDS_PassKey& I) ; - - -Standard_EXPORT void Append(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& theIt) ; - - -Standard_EXPORT void Append(NMTDS_ListOfPassKey& Other) ; +#ifndef NMTDS_ListOfPassKey_HeaderFile +#define NMTDS_ListOfPassKey_HeaderFile -Standard_EXPORT NMTDS_PassKey& First() const; - - -Standard_EXPORT NMTDS_PassKey& Last() const; - - -Standard_EXPORT void RemoveFirst() ; - - -Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfPassKey& It) ; - - -Standard_EXPORT void InsertBefore(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& It) ; - - -Standard_EXPORT void InsertBefore(NMTDS_ListOfPassKey& Other,NMTDS_ListIteratorOfListOfPassKey& It) ; - - -Standard_EXPORT void InsertAfter(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& It) ; - - -Standard_EXPORT void InsertAfter(NMTDS_ListOfPassKey& Other,NMTDS_ListIteratorOfListOfPassKey& It) ; - - -friend class NMTDS_ListIteratorOfListOfPassKey; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTDS_ListOfPassKey(const NMTDS_ListOfPassKey& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item NMTDS_PassKey -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() -#define TCollection_List NMTDS_ListOfPassKey -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// +#include +#include +typedef NCollection_List NMTDS_ListOfPassKey; +typedef NMTDS_ListOfPassKey::Iterator NMTDS_ListIteratorOfListOfPassKey; #endif diff --git a/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx index 5465e823a..402b6f1d7 100644 --- a/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx +++ b/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,180 +16,19 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_ListOfPassKeyBoolean.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// -#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile -#define _NMTDS_ListOfPassKeyBoolean_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_ListIteratorOfListOfPassKeyBoolean; -class NMTDS_PassKeyBoolean; -class NMTDS_ListNodeOfListOfPassKeyBoolean; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_ListOfPassKeyBoolean { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_ListOfPassKeyBoolean(); - - -Standard_EXPORT void Assign(const NMTDS_ListOfPassKeyBoolean& Other) ; - void operator=(const NMTDS_ListOfPassKeyBoolean& Other) -{ - Assign(Other); -} - - - -Standard_EXPORT Standard_Integer Extent() const; - - -Standard_EXPORT void Clear() ; -~NMTDS_ListOfPassKeyBoolean() -{ - Clear(); -} - - - Standard_Boolean IsEmpty() const; - - -Standard_EXPORT void Prepend(const NMTDS_PassKeyBoolean& I) ; - - -Standard_EXPORT void Prepend(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& theIt) ; - - -Standard_EXPORT void Prepend(NMTDS_ListOfPassKeyBoolean& Other) ; - - -Standard_EXPORT void Append(const NMTDS_PassKeyBoolean& I) ; - - -Standard_EXPORT void Append(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& theIt) ; - - -Standard_EXPORT void Append(NMTDS_ListOfPassKeyBoolean& Other) ; +#ifndef NMTDS_ListOfPassKeyBoolean_HeaderFile +#define NMTDS_ListOfPassKeyBoolean_HeaderFile -Standard_EXPORT NMTDS_PassKeyBoolean& First() const; - - -Standard_EXPORT NMTDS_PassKeyBoolean& Last() const; - - -Standard_EXPORT void RemoveFirst() ; - - -Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; - - -Standard_EXPORT void InsertBefore(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; - - -Standard_EXPORT void InsertBefore(NMTDS_ListOfPassKeyBoolean& Other,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; - - -Standard_EXPORT void InsertAfter(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; - - -Standard_EXPORT void InsertAfter(NMTDS_ListOfPassKeyBoolean& Other,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; - - -friend class NMTDS_ListIteratorOfListOfPassKeyBoolean; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTDS_ListOfPassKeyBoolean(const NMTDS_ListOfPassKeyBoolean& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item NMTDS_PassKeyBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() -#define TCollection_List NMTDS_ListOfPassKeyBoolean -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// +#include +#include +typedef NCollection_List NMTDS_ListOfPassKeyBoolean; +typedef NMTDS_ListOfPassKeyBoolean::Iterator NMTDS_ListIteratorOfListOfPassKeyBoolean; #endif diff --git a/src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx deleted file mode 100644 index c9ea10967..000000000 --- a/src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile -#include -#endif - - -#define Item NMTDS_PassKeyBoolean -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() -#define TCollection_List NMTDS_ListOfPassKeyBoolean -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_ListOfPassKey_0.cxx b/src/NMTDS/NMTDS_ListOfPassKey_0.cxx deleted file mode 100644 index 3af94f59f..000000000 --- a/src/NMTDS/NMTDS_ListOfPassKey_0.cxx +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile -#include -#endif - - -#define Item NMTDS_PassKey -#define Item_hxx -#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey -#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() -#define TCollection_List NMTDS_ListOfPassKey -#define TCollection_List_hxx -#include - diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPairBoolean.hxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPairBoolean.hxx index 34d774295..5bce39236 100644 --- a/src/NMTDS/NMTDS_MapIteratorOfMapOfPairBoolean.hxx +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPairBoolean.hxx @@ -1,96 +1,33 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_MapIteratorOfMapOfPairBoolean_HeaderFile -#define _NMTDS_MapIteratorOfMapOfPairBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPairBoolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_PairBoolean; -class NMTDS_PairMapHasher; -class NMTDS_MapOfPairBoolean; -class NMTDS_StdMapNodeOfMapOfPairBoolean; - - - -class NMTDS_MapIteratorOfMapOfPairBoolean : public TCollection_BasicMapIterator { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_MapIteratorOfMapOfPairBoolean(); - - Standard_EXPORT NMTDS_MapIteratorOfMapOfPairBoolean(const NMTDS_MapOfPairBoolean& aMap); - - Standard_EXPORT void Initialize(const NMTDS_MapOfPairBoolean& aMap) ; - - Standard_EXPORT const NMTDS_PairBoolean& Key() const; - - - - - -protected: - - - - - -private: - - - - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 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: NMTDS_MapIteratorOfMapOfPairBoolean.hxx +// Created: Mon Feb 20 08:22:39 2012 +// Author: +// + + +#ifndef NMTDS_MapIteratorOfMapOfPairBoolean_HeaderFile +#define NMTDS_MapIteratorOfMapOfPairBoolean_HeaderFile + +#ifndef NMTDS_MapOfPairBoolean_HeaderFile +#include +#endif + +#endif diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPairBoolean_0.cxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPairBoolean_0.cxx deleted file mode 100644 index f52475020..000000000 --- a/src/NMTDS/NMTDS_MapIteratorOfMapOfPairBoolean_0.cxx +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PairMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_MapOfPairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_StdMapNodeOfMapOfPairBoolean_HeaderFile -#include -#endif - - -#define TheKey NMTDS_PairBoolean -#define TheKey_hxx -#define Hasher NMTDS_PairMapHasher -#define Hasher_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPairBoolean -#define TCollection_StdMapNode_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPairBoolean -#define TCollection_MapIterator_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPairBoolean -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPairBoolean_Type_() -#define TCollection_Map NMTDS_MapOfPairBoolean -#define TCollection_Map_hxx -#include - diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx index 02b57d48a..b96214eda 100644 --- a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,93 +17,17 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#ifndef _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile -#define _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile +// File: NMRCol_MapIteratorOfMapOfPassKey.hxx +// Created: Mon Feb 20 08:22:39 2012 +// Author: +// -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_PassKey; -class NMTDS_PassKeyMapHasher; -class NMTDS_MapOfPassKey; -class NMTDS_StdMapNodeOfMapOfPassKey; +#ifndef NMRCol_MapIteratorOfMapOfPassKey_HeaderFile +#define NMRCol_MapIteratorOfMapOfPassKey_HeaderFile -#ifndef _Standard_HeaderFile -#include +#ifndef NMTDS_MapOfPassKey_HeaderFile +#include #endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_MapIteratorOfMapOfPassKey : public TCollection_BasicMapIterator { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKey(); - - -Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKey(const NMTDS_MapOfPassKey& aMap); - - -Standard_EXPORT void Initialize(const NMTDS_MapOfPassKey& aMap) ; - - -Standard_EXPORT const NMTDS_PassKey& Key() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - #endif diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx index 761daf8f6..db4dc221d 100644 --- a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,93 +17,17 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#ifndef _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile -#define _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile +// File: NMRCol_MapIteratorOfMapOfPassKeyBoolean.hxx +// Created: Mon Feb 20 08:22:39 2012 +// Author: +// -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTDS_PassKeyBoolean; -class NMTDS_PassKeyMapHasher; -class NMTDS_MapOfPassKeyBoolean; -class NMTDS_StdMapNodeOfMapOfPassKeyBoolean; +#ifndef NMRCol_MapIteratorOfMapOfPassKeyBoolean_HeaderFile +#define NMRCol_MapIteratorOfMapOfPassKeyBoolean_HeaderFile -#ifndef _Standard_HeaderFile -#include +#ifndef NMTDS_MapOfPassKeyBoolean_HeaderFile +#include #endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_MapIteratorOfMapOfPassKeyBoolean : public TCollection_BasicMapIterator { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKeyBoolean(); - - -Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKeyBoolean(const NMTDS_MapOfPassKeyBoolean& aMap); - - -Standard_EXPORT void Initialize(const NMTDS_MapOfPassKeyBoolean& aMap) ; - - -Standard_EXPORT const NMTDS_PassKeyBoolean& Key() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - #endif diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx deleted file mode 100644 index 6fb40cc83..000000000 --- a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile -#include -#endif - - -#define TheKey NMTDS_PassKeyBoolean -#define TheKey_hxx -#define Hasher NMTDS_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean -#define TCollection_MapIterator_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean -#define TCollection_StdMapNode_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() -#define TCollection_Map NMTDS_MapOfPassKeyBoolean -#define TCollection_Map_hxx -#include - diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx deleted file mode 100644 index c4276b9dc..000000000 --- a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_MapOfPassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile -#include -#endif - - -#define TheKey NMTDS_PassKey -#define TheKey_hxx -#define Hasher NMTDS_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey -#define TCollection_MapIterator_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey -#define TCollection_StdMapNode_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() -#define TCollection_Map NMTDS_MapOfPassKey -#define TCollection_Map_hxx -#include - diff --git a/src/NMTDS/NMTDS_MapOfPairBoolean.hxx b/src/NMTDS/NMTDS_MapOfPairBoolean.hxx index 108319ba0..0fdb9c41d 100644 --- a/src/NMTDS/NMTDS_MapOfPairBoolean.hxx +++ b/src/NMTDS/NMTDS_MapOfPairBoolean.hxx @@ -1,118 +1,40 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_MapOfPairBoolean_HeaderFile -#define _NMTDS_MapOfPairBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPairBoolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class NMTDS_PairBoolean; -class NMTDS_PairMapHasher; -class NMTDS_StdMapNodeOfMapOfPairBoolean; -class NMTDS_MapIteratorOfMapOfPairBoolean; - - - -class NMTDS_MapOfPairBoolean : public TCollection_BasicMap { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_MapOfPairBoolean(const Standard_Integer NbBuckets = 1); - - Standard_EXPORT NMTDS_MapOfPairBoolean& Assign(const NMTDS_MapOfPairBoolean& Other) ; - NMTDS_MapOfPairBoolean& operator =(const NMTDS_MapOfPairBoolean& Other) -{ - return Assign(Other); -} - - Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - Standard_EXPORT void Clear() ; -~NMTDS_MapOfPairBoolean() -{ - Clear(); -} - - Standard_EXPORT Standard_Boolean Add(const NMTDS_PairBoolean& aKey) ; - - Standard_EXPORT Standard_Boolean Contains(const NMTDS_PairBoolean& aKey) const; - - Standard_EXPORT Standard_Boolean Remove(const NMTDS_PairBoolean& aKey) ; - - - - - -protected: - - - - - -private: - - - Standard_EXPORT NMTDS_MapOfPairBoolean(const NMTDS_MapOfPairBoolean& Other); - - - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 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: NMTDS_MapOfPairBoolean.hxx +// Created: Mon Feb 20 08:19:07 2012 +// Author: +// + + +#ifndef NMTDS_MapOfPairBoolean_HeaderFile +#define NMTDS_MapOfPairBoolean_HeaderFile + +#include +#include + +#define _NCollection_MapHasher +#include + +typedef NCollection_Map NMTDS_MapOfPairBoolean; +typedef NMTDS_MapOfPairBoolean::Iterator NMTDS_MapIteratorOfMapOfPairBoolean; + +#undef _NCollection_MapHasher + +#endif diff --git a/src/NMTDS/NMTDS_MapOfPairBoolean_0.cxx b/src/NMTDS/NMTDS_MapOfPairBoolean_0.cxx deleted file mode 100644 index 7b21510b5..000000000 --- a/src/NMTDS/NMTDS_MapOfPairBoolean_0.cxx +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PairMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_StdMapNodeOfMapOfPairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_MapIteratorOfMapOfPairBoolean_HeaderFile -#include -#endif - - -#define TheKey NMTDS_PairBoolean -#define TheKey_hxx -#define Hasher NMTDS_PairMapHasher -#define Hasher_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPairBoolean -#define TCollection_StdMapNode_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPairBoolean -#define TCollection_MapIterator_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPairBoolean -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPairBoolean_Type_() -#define TCollection_Map NMTDS_MapOfPairBoolean -#define TCollection_Map_hxx -#include - diff --git a/src/NMTDS/NMTDS_MapOfPassKey.hxx b/src/NMTDS/NMTDS_MapOfPassKey.hxx index 54db3f4d0..4648a43cf 100644 --- a/src/NMTDS/NMTDS_MapOfPassKey.hxx +++ b/src/NMTDS/NMTDS_MapOfPassKey.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,121 +17,24 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#ifndef _NMTDS_MapOfPassKey_HeaderFile -#define _NMTDS_MapOfPassKey_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class NMTDS_PassKey; -class NMTDS_PassKeyMapHasher; -class NMTDS_MapIteratorOfMapOfPassKey; -class NMTDS_StdMapNodeOfMapOfPassKey; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_MapOfPassKey : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_MapOfPassKey(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTDS_MapOfPassKey& Assign(const NMTDS_MapOfPassKey& Other) ; - NMTDS_MapOfPassKey& operator =(const NMTDS_MapOfPassKey& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTDS_MapOfPassKey() -{ - Clear(); -} - +// File: NMTDS_MapOfPassKey.hxx +// Created: Mon Feb 20 08:19:07 2012 +// Author: +// -Standard_EXPORT Standard_Boolean Add(const NMTDS_PassKey& aKey) ; +#ifndef NMTDS_MapOfPassKey_HeaderFile +#define NMTDS_MapOfPassKey_HeaderFile +#include +#include -Standard_EXPORT Standard_Boolean Contains(const NMTDS_PassKey& aKey) const; +#define _NCollection_MapHasher +#include +typedef NCollection_Map NMTDS_MapOfPassKey; +typedef NMTDS_MapOfPassKey::Iterator NMTDS_MapIteratorOfMapOfPassKey; -Standard_EXPORT Standard_Boolean Remove(const NMTDS_PassKey& aKey) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTDS_MapOfPassKey(const NMTDS_MapOfPassKey& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - +#undef _NCollection_MapHasher #endif diff --git a/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx index 4dd296d7f..bbc2596e6 100644 --- a/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx +++ b/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,121 +17,24 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile -#define _NMTDS_MapOfPassKeyBoolean_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class NMTDS_PassKeyBoolean; -class NMTDS_PassKeyMapHasher; -class NMTDS_MapIteratorOfMapOfPassKeyBoolean; -class NMTDS_StdMapNodeOfMapOfPassKeyBoolean; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_MapOfPassKeyBoolean : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_MapOfPassKeyBoolean(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTDS_MapOfPassKeyBoolean& Assign(const NMTDS_MapOfPassKeyBoolean& Other) ; - NMTDS_MapOfPassKeyBoolean& operator =(const NMTDS_MapOfPassKeyBoolean& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTDS_MapOfPassKeyBoolean() -{ - Clear(); -} - +// File: NMTDS_MapOfPassKeyBoolean.hxx +// Created: Mon Feb 20 08:19:07 2012 +// Author: +// -Standard_EXPORT Standard_Boolean Add(const NMTDS_PassKeyBoolean& aKey) ; +#ifndef NMTDS_MapOfPassKeyBoolean_HeaderFile +#define NMTDS_MapOfPassKeyBoolean_HeaderFile +#include +#include -Standard_EXPORT Standard_Boolean Contains(const NMTDS_PassKeyBoolean& aKey) const; +#define _NCollection_MapHasher +#include +typedef NCollection_Map NMTDS_MapOfPassKeyBoolean; +typedef NMTDS_MapOfPassKeyBoolean::Iterator NMTDS_MapIteratorOfMapOfPassKeyBoolean; -Standard_EXPORT Standard_Boolean Remove(const NMTDS_PassKeyBoolean& aKey) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTDS_MapOfPassKeyBoolean(const NMTDS_MapOfPassKeyBoolean& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - +#undef _NCollection_MapHasher #endif diff --git a/src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx deleted file mode 100644 index 08745ad56..000000000 --- a/src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile -#include -#endif - - -#define TheKey NMTDS_PassKeyBoolean -#define TheKey_hxx -#define Hasher NMTDS_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean -#define TCollection_MapIterator_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean -#define TCollection_StdMapNode_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() -#define TCollection_Map NMTDS_MapOfPassKeyBoolean -#define TCollection_Map_hxx -#include - diff --git a/src/NMTDS/NMTDS_MapOfPassKey_0.cxx b/src/NMTDS/NMTDS_MapOfPassKey_0.cxx deleted file mode 100644 index fae55c5f1..000000000 --- a/src/NMTDS/NMTDS_MapOfPassKey_0.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile -#include -#endif - - -#define TheKey NMTDS_PassKey -#define TheKey_hxx -#define Hasher NMTDS_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey -#define TCollection_MapIterator_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey -#define TCollection_StdMapNode_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() -#define TCollection_Map NMTDS_MapOfPassKey -#define TCollection_Map_hxx -#include - diff --git a/src/NMTDS/NMTDS_PInterfPool.hxx b/src/NMTDS/NMTDS_PInterfPool.hxx index 64a48965f..68a45c7dc 100644 --- a/src/NMTDS/NMTDS_PInterfPool.hxx +++ b/src/NMTDS/NMTDS_PInterfPool.hxx @@ -1,4 +1,7 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 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 @@ -17,6 +20,9 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_PInterfPool.hxx +// Author: Peter KURNEV + #ifndef _NMTDS_PInterfPool_HeaderFile #define _NMTDS_PInterfPool_HeaderFile diff --git a/src/NMTDS/NMTDS_PIterator.hxx b/src/NMTDS/NMTDS_PIterator.hxx index 84aa57c54..8c745d979 100644 --- a/src/NMTDS/NMTDS_PIterator.hxx +++ b/src/NMTDS/NMTDS_PIterator.hxx @@ -1,4 +1,7 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 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 @@ -17,6 +20,9 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_PIterator.hxx +// Author: Peter KURNEV + #ifndef _NMTDS_PIterator_HeaderFile #define _NMTDS_PIterator_HeaderFile diff --git a/src/NMTDS/NMTDS_PShapesDataStructure.hxx b/src/NMTDS/NMTDS_PShapesDataStructure.hxx index aae029153..66c380da6 100644 --- a/src/NMTDS/NMTDS_PShapesDataStructure.hxx +++ b/src/NMTDS/NMTDS_PShapesDataStructure.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,9 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_PShapesDataStructure.hxx +// Author: Peter KURNEV + #ifndef _NMTDS_PShapesDataStructure_HeaderFile #define _NMTDS_PShapesDataStructure_HeaderFile diff --git a/src/NMTDS/NMTDS_Pair.cdl b/src/NMTDS/NMTDS_Pair.cdl deleted file mode 100644 index 4b5522616..000000000 --- a/src/NMTDS/NMTDS_Pair.cdl +++ /dev/null @@ -1,66 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTDS_Pair.cdl --- Created: --- Author: Peter KURNEV --- -class Pair from NMTDS - - ---Purpose: - ---uses ---raises - -is - Create - returns Pair from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_Pair();" - - Create(Other:Pair from NMTDS) - returns Pair from NMTDS; - ---C++: alias "Standard_EXPORT NMTDS_Pair& operator =(const NMTDS_Pair& Other);" - - Clear(me:out); - - SetIds(me:out; - aI1 :Integer from Standard; - aI2 :Integer from Standard); - - Ids(me; - aI1 :out Integer from Standard; - aI2 :out Integer from Standard); - - IsEqual(me; - aOther:Pair from NMTDS) - returns Boolean from Standard; - - HashCode(me; - Upper : Integer from Standard) - returns Integer from Standard; - - -fields - myId1: Integer from Standard is protected; - myId2: Integer from Standard is protected; - -end Pair; diff --git a/src/NMTDS/NMTDS_Pair.cxx b/src/NMTDS/NMTDS_Pair.cxx index dece0c710..5e2fd50bc 100644 --- a/src/NMTDS/NMTDS_Pair.cxx +++ b/src/NMTDS/NMTDS_Pair.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,11 +18,12 @@ // 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: NMTDS_Pair.cxx // Author: Peter KURNEV -#include +#include #include #include diff --git a/src/NMTDS/NMTDS_Pair.hxx b/src/NMTDS/NMTDS_Pair.hxx index 2b884ec9d..d0a4de9f9 100644 --- a/src/NMTDS/NMTDS_Pair.hxx +++ b/src/NMTDS/NMTDS_Pair.hxx @@ -1,101 +1,73 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_Pair_HeaderFile -#define _NMTDS_Pair_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - - - -class NMTDS_Pair { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_Pair(); -Standard_EXPORT virtual ~NMTDS_Pair(); - - Standard_EXPORT NMTDS_Pair(const NMTDS_Pair& Other); -Standard_EXPORT NMTDS_Pair& operator =(const NMTDS_Pair& Other); - - Standard_EXPORT void Clear() ; - - Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2) ; - - Standard_EXPORT void Ids(Standard_Integer& aI1,Standard_Integer& aI2) const; - - Standard_EXPORT Standard_Boolean IsEqual(const NMTDS_Pair& aOther) const; - - Standard_EXPORT Standard_Integer HashCode(const Standard_Integer Upper) const; - - - - - -protected: - - - -Standard_Integer myId1; -Standard_Integer myId2; - - -private: - - - - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File: NMTDS_Pair.hxx +// Author: Peter KURNEV + +#ifndef _NMTDS_Pair_HeaderFile +#define _NMTDS_Pair_HeaderFile + +#include +#include +#include +#include + +//======================================================================= +//function : NMTDS_Pair +//purpose : +//======================================================================= +class NMTDS_Pair { + public: + Standard_EXPORT + NMTDS_Pair(); + + Standard_EXPORT + virtual ~NMTDS_Pair(); + + Standard_EXPORT + NMTDS_Pair(const NMTDS_Pair& Other); + + Standard_EXPORT + NMTDS_Pair& operator =(const NMTDS_Pair& Other); + + Standard_EXPORT + void Clear() ; + + Standard_EXPORT + void SetIds(const Standard_Integer aI1, + const Standard_Integer aI2) ; + + Standard_EXPORT + void Ids(Standard_Integer& aI1, + Standard_Integer& aI2) const; + + Standard_EXPORT + Standard_Boolean IsEqual(const NMTDS_Pair& aOther) const; + + Standard_EXPORT + Standard_Integer HashCode(const Standard_Integer Upper) const; + +protected: +Standard_Integer myId1; +Standard_Integer myId2; +}; +#endif diff --git a/src/NMTDS/NMTDS_Pair.ixx b/src/NMTDS/NMTDS_Pair.ixx deleted file mode 100644 index 359d8ae56..000000000 --- a/src/NMTDS/NMTDS_Pair.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - - - - diff --git a/src/NMTDS/NMTDS_Pair.jxx b/src/NMTDS/NMTDS_Pair.jxx deleted file mode 100644 index f732185d7..000000000 --- a/src/NMTDS/NMTDS_Pair.jxx +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_Pair_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_PairBoolean.cdl b/src/NMTDS/NMTDS_PairBoolean.cdl deleted file mode 100644 index e20e9e430..000000000 --- a/src/NMTDS/NMTDS_PairBoolean.cdl +++ /dev/null @@ -1,52 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - --- File: NMTDS_PairBoolean.cdl --- Created: --- Author: Peter KURNEV - -class PairBoolean from NMTDS - inherits Pair from NMTDS - - ---Purpose: - -uses - Shape from TopoDS, - ListOfInteger from TColStd - ---raises - -is - Create - returns PairBoolean from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_PairBoolean();" - - SetFlag(me:out; - aFlag: Boolean from Standard); - ---C++: alias " Standard_EXPORT NMTDS_PairBoolean& operator =(const NMTDS_PairBoolean& Other);" - - Flag(me) - returns Boolean from Standard; - -fields - myFlag: Boolean from Standard is protected; - -end PairBoolean; diff --git a/src/NMTDS/NMTDS_PairBoolean.cxx b/src/NMTDS/NMTDS_PairBoolean.cxx index 364694960..9067d5c94 100644 --- a/src/NMTDS/NMTDS_PairBoolean.cxx +++ b/src/NMTDS/NMTDS_PairBoolean.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,11 +18,12 @@ // 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: NMTDS_PairBoolean.cxx // Author: Peter KURNEV -#include +#include //======================================================================= //function : diff --git a/src/NMTDS/NMTDS_PairBoolean.hxx b/src/NMTDS/NMTDS_PairBoolean.hxx index 8bf1a29e1..308c8fc05 100644 --- a/src/NMTDS/NMTDS_PairBoolean.hxx +++ b/src/NMTDS/NMTDS_PairBoolean.hxx @@ -1,92 +1,58 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_PairBoolean_HeaderFile -#define _NMTDS_PairBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _NMTDS_Pair_HeaderFile -#include -#endif - - - -class NMTDS_PairBoolean : public NMTDS_Pair { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_PairBoolean(); -Standard_EXPORT virtual ~NMTDS_PairBoolean(); - - Standard_EXPORT void SetFlag(const Standard_Boolean aFlag) ; - Standard_EXPORT NMTDS_PairBoolean& operator =(const NMTDS_PairBoolean& Other); - - Standard_EXPORT Standard_Boolean Flag() const; - - - - - -protected: - - - -Standard_Boolean myFlag; - - -private: - - - - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File: NMTDS_PairBoolean.hxx +// Author: Peter KURNEV + +#ifndef _NMTDS_PairBoolean_HeaderFile +#define _NMTDS_PairBoolean_HeaderFile + +#include +#include +#include +#include + +//======================================================================= +//class : NMTDS_PairBoolean +//purpose : +//======================================================================= +class NMTDS_PairBoolean : public NMTDS_Pair { + public: + Standard_EXPORT + NMTDS_PairBoolean(); + + Standard_EXPORT + virtual ~NMTDS_PairBoolean(); + + Standard_EXPORT + void SetFlag(const Standard_Boolean aFlag) ; + + Standard_EXPORT + NMTDS_PairBoolean& operator =(const NMTDS_PairBoolean& Other); + + Standard_EXPORT + Standard_Boolean Flag() const; + +protected: + Standard_Boolean myFlag; +}; +#endif diff --git a/src/NMTDS/NMTDS_PairBoolean.ixx b/src/NMTDS/NMTDS_PairBoolean.ixx deleted file mode 100644 index 71fdb731a..000000000 --- a/src/NMTDS/NMTDS_PairBoolean.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - - - - diff --git a/src/NMTDS/NMTDS_PairBoolean.jxx b/src/NMTDS/NMTDS_PairBoolean.jxx deleted file mode 100644 index c45fd0355..000000000 --- a/src/NMTDS/NMTDS_PairBoolean.jxx +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_PairMapHasher.cdl b/src/NMTDS/NMTDS_PairMapHasher.cdl deleted file mode 100644 index cf4a80485..000000000 --- a/src/NMTDS/NMTDS_PairMapHasher.cdl +++ /dev/null @@ -1,46 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - --- File: NMTDS_PairMapHasher.cdl --- Author: Peter KURNEV - -class PairMapHasher from NMTDS - - ---Purpose: - -uses - Pair from NMTDS - ---raises - -is - HashCode(myclass; - aPKey : Pair from NMTDS; - Upper : Integer from Standard) - returns Integer from Standard; - - - IsEqual(myclass; - aPKey1 : Pair from NMTDS; - aPKey2 : Pair from NMTDS) - returns Boolean from Standard; - -end PairMapHasher; diff --git a/src/NMTDS/NMTDS_PairMapHasher.cxx b/src/NMTDS/NMTDS_PairMapHasher.cxx index 46c79902b..3dadcc181 100644 --- a/src/NMTDS/NMTDS_PairMapHasher.cxx +++ b/src/NMTDS/NMTDS_PairMapHasher.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,11 +18,12 @@ // 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: NMTDS_PairMapHasher.cxx // Author: Peter KURNEV -#include +#include //======================================================================= //function : HashCode diff --git a/src/NMTDS/NMTDS_PairMapHasher.hxx b/src/NMTDS/NMTDS_PairMapHasher.hxx index 24858888d..19dfea723 100644 --- a/src/NMTDS/NMTDS_PairMapHasher.hxx +++ b/src/NMTDS/NMTDS_PairMapHasher.hxx @@ -1,88 +1,49 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_PairMapHasher_HeaderFile -#define _NMTDS_PairMapHasher_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class NMTDS_Pair; - - - -class NMTDS_PairMapHasher { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT static Standard_Integer HashCode(const NMTDS_Pair& aPKey,const Standard_Integer Upper) ; - - Standard_EXPORT static Standard_Boolean IsEqual(const NMTDS_Pair& aPKey1,const NMTDS_Pair& aPKey2) ; - - - - - -protected: - - - - - -private: - - - - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File: NMTDS_PairMapHasher.cxx +// Author: Peter KURNEV + +#ifndef _NMTDS_PairMapHasher_HeaderFile +#define _NMTDS_PairMapHasher_HeaderFile + +#include +#include +#include +#include +#include + +//======================================================================= +//class : NMTDS_PairMapHasher +//purpose : +//======================================================================= +class NMTDS_PairMapHasher { + public: + Standard_EXPORT + static Standard_Integer HashCode(const NMTDS_Pair& aPKey, + const Standard_Integer Upper) ; + + Standard_EXPORT + static Standard_Boolean IsEqual(const NMTDS_Pair& aPKey1, + const NMTDS_Pair& aPKey2) ; +}; +#endif diff --git a/src/NMTDS/NMTDS_PairMapHasher.ixx b/src/NMTDS/NMTDS_PairMapHasher.ixx deleted file mode 100644 index 19a1a77a4..000000000 --- a/src/NMTDS/NMTDS_PairMapHasher.ixx +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - - - - diff --git a/src/NMTDS/NMTDS_PairMapHasher.jxx b/src/NMTDS/NMTDS_PairMapHasher.jxx deleted file mode 100644 index d4dfdf593..000000000 --- a/src/NMTDS/NMTDS_PairMapHasher.jxx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_Pair_HeaderFile -#include -#endif -#ifndef _NMTDS_PairMapHasher_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_PassKey.cdl b/src/NMTDS/NMTDS_PassKey.cdl deleted file mode 100755 index 41e2addeb..000000000 --- a/src/NMTDS/NMTDS_PassKey.cdl +++ /dev/null @@ -1,98 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTDS_PassKey.cdl --- Created: Mon Nov 20 12:16:13 2006 --- Author: Peter KURNEV --- -class PassKey from NMTDS - - ---Purpose: - -uses - Shape from TopoDS, - IndexedMapOfInteger from TColStd, - ListOfInteger from TColStd - ---raises - -is - Create - returns PassKey from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_PassKey();" - - Create(Other:PassKey from NMTDS) - returns PassKey from NMTDS; - ---C++: alias "Standard_EXPORT NMTDS_PassKey& operator =(const NMTDS_PassKey& Other);" - - Clear(me:out); - - SetIds(me:out; - aI1 :Integer from Standard); - - SetIds(me:out; - aI1 :Integer from Standard; - aI2 :Integer from Standard); - - SetIds(me:out; - aI1 :Integer from Standard; - aI2 :Integer from Standard; - aI3 :Integer from Standard); - - SetIds(me:out; - aI1 :Integer from Standard; - aI2 :Integer from Standard; - aI3 :Integer from Standard; - aI4 :Integer from Standard); - - SetIds(me:out; - aLS :ListOfInteger from TColStd); - - NbIds(me) - returns Integer from Standard; - - IsEqual(me; - aOther:PassKey from NMTDS) - returns Boolean from Standard; - - HashCode(me; - Upper : Integer from Standard) - returns Integer from Standard; - - Id(me; - aIndex: Integer from Standard) - returns Integer from Standard; - - Ids(me; - aI1 :out Integer from Standard; - aI2 :out Integer from Standard); - - Dump(me; - aHex:Integer from Standard=0); - - -fields - myNbIds: Integer from Standard is protected; - mySum : Integer from Standard is protected; - myMap : IndexedMapOfInteger from TColStd is protected; - -end PassKey; diff --git a/src/NMTDS/NMTDS_PassKey.cxx b/src/NMTDS/NMTDS_PassKey.cxx index 4e2552534..4d8aa41aa 100755 --- a/src/NMTDS/NMTDS_PassKey.cxx +++ b/src/NMTDS/NMTDS_PassKey.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,12 +20,12 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// File: NMTDS_Algo.cxx -// Created: Sat Dec 04 12:39:47 2004 +// File: NMTDS_PassKey.cxx +// Created: // Author: Peter KURNEV // // -#include +#include #include #include diff --git a/src/NMTDS/NMTDS_PassKey.hxx b/src/NMTDS/NMTDS_PassKey.hxx index 2c38c1829..88fb6cb0f 100644 --- a/src/NMTDS/NMTDS_PassKey.hxx +++ b/src/NMTDS/NMTDS_PassKey.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,127 +20,84 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_PassKey.hxx +// Created: +// Author: Peter KURNEV +// +// #ifndef _NMTDS_PassKey_HeaderFile #define _NMTDS_PassKey_HeaderFile -#ifndef _Standard_Integer_HeaderFile +#include +#include #include -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif -class TColStd_ListOfInteger; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - +#include +//======================================================================= +//function : NMTDS_PassKey +//purpose : +//======================================================================= class NMTDS_PassKey { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_PassKey(); -Standard_EXPORT virtual ~NMTDS_PassKey(); - - -Standard_EXPORT NMTDS_PassKey(const NMTDS_PassKey& Other); -Standard_EXPORT NMTDS_PassKey& operator =(const NMTDS_PassKey& Other); - - -Standard_EXPORT void Clear() ; - - -Standard_EXPORT void SetIds(const Standard_Integer aI1) ; - - -Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2) ; - - -Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3) ; - - -Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3,const Standard_Integer aI4) ; - - -Standard_EXPORT void SetIds(const TColStd_ListOfInteger& aLS) ; - - -Standard_EXPORT Standard_Integer NbIds() const; - - -Standard_EXPORT Standard_Boolean IsEqual(const NMTDS_PassKey& aOther) const; - - -Standard_EXPORT Standard_Integer HashCode(const Standard_Integer Upper) const; - - -Standard_EXPORT Standard_Integer Id(const Standard_Integer aIndex) const; - - -Standard_EXPORT void Ids(Standard_Integer& aI1,Standard_Integer& aI2) const; - - -Standard_EXPORT void Dump(const Standard_Integer aHex = 0) const; - - - - + public: + Standard_EXPORT + NMTDS_PassKey(); + + Standard_EXPORT + virtual ~NMTDS_PassKey(); + + Standard_EXPORT + NMTDS_PassKey(const NMTDS_PassKey& Other); + + Standard_EXPORT + NMTDS_PassKey& operator =(const NMTDS_PassKey& Other); + + Standard_EXPORT + void Clear() ; + + Standard_EXPORT + void SetIds(const Standard_Integer aI1) ; + + Standard_EXPORT + void SetIds(const Standard_Integer aI1, + const Standard_Integer aI2) ; + + Standard_EXPORT + void SetIds(const Standard_Integer aI1, + const Standard_Integer aI2, + const Standard_Integer aI3) ; + + Standard_EXPORT + void SetIds(const Standard_Integer aI1, + const Standard_Integer aI2, + const Standard_Integer aI3, + const Standard_Integer aI4) ; + + Standard_EXPORT + void SetIds(const TColStd_ListOfInteger& aLS) ; + + Standard_EXPORT + Standard_Integer NbIds() const; + + Standard_EXPORT + Standard_Boolean IsEqual(const NMTDS_PassKey& aOther) const; + + Standard_EXPORT + Standard_Integer HashCode(const Standard_Integer Upper) const; + + Standard_EXPORT + Standard_Integer Id(const Standard_Integer aIndex) const; + + Standard_EXPORT + void Ids(Standard_Integer& aI1,Standard_Integer& aI2) const; + + Standard_EXPORT + void Dump(const Standard_Integer aHex = 0) const; protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -Standard_Integer myNbIds; -Standard_Integer mySum; -TColStd_IndexedMapOfInteger myMap; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + Standard_Integer myNbIds; + Standard_Integer mySum; + TColStd_IndexedMapOfInteger myMap; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_PassKey.ixx b/src/NMTDS/NMTDS_PassKey.ixx deleted file mode 100644 index 67bc34e15..000000000 --- a/src/NMTDS/NMTDS_PassKey.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_PassKey.jxx b/src/NMTDS/NMTDS_PassKey.jxx deleted file mode 100644 index 522cd4b48..000000000 --- a/src/NMTDS/NMTDS_PassKey.jxx +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _TColStd_ListOfInteger_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.cdl b/src/NMTDS/NMTDS_PassKeyBoolean.cdl deleted file mode 100755 index d987f0f0d..000000000 --- a/src/NMTDS/NMTDS_PassKeyBoolean.cdl +++ /dev/null @@ -1,53 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTDS_PassKeyBoolean.cdl --- Created: --- Author: Peter KURNEV --- -class PassKeyBoolean from NMTDS - inherits PassKey from NMTDS - - ---Purpose: - -uses - Shape from TopoDS, - ListOfInteger from TColStd - ---raises - -is - Create - returns PassKeyBoolean from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_PassKeyBoolean();" - - SetFlag(me:out; - aFlag: Boolean from Standard); - ---C++: alias " Standard_EXPORT NMTDS_PassKeyBoolean& operator =(const NMTDS_PassKeyBoolean& Other);" - - Flag(me) - returns Boolean from Standard; - -fields - myFlag: Boolean from Standard is protected; - -end PassKeyBoolean; diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.cxx b/src/NMTDS/NMTDS_PassKeyBoolean.cxx index 50af54b5e..dc0c77704 100755 --- a/src/NMTDS/NMTDS_PassKeyBoolean.cxx +++ b/src/NMTDS/NMTDS_PassKeyBoolean.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,7 +25,7 @@ // Author: Peter KURNEV // // -#include +#include //======================================================================= //function : diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.hxx b/src/NMTDS/NMTDS_PassKeyBoolean.hxx index 8afba2b5f..210efb63f 100644 --- a/src/NMTDS/NMTDS_PassKeyBoolean.hxx +++ b/src/NMTDS/NMTDS_PassKeyBoolean.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,88 +20,41 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_PassKeyBoolean.hxx +// Created: +// Author: Peter KURNEV +// +// #ifndef _NMTDS_PassKeyBoolean_HeaderFile #define _NMTDS_PassKeyBoolean_HeaderFile -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif - - -#ifndef _Standard_HeaderFile #include -#endif -#ifndef _Standard_Macro_HeaderFile #include -#endif - +#include +#include +//======================================================================= +//class : NMTDS_PassKeyBoolean +//purpose : +//======================================================================= class NMTDS_PassKeyBoolean : public NMTDS_PassKey { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_PassKeyBoolean(); -Standard_EXPORT virtual ~NMTDS_PassKeyBoolean(); - - -Standard_EXPORT void SetFlag(const Standard_Boolean aFlag) ; - Standard_EXPORT NMTDS_PassKeyBoolean& operator =(const NMTDS_PassKeyBoolean& Other); - - -Standard_EXPORT Standard_Boolean Flag() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -Standard_Boolean myFlag; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + public: + Standard_EXPORT + NMTDS_PassKeyBoolean(); + + Standard_EXPORT + virtual ~NMTDS_PassKeyBoolean(); + + Standard_EXPORT + void SetFlag(const Standard_Boolean aFlag) ; + + Standard_EXPORT + NMTDS_PassKeyBoolean& operator =(const NMTDS_PassKeyBoolean& Other); + + Standard_EXPORT + Standard_Boolean Flag() const; + + protected: + Standard_Boolean myFlag; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.ixx b/src/NMTDS/NMTDS_PassKeyBoolean.ixx deleted file mode 100644 index 799fa8f60..000000000 --- a/src/NMTDS/NMTDS_PassKeyBoolean.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.jxx b/src/NMTDS/NMTDS_PassKeyBoolean.jxx deleted file mode 100644 index 49111dc29..000000000 --- a/src/NMTDS/NMTDS_PassKeyBoolean.jxx +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.cdl b/src/NMTDS/NMTDS_PassKeyMapHasher.cdl deleted file mode 100755 index 22547bc9a..000000000 --- a/src/NMTDS/NMTDS_PassKeyMapHasher.cdl +++ /dev/null @@ -1,48 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTDS_PassKeyMapHasher.cdl --- Created: --- Author: Peter KURNEV --- -class PassKeyMapHasher from NMTDS - - ---Purpose: - -uses - PassKey from NMTDS - ---raises - -is - HashCode(myclass; - aPKey : PassKey from NMTDS; - Upper : Integer from Standard) - returns Integer from Standard; - - - IsEqual(myclass; - aPKey1 : PassKey from NMTDS; - aPKey2 : PassKey from NMTDS) - returns Boolean from Standard; - -end PassKeyMapHasher; diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.cxx b/src/NMTDS/NMTDS_PassKeyMapHasher.cxx index 28eada2c6..3b55d93db 100755 --- a/src/NMTDS/NMTDS_PassKeyMapHasher.cxx +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,7 +25,7 @@ // Author: Peter KURNEV // // -#include +#include //======================================================================= //function : HashCode diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.hxx b/src/NMTDS/NMTDS_PassKeyMapHasher.hxx index 24bb192cd..1ad371c3e 100644 --- a/src/NMTDS/NMTDS_PassKeyMapHasher.hxx +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,83 +20,33 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_PassKeyMapHasher.hxx +// Created: +// Author: Peter KURNEV +// +// #ifndef _NMTDS_PassKeyMapHasher_HeaderFile #define _NMTDS_PassKeyMapHasher_HeaderFile -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class NMTDS_PassKey; - - -#ifndef _Standard_HeaderFile #include -#endif -#ifndef _Standard_Macro_HeaderFile #include -#endif +#include +#include +#include +//======================================================================= +//function : NMTDS_PassKeyMapHasher +//purpose : +//======================================================================= class NMTDS_PassKeyMapHasher { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT static Standard_Integer HashCode(const NMTDS_PassKey& aPKey,const Standard_Integer Upper) ; - - -Standard_EXPORT static Standard_Boolean IsEqual(const NMTDS_PassKey& aPKey1,const NMTDS_PassKey& aPKey2) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + public: + Standard_EXPORT + static Standard_Integer HashCode(const NMTDS_PassKey& aPKey, + const Standard_Integer Upper) ; + + Standard_EXPORT + static Standard_Boolean IsEqual(const NMTDS_PassKey& aPKey1, + const NMTDS_PassKey& aPKey2) ; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.ixx b/src/NMTDS/NMTDS_PassKeyMapHasher.ixx deleted file mode 100644 index dd8f74bc5..000000000 --- a/src/NMTDS/NMTDS_PassKeyMapHasher.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.jxx b/src/NMTDS/NMTDS_PassKeyMapHasher.jxx deleted file mode 100644 index b69c21e4b..000000000 --- a/src/NMTDS/NMTDS_PassKeyMapHasher.jxx +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyMapHasher_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_PassKeyShape.cdl b/src/NMTDS/NMTDS_PassKeyShape.cdl deleted file mode 100644 index 5e7592898..000000000 --- a/src/NMTDS/NMTDS_PassKeyShape.cdl +++ /dev/null @@ -1,93 +0,0 @@ --- Copyright (C) 2007-2011 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: NMTDS_PassKeyShape.cdl --- Created: --- Author: Peter KURNEV --- -class PassKeyShape from NMTDS - - ---Purpose: - -uses - Shape from TopoDS, - ListOfShape from TopTools, - IndexedMapOfShape from TopTools - ---raises - -is - Create - returns PassKeyShape from NMTDS; - ---C++: alias "Standard_EXPORT virtual ~NMTDS_PassKeyShape();" - - Create(Other:PassKeyShape from NMTDS) - returns PassKeyShape from NMTDS; - - Assign(me:out; - Other : PassKeyShape from NMTDS) - returns PassKeyShape from NMTDS; - ---C++: alias operator = - ---C++: return & - - SetShapes(me:out; - aS :Shape from TopoDS); - - SetShapes(me:out; - aS1 :Shape from TopoDS; - aS2 :Shape from TopoDS); - - SetShapes(me:out; - aS1 :Shape from TopoDS; - aS2 :Shape from TopoDS; - aS3 :Shape from TopoDS); - - SetShapes(me:out; - aS1 :Shape from TopoDS; - aS2 :Shape from TopoDS; - aS3 :Shape from TopoDS; - aS4 :Shape from TopoDS); - - SetShapes(me:out; - aLS :ListOfShape from TopTools); - - Clear(me:out); - - - NbIds(me) - returns Integer from Standard; - - IsEqual(me; - aOther:PassKeyShape from NMTDS) - returns Boolean from Standard; - - HashCode(me; - Upper : Integer from Standard) - returns Integer from Standard; - - Dump(me; - aHex:Integer from Standard=0); - -fields - myNbIds:Integer from Standard is protected; - mySum :Integer from Standard is protected; - myUpper:Integer from Standard is protected; - myMap :IndexedMapOfShape from TopTools is protected; - -end PassKeyShape; diff --git a/src/NMTDS/NMTDS_PassKeyShape.cxx b/src/NMTDS/NMTDS_PassKeyShape.cxx index 7f67a0139..5010c582a 100644 --- a/src/NMTDS/NMTDS_PassKeyShape.cxx +++ b/src/NMTDS/NMTDS_PassKeyShape.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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,10 +22,11 @@ // Author: Peter KURNEV // // -#include +#include #include #include +#include static diff --git a/src/NMTDS/NMTDS_PassKeyShape.hxx b/src/NMTDS/NMTDS_PassKeyShape.hxx index d5af189bb..1498499bf 100644 --- a/src/NMTDS/NMTDS_PassKeyShape.hxx +++ b/src/NMTDS/NMTDS_PassKeyShape.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -17,130 +17,84 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_PassKeyShape.hxx +// Created: +// Author: Peter KURNEV +// +// #ifndef _NMTDS_PassKeyShape_HeaderFile #define _NMTDS_PassKeyShape_HeaderFile -#ifndef _Standard_Integer_HeaderFile +#include +#include #include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif -class TopoDS_Shape; -class TopTools_ListOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - +#include +#include +//======================================================================= +//function : NMTDS_PassKeyShape +//purpose : +//======================================================================= class NMTDS_PassKeyShape { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTDS_PassKeyShape(); -Standard_EXPORT virtual ~NMTDS_PassKeyShape(); - - -Standard_EXPORT NMTDS_PassKeyShape(const NMTDS_PassKeyShape& Other); - - -Standard_EXPORT NMTDS_PassKeyShape& Assign(const NMTDS_PassKeyShape& Other) ; - NMTDS_PassKeyShape& operator =(const NMTDS_PassKeyShape& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void SetShapes(const TopoDS_Shape& aS) ; - - -Standard_EXPORT void SetShapes(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2) ; - - -Standard_EXPORT void SetShapes(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3) ; - - -Standard_EXPORT void SetShapes(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3,const TopoDS_Shape& aS4) ; - - -Standard_EXPORT void SetShapes(const TopTools_ListOfShape& aLS) ; - - -Standard_EXPORT void Clear() ; - - -Standard_EXPORT Standard_Integer NbIds() const; - - -Standard_EXPORT Standard_Boolean IsEqual(const NMTDS_PassKeyShape& aOther) const; - - -Standard_EXPORT Standard_Integer HashCode(const Standard_Integer Upper) const; - - -Standard_EXPORT void Dump(const Standard_Integer aHex = 0) const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -Standard_Integer myNbIds; -Standard_Integer mySum; -Standard_Integer myUpper; -TopTools_IndexedMapOfShape myMap; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + public: + Standard_EXPORT + NMTDS_PassKeyShape(); + + Standard_EXPORT + virtual ~NMTDS_PassKeyShape(); + + Standard_EXPORT + NMTDS_PassKeyShape(const NMTDS_PassKeyShape& Other); + + Standard_EXPORT + NMTDS_PassKeyShape& Assign(const NMTDS_PassKeyShape& Other) ; + + NMTDS_PassKeyShape& operator =(const NMTDS_PassKeyShape& Other) { + return Assign(Other); + } + + Standard_EXPORT + void SetShapes(const TopoDS_Shape& aS) ; + + Standard_EXPORT + void SetShapes(const TopoDS_Shape& aS1, + const TopoDS_Shape& aS2) ; + + Standard_EXPORT + void SetShapes(const TopoDS_Shape& aS1, + const TopoDS_Shape& aS2, + const TopoDS_Shape& aS3) ; + + Standard_EXPORT + void SetShapes(const TopoDS_Shape& aS1, + const TopoDS_Shape& aS2, + const TopoDS_Shape& aS3, + const TopoDS_Shape& aS4) ; + + Standard_EXPORT + void SetShapes(const TopTools_ListOfShape& aLS) ; + + Standard_EXPORT + void Clear() ; + + Standard_EXPORT + Standard_Integer NbIds() const; + + Standard_EXPORT + Standard_Boolean IsEqual(const NMTDS_PassKeyShape& aOther) const; + + Standard_EXPORT + Standard_Integer HashCode(const Standard_Integer Upper) const; + + Standard_EXPORT + void Dump(const Standard_Integer aHex = 0) const; + + protected: + Standard_Integer myNbIds; + Standard_Integer mySum; + Standard_Integer myUpper; + TopTools_IndexedMapOfShape myMap; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_PassKeyShape.ixx b/src/NMTDS/NMTDS_PassKeyShape.ixx deleted file mode 100644 index c288c2f25..000000000 --- a/src/NMTDS/NMTDS_PassKeyShape.ixx +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_PassKeyShape.jxx b/src/NMTDS/NMTDS_PassKeyShape.jxx deleted file mode 100644 index 17455f3c9..000000000 --- a/src/NMTDS/NMTDS_PassKeyShape.jxx +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyShape_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.cdl b/src/NMTDS/NMTDS_PassKeyShapeMapHasher.cdl deleted file mode 100644 index 2f585370d..000000000 --- a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.cdl +++ /dev/null @@ -1,45 +0,0 @@ --- Copyright (C) 2007-2011 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: NMTDS_PassKeyMapHasher.cdl --- Created: --- Author: Peter KURNEV --- -class PassKeyShapeMapHasher from NMTDS - - ---Purpose: - -uses - PassKeyShape from NMTDS - ---raises - -is - HashCode(myclass; - aPKey : PassKeyShape from NMTDS; - Upper : Integer from Standard) - returns Integer from Standard; - - - IsEqual(myclass; - aPKey1 : PassKeyShape from NMTDS; - aPKey2 : PassKeyShape from NMTDS) - returns Boolean from Standard; - -end PassKeyShapeMapHasher; diff --git a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.cxx b/src/NMTDS/NMTDS_PassKeyShapeMapHasher.cxx index e934a714f..4ff71d48e 100644 --- a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.cxx +++ b/src/NMTDS/NMTDS_PassKeyShapeMapHasher.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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,7 +22,7 @@ // Author: Peter KURNEV // // -#include +#include //======================================================================= //function : HashCode diff --git a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.hxx b/src/NMTDS/NMTDS_PassKeyShapeMapHasher.hxx index 5c718dc44..a674091db 100644 --- a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.hxx +++ b/src/NMTDS/NMTDS_PassKeyShapeMapHasher.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -17,83 +17,32 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_PassKeyMapHasher.cxx +// Created: +// Author: Peter KURNEV +// +// #ifndef _NMTDS_PassKeyShapeMapHasher_HeaderFile #define _NMTDS_PassKeyShapeMapHasher_HeaderFile -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class NMTDS_PassKeyShape; - - -#ifndef _Standard_HeaderFile #include -#endif -#ifndef _Standard_Macro_HeaderFile #include -#endif - +#include +#include +#include +//======================================================================= +//function : NMTDS_PassKeyShapeMapHasher +//purpose : +//======================================================================= class NMTDS_PassKeyShapeMapHasher { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT static Standard_Integer HashCode(const NMTDS_PassKeyShape& aPKey,const Standard_Integer Upper) ; - - -Standard_EXPORT static Standard_Boolean IsEqual(const NMTDS_PassKeyShape& aPKey1,const NMTDS_PassKeyShape& aPKey2) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + public: + Standard_EXPORT + static Standard_Integer HashCode(const NMTDS_PassKeyShape& aPKey, + const Standard_Integer Upper) ; + + Standard_EXPORT + static Standard_Boolean IsEqual(const NMTDS_PassKeyShape& aPKey1, + const NMTDS_PassKeyShape& aPKey2) ; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.ixx b/src/NMTDS/NMTDS_PassKeyShapeMapHasher.ixx deleted file mode 100644 index 60c9e363c..000000000 --- a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.ixx +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.jxx b/src/NMTDS/NMTDS_PassKeyShapeMapHasher.jxx deleted file mode 100644 index 37a231375..000000000 --- a/src/NMTDS/NMTDS_PassKeyShapeMapHasher.jxx +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _NMTDS_PassKeyShape_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyShapeMapHasher_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.cdl b/src/NMTDS/NMTDS_ShapesDataStructure.cdl deleted file mode 100644 index 0f2c201f6..000000000 --- a/src/NMTDS/NMTDS_ShapesDataStructure.cdl +++ /dev/null @@ -1,102 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTDS_ShapesDataStructure.cdl --- Created: --- Author: Peter KURNEV --- -class ShapesDataStructure from NMTDS - inherits ShapesDataStructure from BooleanOperations - - ---Purpose: - -uses - Box from Bnd, - IndexedMapOfInteger from TColStd, - Shape from TopoDS, - IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations, - CArray1OfIndexRange from NMTDS, - --modified by NIZNHY-PKV Mon Dec 12 08:57:18 2011f - DataMapOfShapeInteger from TopTools - --IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger from NMTDS - --modified by NIZNHY-PKV Mon Dec 12 08:57:22 2011t ---raises - -is - Create - returns ShapesDataStructure from NMTDS; - - SetCompositeShape(me:out; - aS:Shape from TopoDS); - - Init(me:out); - - Ranges(me) - returns CArray1OfIndexRange from NMTDS; - ---C++: return const & - - CompositeShape(me) - returns Shape from TopoDS; - ---C++: return const & - - ShapeRangeIndex(me; - aId:Integer from Standard) - returns Integer from Standard; - - Rank (me; - anIndex:Integer from Standard) - returns Integer from Standard - is redefined; - - ShapeIndex (me; - aS:Shape from TopoDS; - iRank:Integer from Standard) - returns Integer from Standard - is redefined; - - FillMap (me; - aS :Shape from TopoDS; - aMSA: out IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations; - aMS : out IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations); - - FillSubshapes (me; - aS :Shape from TopoDS; - aMSA:out IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations; - aMS :out IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations); - - GetAllSuccessors(me; - anIndex:Integer from Standard; - aScrs :out IndexedMapOfInteger from TColStd); - - ComputeBoxEx(me; - anIndex:Integer from Standard; - aBox:out Box from Bnd); - -fields - myCompositeShape: Shape from TopoDS is protected; - myRanges : CArray1OfIndexRange from NMTDS is protected; - --modified by NIZNHY-PKV Mon Dec 12 08:58:07 2011f - myShapeIndexMap : DataMapOfShapeInteger from TopTools is protected; - --myShapeIndexMap : IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger from NMTDS is protected; - --modified by NIZNHY-PKV Mon Dec 12 08:58:21 2011t -end ShapesDataStructure; - diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.cxx b/src/NMTDS/NMTDS_ShapesDataStructure.cxx index 1fc3741c1..ef679ed2f 100644 --- a/src/NMTDS/NMTDS_ShapesDataStructure.cxx +++ b/src/NMTDS/NMTDS_ShapesDataStructure.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,11 +18,12 @@ // 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: NMTDS_ShapesDataStructure.cxx // Author: Peter KURNEV -#include +#include #include #include #include diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.hxx b/src/NMTDS/NMTDS_ShapesDataStructure.hxx index f8a1180df..e574b92ec 100644 --- a/src/NMTDS/NMTDS_ShapesDataStructure.hxx +++ b/src/NMTDS/NMTDS_ShapesDataStructure.hxx @@ -1,124 +1,96 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_ShapesDataStructure_HeaderFile -#define _NMTDS_ShapesDataStructure_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTDS_CArray1OfIndexRange_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _BooleanOperations_ShapesDataStructure_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -class TopoDS_Shape; -class NMTDS_CArray1OfIndexRange; -class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors; -class TColStd_IndexedMapOfInteger; -class Bnd_Box; - - - -class NMTDS_ShapesDataStructure : public BooleanOperations_ShapesDataStructure { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT NMTDS_ShapesDataStructure(); - - Standard_EXPORT void SetCompositeShape(const TopoDS_Shape& aS) ; - - Standard_EXPORT void Init() ; - - Standard_EXPORT const NMTDS_CArray1OfIndexRange& Ranges() const; - - Standard_EXPORT const TopoDS_Shape& CompositeShape() const; - - Standard_EXPORT Standard_Integer ShapeRangeIndex(const Standard_Integer aId) const; - - Standard_EXPORT virtual Standard_Integer Rank(const Standard_Integer anIndex) const; - - Standard_EXPORT virtual Standard_Integer ShapeIndex(const TopoDS_Shape& aS,const Standard_Integer iRank) const; - - Standard_EXPORT void FillMap(const TopoDS_Shape& aS,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const; - - Standard_EXPORT void FillSubshapes(const TopoDS_Shape& aS,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const; - - Standard_EXPORT void GetAllSuccessors(const Standard_Integer anIndex,TColStd_IndexedMapOfInteger& aScrs) const; - - Standard_EXPORT void ComputeBoxEx(const Standard_Integer anIndex,Bnd_Box& aBox) const; - - - - - -protected: - - - -TopoDS_Shape myCompositeShape; -NMTDS_CArray1OfIndexRange myRanges; -TopTools_DataMapOfShapeInteger myShapeIndexMap; - - -private: - - - - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + + +#ifndef _NMTDS_ShapesDataStructure_HeaderFile +#define _NMTDS_ShapesDataStructure_HeaderFile + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//class : NMTDS_ShapesDataStructure +//purpose : +//======================================================================= +class NMTDS_ShapesDataStructure : public BooleanOperations_ShapesDataStructure +{ + public: + Standard_EXPORT + NMTDS_ShapesDataStructure(); + + Standard_EXPORT + void SetCompositeShape(const TopoDS_Shape& aS) ; + + Standard_EXPORT + void Init() ; + + Standard_EXPORT + const NMTDS_CArray1OfIndexRange& Ranges() const; + + Standard_EXPORT + const TopoDS_Shape& CompositeShape() const; + + Standard_EXPORT + Standard_Integer ShapeRangeIndex(const Standard_Integer aId) const; + + Standard_EXPORT + virtual Standard_Integer Rank(const Standard_Integer anIndex) const; + + Standard_EXPORT + virtual Standard_Integer ShapeIndex(const TopoDS_Shape& aS, + const Standard_Integer iRank) const; + + Standard_EXPORT + void FillMap(const TopoDS_Shape& aS, + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA, + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const; + + Standard_EXPORT + void FillSubshapes(const TopoDS_Shape& aS, + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA, + BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const; + + Standard_EXPORT + void GetAllSuccessors(const Standard_Integer anIndex, + TColStd_IndexedMapOfInteger& aScrs) const; + + Standard_EXPORT + void ComputeBoxEx(const Standard_Integer anIndex, + Bnd_Box& aBox) const; + + + protected: + TopoDS_Shape myCompositeShape; + NMTDS_CArray1OfIndexRange myRanges; + TopTools_DataMapOfShapeInteger myShapeIndexMap; +}; +#endif diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.ixx b/src/NMTDS/NMTDS_ShapesDataStructure.ixx deleted file mode 100644 index 22c13a28c..000000000 --- a/src/NMTDS/NMTDS_ShapesDataStructure.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_ShapesDataStructure.jxx b/src/NMTDS/NMTDS_ShapesDataStructure.jxx deleted file mode 100644 index da09c3e38..000000000 --- a/src/NMTDS/NMTDS_ShapesDataStructure.jxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTDS_CArray1OfIndexRange_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _Bnd_Box_HeaderFile -#include -#endif -#ifndef _NMTDS_ShapesDataStructure_HeaderFile -#include -#endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPairBoolean.hxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPairBoolean.hxx deleted file mode 100644 index 4fa8a6ad3..000000000 --- a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPairBoolean.hxx +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTDS_StdMapNodeOfMapOfPairBoolean_HeaderFile -#define _NMTDS_StdMapNodeOfMapOfPairBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_DefineHandle_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPairBoolean_HeaderFile -#include -#endif - -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTDS_PairBoolean; -class NMTDS_PairMapHasher; -class NMTDS_MapOfPairBoolean; -class NMTDS_MapIteratorOfMapOfPairBoolean; - - - -class NMTDS_StdMapNodeOfMapOfPairBoolean : public TCollection_MapNode { - -public: - - - NMTDS_StdMapNodeOfMapOfPairBoolean(const NMTDS_PairBoolean& K,const TCollection_MapNodePtr& n); - - NMTDS_PairBoolean& Key() const; - - - - - DEFINE_STANDARD_RTTI(NMTDS_StdMapNodeOfMapOfPairBoolean) - -protected: - - - - -private: - - -NMTDS_PairBoolean myKey; - - -}; - -#define TheKey NMTDS_PairBoolean -#define TheKey_hxx -#define Hasher NMTDS_PairMapHasher -#define Hasher_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPairBoolean -#define TCollection_StdMapNode_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPairBoolean -#define TCollection_MapIterator_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPairBoolean -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPairBoolean_Type_() -#define TCollection_Map NMTDS_MapOfPairBoolean -#define TCollection_Map_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_StdMapNode -#undef TCollection_StdMapNode_hxx -#undef TCollection_MapIterator -#undef TCollection_MapIterator_hxx -#undef Handle_TCollection_StdMapNode -#undef TCollection_StdMapNode_Type_ -#undef TCollection_Map -#undef TCollection_Map_hxx - - -// other Inline functions and methods (like "C++: function call" methods) - - -#endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPairBoolean_0.cxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPairBoolean_0.cxx deleted file mode 100644 index 4a755b6e8..000000000 --- a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPairBoolean_0.cxx +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#include - -#ifndef _Standard_Type_HeaderFile -#include -#endif - -#ifndef _NMTDS_PairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PairMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_MapOfPairBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_MapIteratorOfMapOfPairBoolean_HeaderFile -#include -#endif - - - - -IMPLEMENT_STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPairBoolean) -IMPLEMENT_STANDARD_SUPERTYPE_ARRAY() - STANDARD_TYPE(TCollection_MapNode), - STANDARD_TYPE(MMgt_TShared), - STANDARD_TYPE(Standard_Transient), - -IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_END() -IMPLEMENT_STANDARD_TYPE_END(NMTDS_StdMapNodeOfMapOfPairBoolean) - - -IMPLEMENT_DOWNCAST(NMTDS_StdMapNodeOfMapOfPairBoolean,Standard_Transient) -IMPLEMENT_STANDARD_RTTI(NMTDS_StdMapNodeOfMapOfPairBoolean) - - -#define TheKey NMTDS_PairBoolean -#define TheKey_hxx -#define Hasher NMTDS_PairMapHasher -#define Hasher_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPairBoolean -#define TCollection_StdMapNode_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPairBoolean -#define TCollection_MapIterator_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPairBoolean -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPairBoolean_Type_() -#define TCollection_Map NMTDS_MapOfPairBoolean -#define TCollection_Map_hxx -#include - diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx deleted file mode 100644 index 2a9ac2a5a..000000000 --- a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile -#define _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile -#include -#endif - -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTDS_PassKey; -class NMTDS_PassKeyMapHasher; -class NMTDS_MapOfPassKey; -class NMTDS_MapIteratorOfMapOfPassKey; - - - -class NMTDS_StdMapNodeOfMapOfPassKey : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_StdMapNodeOfMapOfPassKey(const NMTDS_PassKey& K,const TCollection_MapNodePtr& n); - - NMTDS_PassKey& Key() const; -//Standard_EXPORT ~NMTDS_StdMapNodeOfMapOfPassKey(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -NMTDS_PassKey myKey; - - -}; - -#define TheKey NMTDS_PassKey -#define TheKey_hxx -#define Hasher NMTDS_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey -#define TCollection_MapIterator_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey -#define TCollection_StdMapNode_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() -#define TCollection_Map NMTDS_MapOfPassKey -#define TCollection_Map_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_MapIterator -#undef TCollection_MapIterator_hxx -#undef TCollection_StdMapNode -#undef TCollection_StdMapNode_hxx -#undef Handle_TCollection_StdMapNode -#undef TCollection_StdMapNode_Type_ -#undef TCollection_Map -#undef TCollection_Map_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx deleted file mode 100644 index 509924c0c..000000000 --- a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile -#define _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile -#include -#endif - -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTDS_PassKeyBoolean; -class NMTDS_PassKeyMapHasher; -class NMTDS_MapOfPassKeyBoolean; -class NMTDS_MapIteratorOfMapOfPassKeyBoolean; - - - -class NMTDS_StdMapNodeOfMapOfPassKeyBoolean : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTDS_StdMapNodeOfMapOfPassKeyBoolean(const NMTDS_PassKeyBoolean& K,const TCollection_MapNodePtr& n); - - NMTDS_PassKeyBoolean& Key() const; -//Standard_EXPORT ~NMTDS_StdMapNodeOfMapOfPassKeyBoolean(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -NMTDS_PassKeyBoolean myKey; - - -}; - -#define TheKey NMTDS_PassKeyBoolean -#define TheKey_hxx -#define Hasher NMTDS_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean -#define TCollection_MapIterator_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean -#define TCollection_StdMapNode_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() -#define TCollection_Map NMTDS_MapOfPassKeyBoolean -#define TCollection_Map_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_MapIterator -#undef TCollection_MapIterator_hxx -#undef TCollection_StdMapNode -#undef TCollection_StdMapNode_hxx -#undef Handle_TCollection_StdMapNode -#undef TCollection_StdMapNode_Type_ -#undef TCollection_Map -#undef TCollection_Map_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx deleted file mode 100644 index c86a9af97..000000000 --- a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile -#include -#endif -#ifndef _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile -#include -#endif -//NMTDS_StdMapNodeOfMapOfPassKeyBoolean::~NMTDS_StdMapNodeOfMapOfPassKeyBoolean() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_StdMapNodeOfMapOfPassKeyBoolean", - sizeof(NMTDS_StdMapNodeOfMapOfPassKeyBoolean), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean))) { - _anOtherObject = Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)((Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_StdMapNodeOfMapOfPassKeyBoolean::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) ; -} -//Standard_Boolean NMTDS_StdMapNodeOfMapOfPassKeyBoolean::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean::~Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean() {} -#define TheKey NMTDS_PassKeyBoolean -#define TheKey_hxx -#define Hasher NMTDS_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean -#define TCollection_MapIterator_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean -#define TCollection_StdMapNode_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() -#define TCollection_Map NMTDS_MapOfPassKeyBoolean -#define TCollection_Map_hxx -#include - diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx deleted file mode 100644 index 5d5cd582a..000000000 --- a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _NMTDS_PassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_PassKeyMapHasher_HeaderFile -#include -#endif -#ifndef _NMTDS_MapOfPassKey_HeaderFile -#include -#endif -#ifndef _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile -#include -#endif -//NMTDS_StdMapNodeOfMapOfPassKey::~NMTDS_StdMapNodeOfMapOfPassKey() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTDS_StdMapNodeOfMapOfPassKey_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTDS_StdMapNodeOfMapOfPassKey", - sizeof(NMTDS_StdMapNodeOfMapOfPassKey), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTDS_StdMapNodeOfMapOfPassKey) Handle(NMTDS_StdMapNodeOfMapOfPassKey)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTDS_StdMapNodeOfMapOfPassKey) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey))) { - _anOtherObject = Handle(NMTDS_StdMapNodeOfMapOfPassKey)((Handle(NMTDS_StdMapNodeOfMapOfPassKey)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTDS_StdMapNodeOfMapOfPassKey::DynamicType() const -{ - return STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey) ; -} -//Standard_Boolean NMTDS_StdMapNodeOfMapOfPassKey::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTDS_StdMapNodeOfMapOfPassKey::~Handle_NMTDS_StdMapNodeOfMapOfPassKey() {} -#define TheKey NMTDS_PassKey -#define TheKey_hxx -#define Hasher NMTDS_PassKeyMapHasher -#define Hasher_hxx -#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey -#define TCollection_MapIterator_hxx -#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey -#define TCollection_StdMapNode_hxx -#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey -#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() -#define TCollection_Map NMTDS_MapOfPassKey -#define TCollection_Map_hxx -#include - diff --git a/src/NMTDS/NMTDS_Tools.cdl b/src/NMTDS/NMTDS_Tools.cdl deleted file mode 100644 index 0c3c29d25..000000000 --- a/src/NMTDS/NMTDS_Tools.cdl +++ /dev/null @@ -1,61 +0,0 @@ --- Copyright (C) 2007-2011 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: NMTDS_Tools.cdl --- Created: Tue Feb 20 14:56:14 2007 --- Author: Peter KURNEV --- -class Tools from NMTDS - - ---Purpose: - -uses - ShapeEnum from TopAbs, - Vertex from TopoDS, - Shape from TopoDS, - IndexedDataMapOfShapeShape from TopTools - ---raises - -is - TypeToInteger(myclass; - aT1: ShapeEnum from TopAbs; - aT2: ShapeEnum from TopAbs) - returns Integer from Standard; - - HasBRep(myclass; - aT: ShapeEnum from TopAbs) - returns Boolean from Standard; - - ComputeVV(myclass; - aV1:Vertex from TopoDS; - aV2:Vertex from TopoDS) - returns Integer from Standard; - - CopyShape(myclass; - aS:Shape from TopoDS; - aSC:out Shape from TopoDS); - - CopyShape(myclass; - aS:Shape from TopoDS; - aSC :out Shape from TopoDS; - aMSS :out IndexedDataMapOfShapeShape from TopTools); ---fields - -end Tools; diff --git a/src/NMTDS/NMTDS_Tools.cxx b/src/NMTDS/NMTDS_Tools.cxx index 03755e6dd..f34ce68e5 100644 --- a/src/NMTDS/NMTDS_Tools.cxx +++ b/src/NMTDS/NMTDS_Tools.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -15,12 +15,13 @@ // 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: NMTDS_Tools.cxx // Created: Tue Feb 20 14:57:28 2007 // Author: Peter KURNEV -#include +#include #include #include #include @@ -83,7 +84,6 @@ void CopySource(const TopoDS_Shape& aS, // bFree=aSC.Free(); aSC.Free(Standard_True); - //modified by NIZNHY-PKV Fri Nov 25 10:10:03 2011f aSF=aS; if (aT==TopAbs_EDGE){ TopAbs_Orientation aOr; @@ -94,8 +94,6 @@ void CopySource(const TopoDS_Shape& aS, } } aIt.Initialize(aSF); - //aIt.Initialize(aS); - //modified by NIZNHY-PKV Fri Nov 25 10:10:05 2011t for (; aIt.More(); aIt.Next()) { TopoDS_Shape aSCx; // diff --git a/src/NMTDS/NMTDS_Tools.hxx b/src/NMTDS/NMTDS_Tools.hxx index 8e841bd60..e30d8924c 100644 --- a/src/NMTDS/NMTDS_Tools.hxx +++ b/src/NMTDS/NMTDS_Tools.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -17,97 +17,47 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_Tools.hxx +// Created: +// Author: Peter KURNEV + #ifndef _NMTDS_Tools_HeaderFile #define _NMTDS_Tools_HeaderFile -#ifndef _Standard_Integer_HeaderFile +#include +#include #include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif -class TopoDS_Vertex; -class TopoDS_Shape; -class TopTools_IndexedDataMapOfShapeShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTDS_Tools { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT static Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aT1,const TopAbs_ShapeEnum aT2) ; - - -Standard_EXPORT static Standard_Boolean HasBRep(const TopAbs_ShapeEnum aT) ; - - -Standard_EXPORT static Standard_Integer ComputeVV(const TopoDS_Vertex& aV1,const TopoDS_Vertex& aV2) ; - - -Standard_EXPORT static void CopyShape(const TopoDS_Shape& aS,TopoDS_Shape& aSC) ; - - -Standard_EXPORT static void CopyShape(const TopoDS_Shape& aS,TopoDS_Shape& aSC,TopTools_IndexedDataMapOfShapeShape& aMSS) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - +#include +#include +#include + +//======================================================================= +//function : NMTDS_Tools +//purpose : +//======================================================================= +class NMTDS_Tools +{ + public: + Standard_EXPORT + static Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aT1, + const TopAbs_ShapeEnum aT2) ; + + Standard_EXPORT + static Standard_Boolean HasBRep(const TopAbs_ShapeEnum aT) ; + + Standard_EXPORT + static Standard_Integer ComputeVV(const TopoDS_Vertex& aV1, + const TopoDS_Vertex& aV2) ; + + Standard_EXPORT + static void CopyShape(const TopoDS_Shape& aS, + TopoDS_Shape& aSC) ; + + Standard_EXPORT + static void CopyShape(const TopoDS_Shape& aS, + TopoDS_Shape& aSC, + TopTools_IndexedDataMapOfShapeShape& aMSS) ; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTDS/NMTDS_Tools.ixx b/src/NMTDS/NMTDS_Tools.ixx deleted file mode 100644 index 488ac7d68..000000000 --- a/src/NMTDS/NMTDS_Tools.ixx +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - - - - diff --git a/src/NMTDS/NMTDS_Tools.jxx b/src/NMTDS/NMTDS_Tools.jxx deleted file mode 100644 index 02dfd8354..000000000 --- a/src/NMTDS/NMTDS_Tools.jxx +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedDataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _NMTDS_Tools_HeaderFile -#include -#endif diff --git a/src/NMTDS_NEW/Makefile.am b/src/NMTDS_NEW/Makefile.am deleted file mode 100644 index a8a43b8dd..000000000 --- a/src/NMTDS_NEW/Makefile.am +++ /dev/null @@ -1,112 +0,0 @@ - -# -# 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 - -# GEOM NMTAlgo : partition algorithm -# File : Makefile.in -# Author : Julia DOROVSKIKH -# Modified by : Alexander BORODIN (OCN) - autotools usage -# Module : GEOM - -include $(top_srcdir)/adm_local/unix/make_common_starter.am - -# header files -salomeinclude_HEADERS = \ - NMTDS_BndSphere.hxx \ - NMTDS_BndSphere.lxx \ - NMTDS_BndSphereTree.hxx \ - NMTDS_BoxBndTree.hxx \ - NMTDS_CArray1OfIndexRange.hxx \ - NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx \ - NMTDS_DataMapOfIntegerMapOfInteger.hxx \ - NMTDS_IndexedDataMapOfIntegerShape.hxx \ - NMTDS_IndexedDataMapOfShapeBndSphere.hxx \ - NMTDS_IndexedDataMapOfShapeBox.hxx \ - NMTDS_IndexRange.hxx \ - NMTDS_InterfPool.hxx \ - NMTDS_InterfType.hxx \ - NMTDS_IteratorCheckerSI.hxx \ - NMTDS_Iterator.hxx \ - NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ - NMTDS_ListIteratorOfListOfPairBoolean.hxx \ - NMTDS_ListIteratorOfListOfPair.hxx \ - NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx \ - NMTDS_ListIteratorOfListOfPassKey.hxx \ - NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \ - NMTDS_ListOfPairBoolean.hxx \ - NMTDS_ListOfPair.hxx \ - NMTDS_ListOfPassKeyBoolean.hxx \ - NMTDS_ListOfPassKey.hxx \ - NMTDS_MapIteratorOfMapOfPairBoolean.hxx \ - NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx \ - NMTDS_MapIteratorOfMapOfPassKey.hxx \ - NMTDS_MapOfPairBoolean.hxx \ - NMTDS_MapOfPassKeyBoolean.hxx \ - NMTDS_MapOfPassKey.hxx \ - NMTDS_PairBoolean.hxx \ - NMTDS_Pair.hxx \ - NMTDS_PairMapHasher.hxx \ - NMTDS_PassKeyBoolean.hxx \ - NMTDS_PassKey.hxx \ - NMTDS_PassKeyMapHasher.hxx \ - NMTDS_PassKeyShape.hxx \ - NMTDS_PassKeyShapeMapHasher.hxx \ - NMTDS_PInterfPool.hxx \ - NMTDS_PIterator.hxx \ - NMTDS_PShapesDataStructure.hxx \ - NMTDS_ShapesDataStructure.hxx \ - NMTDS_Tools.hxx - -# Libraries targets -lib_LTLIBRARIES = libNMTDS.la - -dist_libNMTDS_la_SOURCES = \ - NMTDS_BndSphere.cxx \ - NMTDS_BndSphereTree.cxx \ - NMTDS_BoxBndTree.cxx \ - NMTDS_CArray1OfIndexRange.cxx \ - NMTDS_IndexRange.cxx \ - NMTDS_InterfPool.cxx \ - NMTDS_IteratorCheckerSI.cxx \ - NMTDS_Iterator.cxx \ - NMTDS_PairBoolean.cxx \ - NMTDS_Pair.cxx \ - NMTDS_PairMapHasher.cxx \ - NMTDS_PassKeyBoolean.cxx \ - NMTDS_PassKey.cxx \ - NMTDS_PassKeyMapHasher.cxx \ - NMTDS_PassKeyShape.cxx \ - NMTDS_PassKeyShapeMapHasher.cxx \ - NMTDS_ShapesDataStructure.cxx \ - NMTDS_Tools.cxx - -# additional information to compile and link file - -libNMTDS_la_CPPFLAGS = \ - $(CAS_CPPFLAGS) \ - $(KERNEL_CXXFLAGS) - -libNMTDS_la_LDFLAGS = \ - $(STDLIB) \ - $(CAS_LDPATH) -lTKBool -lTKBO - -# extra dist files -CDL_FILES = NMTDS.cdl - -EXTRA_DIST += \ - $(CDL_FILES) \ - FILES diff --git a/src/NMTDS_NEW/NMTDS.cdl b/src/NMTDS_NEW/NMTDS.cdl deleted file mode 100644 index 39ee4546f..000000000 --- a/src/NMTDS_NEW/NMTDS.cdl +++ /dev/null @@ -1,94 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTDS.cdl --- Created: Fri Nov 28 10:13:19 2003 --- Author: Peter KURNEV --- -package NMTDS - - ---Purpose: - ---uses - --TCollection, - --TColStd, - --gp, - --Bnd, - --TopoDS, - --TopAbs, - --TopTools, - --BooleanOperations, - --BOPTools, - --BOPTColStd - -is - imported InterfType from NMTDS; - imported BndSphere from NMTDS; - imported IndexRange from NMTDS; - imported InterfPool from NMTDS; - imported Iterator from NMTDS; - imported IteratorCheckerSI from NMTDS; - imported Pair from NMTDS; - imported PairBoolean from NMTDS; - imported PairMapHasher from NMTDS; - imported PassKey from NMTDS; - imported PassKeyBoolean from NMTDS; - imported PassKeyMapHasher from NMTDS; - imported PassKeyShape from NMTDS; - imported PassKeyShapeMapHasher from NMTDS; - imported Tools from NMTDS; - imported ShapesDataStructure from NMTDS; - imported PShapesDataStructure from NMTDS; - imported PIterator from NMTDS; - imported PInterfPool from NMTDS; - -- - imported ListOfPassKey from NMTDS; - imported ListIteratorOfListOfPassKey from NMTDS; - - imported ListOfPassKeyBoolean from NMTDS; - imported ListIteratorOfListOfPassKeyBoolean from NMTDS; - - imported ListOfPair from NMTDS; - imported ListIteratorOfListOfPair from NMTDS; - - imported ListOfPairBoolean from NMTDS; - imported ListIteratorOfListOfPairBoolean from NMTDS; - - imported ListOfIndexedDataMapOfShapeAncestorsSuccessors from NMTDS; - imported ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors from NMTDS; - - imported MapOfPassKey from NMTDS; - imported MapIteratorOfMapOfPassKey from NMTDS; - - imported MapOfPairBoolean from NMTDS; - imported MapIteratorOfMapOfPairBoolean from NMTDS; - - imported IndexedDataMapOfShapeBox from NMTDS; - imported IndexedDataMapOfIntegerShape from NMTDS; - imported IndexedDataMapOfShapeBndSphere from NMTDS; - - imported DataMapOfIntegerMapOfInteger from NMTDS; - imported DataMapIteratorOfDataMapOfIntegerMapOfInteger from NMTDS; - - imported CArray1OfIndexRange from NMTDS; - -end NMTDS; diff --git a/src/NMTDS_NEW/NMTDS_BndSphere.cxx b/src/NMTDS_NEW/NMTDS_BndSphere.cxx deleted file mode 100644 index 0c5d7e5a7..000000000 --- a/src/NMTDS_NEW/NMTDS_BndSphere.cxx +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_BndSphere.cxx -// Created: -// Author: Peter KURNEV -// -// -#include - -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTDS_BndSphere::NMTDS_BndSphere() -{ - myCenter.SetCoord(0., 0., 0.); - myRadius=0.; - myGap=0.; -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= - NMTDS_BndSphere::~NMTDS_BndSphere() -{ -} -//======================================================================= -//function : IsOut -//purpose : -//======================================================================= - Standard_Boolean NMTDS_BndSphere::IsOut(const NMTDS_BndSphere& theOther)const -{ - Standard_Real aD2, aT2; - // - aD2=myCenter.SquareDistance(theOther.myCenter); - aT2=myRadius+myGap+theOther.myRadius+theOther.myGap; - aT2=aT2*aT2; - // - return aD2>aT2; -} diff --git a/src/NMTDS_NEW/NMTDS_BndSphere.hxx b/src/NMTDS_NEW/NMTDS_BndSphere.hxx deleted file mode 100644 index 8cd676219..000000000 --- a/src/NMTDS_NEW/NMTDS_BndSphere.hxx +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_BndSphere.hxx -// Created: -// Author: Peter KURNEV -// - -#ifndef _NMTDS_BndSphere_HeaderFile -#define _NMTDS_BndSphere_HeaderFile - -#include -#include -#include -#include -#include - -//======================================================================= -//class : NMTDS_BndSphere -//purpose : -//======================================================================= -class NMTDS_BndSphere { - public: - Standard_EXPORT - NMTDS_BndSphere(); - - Standard_EXPORT - virtual ~NMTDS_BndSphere(); - - void SetCenter(const gp_Pnt& theP) ; - - const gp_Pnt& Center() const; - - void SetRadius(const Standard_Real theR) ; - - Standard_Real Radius() const; - - void SetGap(const Standard_Real theGap) ; - - Standard_Real Gap() const; - - void Add(const NMTDS_BndSphere& theOther) ; - - Standard_EXPORT - Standard_Boolean IsOut(const NMTDS_BndSphere& theOther) const; - - Standard_Real SquareExtent() const; - - protected: - gp_Pnt myCenter; - Standard_Real myRadius; - Standard_Real myGap; -}; - -#include - -#endif diff --git a/src/NMTDS_NEW/NMTDS_BndSphere.lxx b/src/NMTDS_NEW/NMTDS_BndSphere.lxx deleted file mode 100644 index 582e8d290..000000000 --- a/src/NMTDS_NEW/NMTDS_BndSphere.lxx +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_BndSphere.lxx -// Created: -// Author: Peter KURNEV -// -//======================================================================= -//function : SetCenter -//purpose : -//======================================================================= - inline void NMTDS_BndSphere::SetCenter(const gp_Pnt& theP) -// -{ - myCenter=theP; -} -//======================================================================= -//function : Center -//purpose : -//======================================================================= - inline const gp_Pnt& NMTDS_BndSphere::Center()const -{ - return myCenter; -} -//======================================================================= -//function : SetRadius -//purpose : -//======================================================================= - inline void NMTDS_BndSphere::SetRadius(const Standard_Real theR) -{ - myRadius=theR; -} -//======================================================================= -//function : Radius -//purpose : -//======================================================================= - inline Standard_Real NMTDS_BndSphere::Radius()const -{ - return myRadius; -} -//======================================================================= -//function : SetGap -//purpose : -//======================================================================= - inline void NMTDS_BndSphere::SetGap(const Standard_Real theGap) -{ - myGap=theGap; -} -//======================================================================= -//function : Gap -//purpose : -//======================================================================= - inline Standard_Real NMTDS_BndSphere::Gap()const -{ - return myGap; -} -//======================================================================= -//function : Add -//purpose : -//======================================================================= - inline void NMTDS_BndSphere::Add(const NMTDS_BndSphere& theOther) -{ - Standard_Real aTmax, aR, aT, aTOther; - gp_Pnt aPc; - // - aPc.SetXYZ(0.5*(myCenter.XYZ()+theOther.myCenter.XYZ())); - // - aR=aPc.Distance(myCenter); - // - aT=myRadius+myGap; - aTOther=theOther.myRadius+theOther.myGap; - aTmax=(aT>aTOther) ? aT: aTOther; - // - aR=aR+aTmax; - // - myCenter=aPc; - myRadius=aR; -} -//======================================================================= -//function : SquareExtent -//purpose : -//======================================================================= - inline Standard_Real NMTDS_BndSphere::SquareExtent()const -{ - Standard_Real aD; - // - aD=myRadius+myGap; - aD=aD+aD; - aD=aD*aD; - // - return aD; -} diff --git a/src/NMTDS_NEW/NMTDS_BndSphereTree.cxx b/src/NMTDS_NEW/NMTDS_BndSphereTree.cxx deleted file mode 100644 index f5f810fc4..000000000 --- a/src/NMTDS_NEW/NMTDS_BndSphereTree.cxx +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_BndSphereTree.cxx -// Created: -// Author: Peter KURNEV -// -// -#include -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTDS_BndSphereTreeSelector::NMTDS_BndSphereTreeSelector() -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= - NMTDS_BndSphereTreeSelector::~NMTDS_BndSphereTreeSelector() -{ -} -//======================================================================= -//function : Reject -//purpose : -//======================================================================= - Standard_Boolean NMTDS_BndSphereTreeSelector::Reject (const NMTDS_BndSphere& aBox) const -{ - Standard_Boolean bRet; - // - bRet=myBox.IsOut(aBox); - return bRet; -} -//======================================================================= -//function : Accept -//purpose : -//======================================================================= - Standard_Boolean NMTDS_BndSphereTreeSelector::Accept (const Standard_Integer& aIndex) -{ - Standard_Boolean bRet=Standard_False; - // - if (myFence.Add(aIndex)) { - myIndices.Append(aIndex); - bRet=!bRet; - } - return bRet; -} -//======================================================================= -//function : SetBox -//purpose : -//======================================================================= - void NMTDS_BndSphereTreeSelector::SetBox(const NMTDS_BndSphere& aBox) -{ - myBox=aBox; -} -//======================================================================= -//function : Clear -//purpose : -//======================================================================= - void NMTDS_BndSphereTreeSelector::Clear() -{ - myFence.Clear(); - myIndices.Clear(); -} -//======================================================================= -//function : Indices -//purpose : -//======================================================================= - const TColStd_ListOfInteger& NMTDS_BndSphereTreeSelector::Indices() const -{ - return myIndices; -} diff --git a/src/NMTDS_NEW/NMTDS_BndSphereTree.hxx b/src/NMTDS_NEW/NMTDS_BndSphereTree.hxx deleted file mode 100644 index 518745cf7..000000000 --- a/src/NMTDS_NEW/NMTDS_BndSphereTree.hxx +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_BndSphereTree.hxx -// Created: -// Author: Peter KURNEV -// -// -#ifndef NMTDS_BndSphereTree_HeaderFile -#define NMTDS_BndSphereTree_HeaderFile - -#include -#include -#include -#include - -typedef NCollection_UBTree NMTDS_BndSphereTree; - - class NMTDS_BndSphereTreeSelector : public NMTDS_BndSphereTree::Selector { - public: - Standard_EXPORT NMTDS_BndSphereTreeSelector(); - Standard_EXPORT virtual Standard_Boolean Reject(const NMTDS_BndSphere&) const; - Standard_EXPORT virtual Standard_Boolean Accept(const Standard_Integer &); - Standard_EXPORT virtual ~NMTDS_BndSphereTreeSelector(); - - Standard_EXPORT void Clear(); - Standard_EXPORT void SetBox(const NMTDS_BndSphere&); - Standard_EXPORT const TColStd_ListOfInteger& Indices() const; - - protected: - NMTDS_BndSphere myBox; - TColStd_MapOfInteger myFence; - TColStd_ListOfInteger myIndices; - - }; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_BoxBndTree.cxx b/src/NMTDS_NEW/NMTDS_BoxBndTree.cxx deleted file mode 100644 index 100d9857c..000000000 --- a/src/NMTDS_NEW/NMTDS_BoxBndTree.cxx +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTDS_BoxBndTree.cxx -// Created: Tue Oct 17 13:04:11 2006 -// Author: Peter KURNEV -// -// -#include -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTDS_BoxBndTreeSelector::NMTDS_BoxBndTreeSelector() -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= - NMTDS_BoxBndTreeSelector::~NMTDS_BoxBndTreeSelector() -{ -} -//======================================================================= -//function : Reject -//purpose : -//======================================================================= - Standard_Boolean NMTDS_BoxBndTreeSelector::Reject (const Bnd_Box& aBox) const -{ - Standard_Boolean bRet; - // - bRet=myBox.IsOut(aBox); - return bRet; -} -//======================================================================= -//function : Accept -//purpose : -//======================================================================= - Standard_Boolean NMTDS_BoxBndTreeSelector::Accept (const Standard_Integer& aIndex) -{ - Standard_Boolean bRet=Standard_False; - // - if (myFence.Add(aIndex)) { - myIndices.Append(aIndex); - bRet=!bRet; - } - return bRet; -} -//======================================================================= -//function : SetBox -//purpose : -//======================================================================= - void NMTDS_BoxBndTreeSelector::SetBox(const Bnd_Box& aBox) -{ - myBox=aBox; -} -//======================================================================= -//function : Clear -//purpose : -//======================================================================= - void NMTDS_BoxBndTreeSelector::Clear() -{ - myFence.Clear(); - myIndices.Clear(); -} -//======================================================================= -//function : Indices -//purpose : -//======================================================================= - const TColStd_ListOfInteger& NMTDS_BoxBndTreeSelector::Indices() const -{ - return myIndices; -} diff --git a/src/NMTDS_NEW/NMTDS_BoxBndTree.hxx b/src/NMTDS_NEW/NMTDS_BoxBndTree.hxx deleted file mode 100644 index 171da43ae..000000000 --- a/src/NMTDS_NEW/NMTDS_BoxBndTree.hxx +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTDS_BoxBndTree.hxx -// Created: Tue Oct 17 12:50:31 2006 -// Author: Peter KURNEV -// -// -#ifndef NMTDS_BoxBndTree_HeaderFile -#define NMTDS_BoxBndTree_HeaderFile - -#include -#include -#include -#include - -typedef NCollection_UBTree NMTDS_BoxBndTree; - - class NMTDS_BoxBndTreeSelector : public NMTDS_BoxBndTree::Selector { - public: - Standard_EXPORT NMTDS_BoxBndTreeSelector(); - Standard_EXPORT virtual Standard_Boolean Reject(const Bnd_Box&) const; - Standard_EXPORT virtual Standard_Boolean Accept(const Standard_Integer &); - Standard_EXPORT virtual ~NMTDS_BoxBndTreeSelector(); - - Standard_EXPORT void Clear(); - Standard_EXPORT void SetBox(const Bnd_Box&); - Standard_EXPORT const TColStd_ListOfInteger& Indices() const; - - protected: - Bnd_Box myBox; - TColStd_MapOfInteger myFence; - TColStd_ListOfInteger myIndices; - - }; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_CArray1OfIndexRange.hxx b/src/NMTDS_NEW/NMTDS_CArray1OfIndexRange.hxx deleted file mode 100644 index 1ded0aff1..000000000 --- a/src/NMTDS_NEW/NMTDS_CArray1OfIndexRange.hxx +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_BndSphere.hxx -// Created: -// Author: Peter KURNEV -// - -#ifndef _NMTDS_CArray1OfIndexRange_HeaderFile -#define _NMTDS_CArray1OfIndexRange_HeaderFile - -#include -#include -#include -#include -#include -#include - -class Standard_OutOfRange; -class Standard_OutOfMemory; - - - -//======================================================================= -//function : NMTDS_CArray1OfIndexRange -//purpose : -//======================================================================= -class NMTDS_CArray1OfIndexRange { - public: - - Standard_EXPORT - NMTDS_CArray1OfIndexRange(const Standard_Integer Length = 0, - const Standard_Integer BlockLength = 5); - - Standard_EXPORT - void Resize(const Standard_Integer theNewLength) ; - - Standard_EXPORT - void Destroy() ; - - ~NMTDS_CArray1OfIndexRange() { - Destroy(); - } - - Standard_EXPORT - Standard_Integer Length() const; - - Standard_EXPORT - Standard_Integer Extent() const; - - Standard_EXPORT - Standard_Integer FactLength() const; - - Standard_EXPORT - Standard_Integer Append(const NMTDS_IndexRange& Value) ; - - Standard_EXPORT - void Remove(const Standard_Integer Index) ; - - Standard_EXPORT - const NMTDS_IndexRange& Value(const Standard_Integer Index) const; - - const NMTDS_IndexRange& operator ()(const Standard_Integer Index) const { - return Value(Index); - } - - Standard_EXPORT - NMTDS_IndexRange& ChangeValue(const Standard_Integer Index) ; - - NMTDS_IndexRange& operator ()(const Standard_Integer Index) { - return ChangeValue(Index); - } - - Standard_EXPORT - void SetBlockLength(const Standard_Integer aBL) ; - - Standard_EXPORT - Standard_Integer BlockLength() const; - - Standard_EXPORT - void Purge() ; - - private: - Standard_EXPORT - NMTDS_CArray1OfIndexRange(const NMTDS_CArray1OfIndexRange& AnArray); - - Standard_EXPORT - NMTDS_CArray1OfIndexRange& Assign(const NMTDS_CArray1OfIndexRange& Other) ; - - NMTDS_CArray1OfIndexRange& operator =(const NMTDS_CArray1OfIndexRange& Other) { - return Assign(Other); - } - - Standard_EXPORT - Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; - - - Standard_Address myStart; - Standard_Integer myLength; - Standard_Integer myFactLength; - Standard_Integer myBlockLength; - Standard_Boolean myIsAllocated; -}; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx b/src/NMTDS_NEW/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx deleted file mode 100644 index 5b2509a7e..000000000 --- a/src/NMTDS_NEW/NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx -// Created: Mon Feb 20 09:31:43 2012 -// Author: -// - - -#ifndef NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile -#define NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile - -#ifndef NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_DataMapOfIntegerMapOfInteger.hxx b/src/NMTDS_NEW/NMTDS_DataMapOfIntegerMapOfInteger.hxx deleted file mode 100644 index 1c413e03b..000000000 --- a/src/NMTDS_NEW/NMTDS_DataMapOfIntegerMapOfInteger.hxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_DataMapOfIntegerMapOfInteger.hxx -// Created: Mon Feb 20 09:27:40 2012 -// Author: -// - - -#ifndef NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile -#define NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile - -#include -#include - -#define _NCollection_MapHasher -#include - -typedef NCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger; -typedef NMTDS_DataMapOfIntegerMapOfInteger::Iterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger; - -#undef _NCollection_MapHasher - - -#endif diff --git a/src/NMTDS_NEW/NMTDS_IndexRange.cxx b/src/NMTDS_NEW/NMTDS_IndexRange.cxx deleted file mode 100644 index 2dd892c48..000000000 --- a/src/NMTDS_NEW/NMTDS_IndexRange.cxx +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTDS_IndexRange.cxx -// Created: Fri Nov 28 10:34:59 2003 -// Author: Peter KURNEV -// -// -#include - -//======================================================================= -//function :NMTDS_IndexRange::NMTDS_IndexRange -//purpose : -//======================================================================= - NMTDS_IndexRange::NMTDS_IndexRange() -: - myFirst(0), - myLast(0) -{ -} -//======================================================================= -//function :SetFirst -//purpose : -//======================================================================= - void NMTDS_IndexRange::SetFirst(const Standard_Integer aFirst) -{ - myFirst=aFirst; -} -//======================================================================= -//function :First -//purpose : -//======================================================================= - Standard_Integer NMTDS_IndexRange::First()const -{ - return myFirst; -} -//======================================================================= -//function :SetLast -//purpose : -//======================================================================= - void NMTDS_IndexRange::SetLast(const Standard_Integer aLast) -{ - myLast=aLast; -} -//======================================================================= -//function :Last -//purpose : -//======================================================================= - Standard_Integer NMTDS_IndexRange::Last()const -{ - return myLast; -} -//======================================================================= -//function :IsInRange -//purpose : -//======================================================================= - Standard_Boolean NMTDS_IndexRange::IsInRange(const Standard_Integer aIndex)const -{ - return (Standard_Boolean)(aIndex>=myFirst && aIndex<=myLast); -} diff --git a/src/NMTDS_NEW/NMTDS_IndexRange.hxx b/src/NMTDS_NEW/NMTDS_IndexRange.hxx deleted file mode 100644 index c0ec21787..000000000 --- a/src/NMTDS_NEW/NMTDS_IndexRange.hxx +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTDS_IndexRange.hxx -// Created: -// Author: Peter KURNEV -// -// - -#ifndef _NMTDS_IndexRange_HeaderFile -#define _NMTDS_IndexRange_HeaderFile - -#include -#include -#include -#include - -//======================================================================= -//class : NMTDS_IndexRange -//purpose : -//======================================================================= -class NMTDS_IndexRange { - public: - - Standard_EXPORT - NMTDS_IndexRange(); - - Standard_EXPORT void SetFirst(const Standard_Integer aFirst) ; - - Standard_EXPORT void SetLast(const Standard_Integer aLast) ; - - Standard_EXPORT Standard_Integer First() const; - - Standard_EXPORT Standard_Integer Last() const; - - Standard_EXPORT Standard_Boolean IsInRange(const Standard_Integer aIndex) const; - -protected: - Standard_Integer myFirst; - Standard_Integer myLast; -}; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_IndexedDataMapOfIntegerShape.hxx b/src/NMTDS_NEW/NMTDS_IndexedDataMapOfIntegerShape.hxx deleted file mode 100644 index a3e494189..000000000 --- a/src/NMTDS_NEW/NMTDS_IndexedDataMapOfIntegerShape.hxx +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_IndexedDataMapOfIntegerShape.hxx -// Created: Mon Feb 20 09:20:07 2012 -// Author: -// - - -#ifndef NMTDS_IndexedDataMapOfIntegerShape_HeaderFile -#define NMTDS_IndexedDataMapOfIntegerShape_HeaderFile - -#include -#include -#include - -#define _NCollection_MapHasher -#include - - -typedef NCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerShape; - -#undef _NCollection_MapHasher - - - -#endif diff --git a/src/NMTDS_NEW/NMTDS_IndexedDataMapOfShapeBndSphere.hxx b/src/NMTDS_NEW/NMTDS_IndexedDataMapOfShapeBndSphere.hxx deleted file mode 100644 index 259b5258a..000000000 --- a/src/NMTDS_NEW/NMTDS_IndexedDataMapOfShapeBndSphere.hxx +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_IndexedDataMapOfShapeBndSphere.hxx -// Created: Mon Feb 20 09:17:01 2012 -// Author: -// - - -#ifndef NMTDS_IndexedDataMapOfShapeBndSphere_HeaderFile -#define NMTDS_IndexedDataMapOfShapeBndSphere_HeaderFile - -#include -#include -#include - -#define _NCollection_MapHasher -#include - - - -typedef NCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBndSphere; - -#undef _NCollection_MapHasher - - - - -#endif diff --git a/src/NMTDS_NEW/NMTDS_IndexedDataMapOfShapeBox.hxx b/src/NMTDS_NEW/NMTDS_IndexedDataMapOfShapeBox.hxx deleted file mode 100644 index c659212fa..000000000 --- a/src/NMTDS_NEW/NMTDS_IndexedDataMapOfShapeBox.hxx +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_IndexedDataMapOfShapeBox.hxx -// Created: Mon Feb 20 09:17:01 2012 -// Author: -// - - -#ifndef NMTDS_IndexedDataMapOfShapeBox_HeaderFile -#define NMTDS_IndexedDataMapOfShapeBox_HeaderFile - -#include -#include -#include - -#define _NCollection_MapHasher -#include - - -typedef NCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBox; - -#undef _NCollection_MapHasher - - - - -#endif diff --git a/src/NMTDS_NEW/NMTDS_InterfPool.cxx b/src/NMTDS_NEW/NMTDS_InterfPool.cxx deleted file mode 100644 index ac930365c..000000000 --- a/src/NMTDS_NEW/NMTDS_InterfPool.cxx +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_InterfPool.cxx -// Author: Peter KURNEV - -#include - -#include -#include -#include -#include - -#include - -static - Standard_Integer TypeToInteger(const NMTDS_InterfType aType); - -//======================================================================= -//function : -//purpose : -//======================================================================= -NMTDS_InterfPool::NMTDS_InterfPool() -{ - myMaxInd=6; -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= - NMTDS_InterfPool::~NMTDS_InterfPool() -{ -} -//======================================================================= -//function : Add -//purpose : -//======================================================================= -Standard_Boolean NMTDS_InterfPool::Add (const NMTDS_PairBoolean& aPKB, - const NMTDS_InterfType aType) -{ - Standard_Boolean bRet; - Standard_Integer iType; - // - bRet=Standard_False; - // - iType=TypeToInteger(aType); - if (iType>-1 && iTypeClear(); - // - for (i=0; iAppend(aPKB); - } - } - return myList; -} -//======================================================================= -//function : Get -//purpose : -//======================================================================= -const NMTDS_ListOfPairBoolean& NMTDS_InterfPool::Get - (const Standard_Integer aInd)const -{ - Standard_Integer i, n1, n2; - NMTDS_ListOfPairBoolean* pL; - // - pL=(NMTDS_ListOfPairBoolean*)&myList; - pL->Clear(); - // - for (i=0; iAppend(aPKB); - } - } - } - return myList; -} -//======================================================================= -//function : Get -//purpose : -//======================================================================= -const NMTDS_ListOfPairBoolean& NMTDS_InterfPool::Get - (const NMTDS_InterfType aType)const -{ - Standard_Integer iType; - NMTDS_ListOfPairBoolean* pL; - // - pL=(NMTDS_ListOfPairBoolean*)&myList; - pL->Clear(); - // - iType=TypeToInteger(aType); - if (iType>-1 && iTypeAppend(aPKB); - } - } - return myList; -} -//======================================================================= -//function : Get -//purpose : -//======================================================================= -const NMTDS_ListOfPairBoolean& NMTDS_InterfPool::Get - (const Standard_Integer aInd, - const NMTDS_InterfType aType)const -{ - Standard_Integer n1, n2; - NMTDS_ListOfPairBoolean *pL, aLPKB; - NMTDS_ListIteratorOfListOfPairBoolean aIt; - // - aLPKB=Get(aType); - // - pL=(NMTDS_ListOfPairBoolean*)&myList; - pL->Clear(); - // - aIt.Initialize (aLPKB); - for (; aIt.More(); aIt.Next()) { - const NMTDS_PairBoolean& aPKB=aIt.Value(); - aPKB.Ids(n1, n2); - if(n1==aInd || n2==aInd) { - pL->Append(aPKB); - } - } - return myList; -} -//////////////////// -//=========================================================================== -//function : SSInterferences -//purpose : -//=========================================================================== -BOPTools_CArray1OfSSInterference& NMTDS_InterfPool::SSInterferences() -{ - return mySSInterferences; -} -//=========================================================================== -//function : ESInterferences -//purpose : -//=========================================================================== -BOPTools_CArray1OfESInterference& NMTDS_InterfPool::ESInterferences() -{ - return myESInterferences; -} -//=========================================================================== -//function : VSInterferences -//purpose : -//=========================================================================== -BOPTools_CArray1OfVSInterference& NMTDS_InterfPool::VSInterferences() -{ - return myVSInterferences; -} -//=========================================================================== -//function : EEInterferences -//purpose : -//=========================================================================== -BOPTools_CArray1OfEEInterference& NMTDS_InterfPool::EEInterferences() -{ - return myEEInterferences; -} -//=========================================================================== -//function : VEInterferences -//purpose : -//=========================================================================== -BOPTools_CArray1OfVEInterference& NMTDS_InterfPool::VEInterferences() -{ - return myVEInterferences; -} -//=========================================================================== -//function : VVInterferences -//purpose : -//=========================================================================== -BOPTools_CArray1OfVVInterference& NMTDS_InterfPool::VVInterferences() -{ - return myVVInterferences; -} - -//modified by NIZNHY-PKV Mon Dec 12 09:07:54 2011f -//======================================================================= -//function : Purge -//purpose : -//======================================================================= -void NMTDS_InterfPool::Purge() -{ -#if OCC_VERSION_LARGE > 0x06050200 - myVVInterferences.Purge(); - myVEInterferences.Purge(); - myEEInterferences.Purge(); - myVSInterferences.Purge(); - myESInterferences.Purge(); - mySSInterferences.Purge(); -#endif -} -//modified by NIZNHY-PKV Mon Dec 12 09:07:58 2011t - -//======================================================================= -//function : TypeToInteger -//purpose : -//======================================================================= -Standard_Integer TypeToInteger(const NMTDS_InterfType aType) -{ - return (Standard_Integer)aType; -} diff --git a/src/NMTDS_NEW/NMTDS_InterfPool.hxx b/src/NMTDS_NEW/NMTDS_InterfPool.hxx deleted file mode 100644 index 8e0ad399e..000000000 --- a/src/NMTDS_NEW/NMTDS_InterfPool.hxx +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// 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: NMTDS_InterfPool.hxx -// -// Author: Peter KURNEV - -#ifndef _NMTDS_InterfPool_HeaderFile -#define _NMTDS_InterfPool_HeaderFile - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//class : NMTDS_InterfPool -//purpose : -//======================================================================= -class NMTDS_InterfPool { - public: - Standard_EXPORT - NMTDS_InterfPool(); - Standard_EXPORT - virtual ~NMTDS_InterfPool(); - - Standard_EXPORT - Standard_Boolean Add(const NMTDS_PairBoolean& aPKB, - const NMTDS_InterfType aType) ; - - Standard_EXPORT - Standard_Boolean Add(const Standard_Integer aInd1, - const Standard_Integer aInd2, - const NMTDS_InterfType aType) ; - - Standard_EXPORT - Standard_Boolean Add(const Standard_Integer aInd1, - const Standard_Integer aInd2, - const Standard_Boolean bFlag, - const NMTDS_InterfType aType) ; - - Standard_EXPORT - Standard_Boolean Contains(const NMTDS_PairBoolean& aPKB) const; - - Standard_EXPORT - Standard_Boolean Contains(const Standard_Integer aInd1, - const Standard_Integer aInd2) const; - - Standard_EXPORT - const NMTDS_ListOfPairBoolean& Get() const; - - Standard_EXPORT - const NMTDS_ListOfPairBoolean& Get(const NMTDS_InterfType aType) const; - - Standard_EXPORT - const NMTDS_ListOfPairBoolean& Get(const Standard_Integer aInd) const; - - Standard_EXPORT - const NMTDS_ListOfPairBoolean& Get(const Standard_Integer aInd, - const NMTDS_InterfType aType) const; - - //! Returns the reference to array Of F/F interferences
        - Standard_EXPORT BOPTools_CArray1OfSSInterference& SSInterferences() ; - - //! Returns the reference to array Of E/F interferences
        - Standard_EXPORT BOPTools_CArray1OfESInterference& ESInterferences() ; - - //! Returns the reference to array Of V/F interferences
        - Standard_EXPORT BOPTools_CArray1OfVSInterference& VSInterferences() ; - - //! Returns the reference to arrray Of E/E interferences
        - Standard_EXPORT BOPTools_CArray1OfEEInterference& EEInterferences() ; - - //! Returns the reference to arrray Of V/E interferences
        - Standard_EXPORT BOPTools_CArray1OfVEInterference& VEInterferences() ; - - //! Returns the reference to arrray Of V/V interferences
        - Standard_EXPORT BOPTools_CArray1OfVVInterference& VVInterferences() ; - - Standard_EXPORT void Purge() ; - -protected: - NMTDS_MapOfPairBoolean myTable[6]; - NMTDS_ListOfPairBoolean myList; - Standard_Integer myMaxInd; - BOPTools_CArray1OfSSInterference mySSInterferences; - BOPTools_CArray1OfESInterference myESInterferences; - BOPTools_CArray1OfVSInterference myVSInterferences; - BOPTools_CArray1OfEEInterference myEEInterferences; - BOPTools_CArray1OfVEInterference myVEInterferences; - BOPTools_CArray1OfVVInterference myVVInterferences; - -private: -}; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_InterfType.hxx b/src/NMTDS_NEW/NMTDS_InterfType.hxx deleted file mode 100644 index 7f35b579f..000000000 --- a/src/NMTDS_NEW/NMTDS_InterfType.hxx +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_InterfType.hxx -// Created: -// Author: Peter KURNEV -// - - -#ifndef _NMTDS_InterfType_HeaderFile -#define _NMTDS_InterfType_HeaderFile - - -enum NMTDS_InterfType { -NMTDS_TI_VV, -NMTDS_TI_VE, -NMTDS_TI_VF, -NMTDS_TI_EE, -NMTDS_TI_EF, -NMTDS_TI_FF, -NMTDS_TI_UNKNOWN -}; - -#ifndef _Standard_PrimitiveTypes_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_Iterator.cxx b/src/NMTDS_NEW/NMTDS_Iterator.cxx deleted file mode 100644 index 44f452d82..000000000 --- a/src/NMTDS_NEW/NMTDS_Iterator.cxx +++ /dev/null @@ -1,467 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_Iterator.cxx -// Author: Peter KURNEV - -#include -// -#include -// -#include -#include -#include -#include -#include -#include -#include -#include -// -#include -#include -#include -// -#include -// -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : NMTDS_Iterator -//purpose : -//======================================================================= -NMTDS_Iterator::NMTDS_Iterator() -{ - myDS=NULL; - myLength=0; -} -//======================================================================= -//function : ~NMTDS_Iterator -//purpose : -//======================================================================= -NMTDS_Iterator::~NMTDS_Iterator() -{ -} -//======================================================================= -// function: SetDS -// purpose: -//======================================================================= -void NMTDS_Iterator::SetDS(const NMTDS_PShapesDataStructure& aDS) -{ - myDS=aDS; -} -//======================================================================= -// function: DS -// purpose: -//======================================================================= -const NMTDS_ShapesDataStructure& NMTDS_Iterator::DS()const -{ - return *myDS; -} -//======================================================================= -// function: ExpectedLength -// purpose: -//======================================================================= -Standard_Integer NMTDS_Iterator::ExpectedLength() const -{ - return myLength; -} -//======================================================================= -// function: BlockLength -// purpose: -//======================================================================= -Standard_Integer NMTDS_Iterator::BlockLength() const -{ - Standard_Integer aNbIIs, iTresh; - Standard_Real aCfPredict=.5; - - aNbIIs=ExpectedLength(); - - if (aNbIIs<=1) { - return 1; - } - //modified by NIZNHY-PKV Mon Dec 12 08:50:50 2011f - iTresh=1000; - if (aNbIIs>iTresh) { - aNbIIs=iTresh; - return aNbIIs; - } - //modified by NIZNHY-PKV Mon Dec 12 08:50:54 2011t - // - aNbIIs=(Standard_Integer) (aCfPredict*(Standard_Real)aNbIIs); - return aNbIIs; -} -//======================================================================= -// function: Initialize -// purpose: -//======================================================================= -void NMTDS_Iterator::Initialize(const TopAbs_ShapeEnum aType1, - const TopAbs_ShapeEnum aType2) -{ - Standard_Integer iX; - // - iX=NMTDS_Tools::TypeToInteger(aType1, aType2); - if (iX>=0) { - myIterator.Initialize(myLists[iX]); - myLength=myLists[iX].Extent(); - } - else { - myIterator.Initialize(myEmptyList); - myLength=0; - } -} -//======================================================================= -// function: More -// purpose: -//======================================================================= -Standard_Boolean NMTDS_Iterator::More()const -{ - return myIterator.More(); -} -//======================================================================= -// function: Next -// purpose: -//======================================================================= -void NMTDS_Iterator::Next() -{ - myIterator.Next(); -} -//======================================================================= -// function: Current -// purpose: -//======================================================================= -void NMTDS_Iterator::Current(Standard_Integer& aIndex1, - Standard_Integer& aIndex2, - Standard_Boolean& aWithSubShape) const -{ - const NMTDS_PairBoolean& aPKB=myIterator.Value(); - aPKB.Ids(aIndex1, aIndex2); - aWithSubShape=aPKB.Flag(); -} -//======================================================================= -// function: SDVertices -// purpose: -//======================================================================= -const TColStd_DataMapOfIntegerListOfInteger& NMTDS_Iterator::SDVertices()const -{ - return myMVSD; -} -//======================================================================= -// function: Prepare -// purpose: -//======================================================================= -void NMTDS_Iterator::Prepare() -{ - Standard_Integer i; - // - myLength=0; - for (i=0; i<6; ++i) { - myLists[i].Clear(); - } - myMVSD.Clear(); - // - if (myDS==NULL){ - return; - } - Intersect(); -} -//======================================================================= -// function: Intersect -// purpose: -//======================================================================= -void NMTDS_Iterator::Intersect() -{ - Standard_Boolean bFlag; - Standard_Integer aNb, i, aNbB, aNbR, iFlag; - Standard_Integer i1, i2, aNbSD, iX, j, iDS, jB, iR, k, aNbLV, aNbLV1; - TColStd_ListIteratorOfListOfInteger aIt; - TColStd_DataMapOfIntegerInteger aMII; - TColStd_DataMapOfIntegerListOfInteger aMVSD; - TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aItVSD; - TopTools_DataMapOfShapeInteger aMSI; - TopAbs_ShapeEnum aTi, aTj; - NMTDS_PairBoolean aPKXB; - NMTDS_MapOfPairBoolean aMPKXB; - NMTDS_IndexedDataMapOfShapeBox aMSB; - // - NMTDS_BoxBndTreeSelector aSelector; - NMTDS_BoxBndTree aBBTree; - NCollection_UBTreeFiller aTreeFiller(aBBTree); - // - const NMTDS_CArray1OfIndexRange& aRanges=myDS->Ranges(); - aNbR=aRanges.Extent(); - // - aNb=myDS->NumberOfShapesOfTheObject(); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aS=myDS->Shape(i); - aTi=aS.ShapeType(); - if (NMTDS_Tools::HasBRep(aTi)) { - Bnd_Box aBoxEx; - // - myDS->ComputeBoxEx(i, aBoxEx); - aMSI.Bind(aS, i); - aMSB.Add(aS, aBoxEx); - } - } - // - aNbB=aMSB.Extent(); - // - for (i=1; i<=aNbB; ++i) { - const TopoDS_Shape& aS=aMSB.FindKey(i); - const Bnd_Box& aBoxEx=aMSB(i); - // - aTreeFiller.Add(i, aBoxEx); - // - iDS=aMSI.Find(aS); - aMII.Bind(i, iDS); - } - // - aTreeFiller.Fill(); - // - for (iR=1; iRShape(i); - aTi=aSi.ShapeType(); - if (!NMTDS_Tools::HasBRep(aTi)){ - continue; - } - const Bnd_Box& aBoxEx=aMSB.FindFromKey(aSi); - aSelector.Clear(); - aSelector.SetBox(aBoxEx); - // - aNbSD=aBBTree.Select(aSelector); - // - if (!aNbSD){ - continue; - } - // - const TColStd_ListOfInteger& aLI=aSelector.Indices(); - // - k=0; - TColStd_ListOfInteger aLV; - // - aIt.Initialize(aLI); - for (; aIt.More(); aIt.Next()) { - jB=aIt.Value(); // box index in MII - j=aMII.Find(jB); // DS index - if (j>=i1 && j<=i2) { - continue;// same range - } - // - aPKXB.SetIds(i, j); - // - if (aMPKXB.Add(aPKXB)) { - bFlag=Standard_False;// Bounding boxes are intersected - const Bnd_Box& aBoxi=myDS->GetBoundingBox(i); - const Bnd_Box& aBoxj=myDS->GetBoundingBox(j); - if (aBoxi.IsOut(aBoxj)) { - bFlag=!bFlag; //Bounding boxes of Sub-shapes are intersected - } - const TopoDS_Shape& aSj=myDS->Shape(j); - aTj=aSj.ShapeType(); - iX=NMTDS_Tools::TypeToInteger(aTi, aTj); - //bFlag=(iStatus==2); - aPKXB.SetFlag(bFlag); - myLists[iX].Append(aPKXB); - // - // VSD prepare - if (iX==5) { //VV - aLV.Append(j); - } - }// if (aMPKXB.Add(aPKXB)) { - }// for (; aIt.More(); aIt.Next()) { - // - // VSD treatment - aNbLV=aLV.Extent(); - if (aNbLV) { - TColStd_ListOfInteger aLV1; - // - const TopoDS_Vertex& aVi=TopoDS::Vertex(aSi); - aIt.Initialize(aLV); - for (; aIt.More(); aIt.Next()) { - j=aIt.Value(); - const TopoDS_Shape& aSj=myDS->Shape(j); - const TopoDS_Vertex& aVj=TopoDS::Vertex(aSj); - iFlag=NMTDS_Tools::ComputeVV(aVi, aVj); - if (!iFlag) { - aLV1.Append(j); - } - else { - aPKXB.SetIds(i, j); - aMPKXB.Remove(aPKXB); - } - } - // - aNbLV1=aLV1.Extent(); - if (aNbLV1) { - aMVSD.Bind(i, aLV1); - } - } - }//for (i=i1; i<=i2; ++i) { - }//for (iR=1; iR -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//class : NMTDS_Iterator -//purpose : -//======================================================================= -class NMTDS_Iterator { - public: - Standard_EXPORT - NMTDS_Iterator(); - - Standard_EXPORT - virtual ~NMTDS_Iterator(); - - Standard_EXPORT - void SetDS(const NMTDS_PShapesDataStructure& pDS) ; - - Standard_EXPORT - const NMTDS_ShapesDataStructure& DS() const; - - Standard_EXPORT - void Initialize(const TopAbs_ShapeEnum aType1, - const TopAbs_ShapeEnum aType2) ; - - Standard_EXPORT - Standard_Boolean More() const; - - Standard_EXPORT - void Next() ; - - Standard_EXPORT - void Current(Standard_Integer& aIndex1, - Standard_Integer& aIndex2, - Standard_Boolean& aWithSubShape) const; - - Standard_EXPORT - virtual void Prepare() ; - - Standard_EXPORT - Standard_Integer ExpectedLength() const; - - Standard_EXPORT - Standard_Integer BlockLength() const; - - Standard_EXPORT - const TColStd_DataMapOfIntegerListOfInteger& SDVertices() const; - - Standard_EXPORT - static void FillMVSD(const TColStd_DataMapOfIntegerListOfInteger& aMVSD1, - TColStd_DataMapOfIntegerListOfInteger& aMVSD2) ; - -protected: - Standard_EXPORT - virtual void Intersect() ; - // - - NMTDS_PShapesDataStructure myDS; - NMTDS_ListOfPairBoolean myLists[6]; - NMTDS_ListIteratorOfListOfPairBoolean myIterator; - NMTDS_ListOfPairBoolean myEmptyList; - Standard_Integer myLength; - TColStd_DataMapOfIntegerListOfInteger myMVSD; -}; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_IteratorCheckerSI.cxx b/src/NMTDS_NEW/NMTDS_IteratorCheckerSI.cxx deleted file mode 100644 index 345f6194f..000000000 --- a/src/NMTDS_NEW/NMTDS_IteratorCheckerSI.cxx +++ /dev/null @@ -1,223 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_IteratorChecker.hxx -// Author: Peter KURNEV - -#include - -#include -#include -#include -// -#include -#include -#include -#include -// -#include -#include -#include -#include -#include -#include -#include -#include -// -#include -// -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : -//purpose : -//======================================================================= -NMTDS_IteratorCheckerSI::NMTDS_IteratorCheckerSI() -: - NMTDS_Iterator() -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -NMTDS_IteratorCheckerSI::~NMTDS_IteratorCheckerSI() -{ -} -//======================================================================= -// function: Intersect -// purpose: -//======================================================================= -void NMTDS_IteratorCheckerSI::Intersect() -{ - Standard_Boolean bFlag; - Standard_Integer aNbS, i, aNbA, aNbB, iFlag; - Standard_Integer aNbSD, iX, j, iDS, jB, k, aNbLV; - TColStd_ListIteratorOfListOfInteger aIt; - TColStd_DataMapOfIntegerInteger aMII; - TColStd_DataMapOfIntegerListOfInteger aMVSD; - TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aItVSD; - TopTools_DataMapOfShapeInteger aMSI; - TopAbs_ShapeEnum aTi, aTj; - NMTDS_PairBoolean aPKXB; - NMTDS_MapOfPairBoolean aMPKXB; - NMTDS_IndexedDataMapOfShapeBox aMSB; - NMTDS_MapOfPairBoolean aMPA;//myPairsAvoid - // - NMTDS_BoxBndTreeSelector aSelector; - NMTDS_BoxBndTree aBBTree; - NCollection_UBTreeFiller aTreeFiller(aBBTree); - // - aNbS=myDS->NumberOfShapesOfTheObject(); - // - // myPairsAvoid, aMSI, aMSB - for (i=1; i<=aNbS; ++i) { - const TopoDS_Shape& aSi=myDS->Shape(i); - aTi=aSi.ShapeType(); - if (NMTDS_Tools::HasBRep(aTi)) { - if (aTi!=TopAbs_VERTEX) { - TColStd_IndexedMapOfInteger aMA; - // - myDS->GetAllSuccessors(i, aMA); - // - aNbA=aMA.Extent(); - for (j=1; j<=aNbA; ++j) { - iX=aMA(j); - aPKXB.Clear(); - aPKXB.SetIds(i, iX); - aMPA.Add(aPKXB); - } - } - else { - aPKXB.Clear(); - aPKXB.SetIds(i, i); - aMPA.Add(aPKXB); - } - // - Bnd_Box aBoxEx; - // - myDS->ComputeBoxEx(i, aBoxEx); - aMSI.Bind(aSi, i); - aMSB.Add(aSi, aBoxEx); - } - } - // - // aMII - aNbB=aMSB.Extent(); - for (i=1; i<=aNbB; ++i) { - const TopoDS_Shape& aS=aMSB.FindKey(i); - const Bnd_Box& aBoxEx=aMSB(i); - // - aTreeFiller.Add(i, aBoxEx); - // - iDS=aMSI.Find(aS); - aMII.Bind(i, iDS); - } - // - aTreeFiller.Fill(); - // - for (i=1; i<=aNbS; ++i) { - const TopoDS_Shape& aSi=myDS->Shape(i); - aTi=aSi.ShapeType(); - if (!NMTDS_Tools::HasBRep(aTi)){ - continue; - } - const Bnd_Box& aBoxEx=aMSB.FindFromKey(aSi); - aSelector.Clear(); - aSelector.SetBox(aBoxEx); - // - aNbSD=aBBTree.Select(aSelector); - if (!aNbSD){ - continue; - } - // - const TColStd_ListOfInteger& aLI=aSelector.Indices(); - // - k=0; - TColStd_ListOfInteger aLV; - // - aIt.Initialize(aLI); - for (; aIt.More(); aIt.Next()) { - jB=aIt.Value(); // box index in MII - j=aMII.Find(jB); // DS index - // - aPKXB.SetIds(i, j); - if (aMPA.Contains(aPKXB)) { - continue; - } - // - if (aMPKXB.Add(aPKXB)) { - bFlag=Standard_False;// Bounding boxes are intersected - const Bnd_Box& aBoxi=myDS->GetBoundingBox(i); - const Bnd_Box& aBoxj=myDS->GetBoundingBox(j); - if (aBoxi.IsOut(aBoxj)) { - bFlag=!bFlag; //Bounding boxes of Sub-shapes are intersected - } - const TopoDS_Shape& aSj=myDS->Shape(j); - aTj=aSj.ShapeType(); - iX=NMTDS_Tools::TypeToInteger(aTi, aTj); - //bFlag=(iStatus==2); - aPKXB.SetFlag(bFlag); - myLists[iX].Append(aPKXB); - // - // VSD prepare - if (iX==5) { //VV - aLV.Append(j); - } - }// if (aMPKXB.Add(aPKXB)) { - }// for (; aIt.More(); aIt.Next()) { - // - // VSD treatment - aNbLV=aLV.Extent(); - if (aNbLV) { - TColStd_ListOfInteger aLV1; - // - const TopoDS_Vertex& aVi=TopoDS::Vertex(aSi); - aIt.Initialize(aLV); - for (; aIt.More(); aIt.Next()) { - j=aIt.Value(); - const TopoDS_Shape& aSj=myDS->Shape(j); - const TopoDS_Vertex& aVj=TopoDS::Vertex(aSj); - iFlag=NMTDS_Tools::ComputeVV(aVi, aVj); - if (!iFlag) { - aLV1.Append(j); - } - else { - aPKXB.SetIds(i, j); - aMPKXB.Remove(aPKXB); - } - } - aMVSD.Bind(i, aLV1); - } - }//for (i=1; i<=aNbS; ++i) { - // - // - // 2. Chains - //================= - myMVSD.Clear(); - NMTDS_Iterator::FillMVSD(aMVSD, myMVSD); -} - diff --git a/src/NMTDS_NEW/NMTDS_IteratorCheckerSI.hxx b/src/NMTDS_NEW/NMTDS_IteratorCheckerSI.hxx deleted file mode 100644 index 090e18bef..000000000 --- a/src/NMTDS_NEW/NMTDS_IteratorCheckerSI.hxx +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_IteratorChecker.cxx -// Author: Peter KURNEV - -#ifndef _NMTDS_IteratorCheckerSI_HeaderFile -#define _NMTDS_IteratorCheckerSI_HeaderFile - -#include -#include -#include - -//======================================================================= -//class : NMTDS_IteratorCheckerSI -//purpose : -//======================================================================= -class NMTDS_IteratorCheckerSI : public NMTDS_Iterator { - public: - - Standard_EXPORT - NMTDS_IteratorCheckerSI(); - Standard_EXPORT - virtual ~NMTDS_IteratorCheckerSI(); - -protected: - Standard_EXPORT - virtual void Intersect() ; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx deleted file mode 100644 index 183f0b5ea..000000000 --- a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#ifndef NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPair.hxx b/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPair.hxx deleted file mode 100644 index 589ffc38a..000000000 --- a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPair.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListIteratorOfListOfPair.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListIteratorOfListOfPair_HeaderFile -#define NMTDS_ListIteratorOfListOfPair_HeaderFile - -#ifndef NMTDS_ListOfPair_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPairBoolean.hxx b/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPairBoolean.hxx deleted file mode 100644 index d0b777299..000000000 --- a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPairBoolean.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListIteratorOfListOfPairBoolean.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListIteratorOfListOfPairBoolean_HeaderFile -#define NMTDS_ListIteratorOfListOfPairBoolean_HeaderFile - -#ifndef NMTDS_ListOfPairBoolean_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPassKey.hxx b/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPassKey.hxx deleted file mode 100644 index c84cf2a14..000000000 --- a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPassKey.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListIteratorOfListOfPassKey.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListIteratorOfListOfPassKey_HeaderFile -#define NMTDS_ListIteratorOfListOfPassKey_HeaderFile - -#ifndef NMTDS_ListOfPassKey_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx b/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx deleted file mode 100644 index 88785d58a..000000000 --- a/src/NMTDS_NEW/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile -#define NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile - -#ifndef NMTDS_ListOfPassKeyBoolean_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx b/src/NMTDS_NEW/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx deleted file mode 100644 index 06af1646a..000000000 --- a/src/NMTDS_NEW/NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile -#define NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors_HeaderFile - -#include -#include - -typedef NCollection_List NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors; -typedef NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors::Iterator NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListOfPair.hxx b/src/NMTDS_NEW/NMTDS_ListOfPair.hxx deleted file mode 100644 index 8eb271057..000000000 --- a/src/NMTDS_NEW/NMTDS_ListOfPair.hxx +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListOfPair.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListOfPair_HeaderFile -#define NMTDS_ListOfPair_HeaderFile - -#include -#include - -typedef NCollection_List NMTDS_ListOfPair; -typedef NMTDS_ListOfPair::Iterator NMTDS_ListIteratorOfListOfPair; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListOfPairBoolean.hxx b/src/NMTDS_NEW/NMTDS_ListOfPairBoolean.hxx deleted file mode 100644 index 30e021078..000000000 --- a/src/NMTDS_NEW/NMTDS_ListOfPairBoolean.hxx +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListOfPairBoolean.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListOfPairBoolean_HeaderFile -#define NMTDS_ListOfPairBoolean_HeaderFile - -#include -#include - -typedef NCollection_List NMTDS_ListOfPairBoolean; -typedef NMTDS_ListOfPairBoolean::Iterator NMTDS_ListIteratorOfListOfPairBoolean; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListOfPassKey.hxx b/src/NMTDS_NEW/NMTDS_ListOfPassKey.hxx deleted file mode 100644 index ceb30e996..000000000 --- a/src/NMTDS_NEW/NMTDS_ListOfPassKey.hxx +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListOfPassKey.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListOfPassKey_HeaderFile -#define NMTDS_ListOfPassKey_HeaderFile - -#include -#include - -typedef NCollection_List NMTDS_ListOfPassKey; -typedef NMTDS_ListOfPassKey::Iterator NMTDS_ListIteratorOfListOfPassKey; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_ListOfPassKeyBoolean.hxx b/src/NMTDS_NEW/NMTDS_ListOfPassKeyBoolean.hxx deleted file mode 100644 index 369db2149..000000000 --- a/src/NMTDS_NEW/NMTDS_ListOfPassKeyBoolean.hxx +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListOfPassKeyBoolean.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - - -#ifndef NMTDS_ListOfPassKeyBoolean_HeaderFile -#define NMTDS_ListOfPassKeyBoolean_HeaderFile - -#include -#include - -typedef NCollection_List NMTDS_ListOfPassKeyBoolean; -typedef NMTDS_ListOfPassKeyBoolean::Iterator NMTDS_ListIteratorOfListOfPassKeyBoolean; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPairBoolean.hxx b/src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPairBoolean.hxx deleted file mode 100644 index 45c6df295..000000000 --- a/src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPairBoolean.hxx +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_MapIteratorOfMapOfPairBoolean.hxx -// Created: Mon Feb 20 08:22:39 2012 -// Author: -// - - -#ifndef NMTDS_MapIteratorOfMapOfPairBoolean_HeaderFile -#define NMTDS_MapIteratorOfMapOfPairBoolean_HeaderFile - -#ifndef NMTDS_MapOfPairBoolean_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPassKey.hxx b/src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPassKey.hxx deleted file mode 100644 index cb2ec9454..000000000 --- a/src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPassKey.hxx +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (C) 2007-2011 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: NMRCol_MapIteratorOfMapOfPassKey.hxx -// Created: Mon Feb 20 08:22:39 2012 -// Author: -// - - -#ifndef NMRCol_MapIteratorOfMapOfPassKey_HeaderFile -#define NMRCol_MapIteratorOfMapOfPassKey_HeaderFile - -#ifndef NMTDS_MapOfPassKey_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx b/src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx deleted file mode 100644 index 8fc515ce6..000000000 --- a/src/NMTDS_NEW/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (C) 2007-2011 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: NMRCol_MapIteratorOfMapOfPassKeyBoolean.hxx -// Created: Mon Feb 20 08:22:39 2012 -// Author: -// - - -#ifndef NMRCol_MapIteratorOfMapOfPassKeyBoolean_HeaderFile -#define NMRCol_MapIteratorOfMapOfPassKeyBoolean_HeaderFile - -#ifndef NMTDS_MapOfPassKeyBoolean_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTDS_NEW/NMTDS_MapOfPairBoolean.hxx b/src/NMTDS_NEW/NMTDS_MapOfPairBoolean.hxx deleted file mode 100644 index af42e830c..000000000 --- a/src/NMTDS_NEW/NMTDS_MapOfPairBoolean.hxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_MapOfPairBoolean.hxx -// Created: Mon Feb 20 08:19:07 2012 -// Author: -// - - -#ifndef NMTDS_MapOfPairBoolean_HeaderFile -#define NMTDS_MapOfPairBoolean_HeaderFile - -#include -#include - -#define _NCollection_MapHasher -#include - -typedef NCollection_Map NMTDS_MapOfPairBoolean; -typedef NMTDS_MapOfPairBoolean::Iterator NMTDS_MapIteratorOfMapOfPairBoolean; - -#undef _NCollection_MapHasher - -#endif diff --git a/src/NMTDS_NEW/NMTDS_MapOfPassKey.hxx b/src/NMTDS_NEW/NMTDS_MapOfPassKey.hxx deleted file mode 100644 index 831568394..000000000 --- a/src/NMTDS_NEW/NMTDS_MapOfPassKey.hxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_MapOfPassKey.hxx -// Created: Mon Feb 20 08:19:07 2012 -// Author: -// - - -#ifndef NMTDS_MapOfPassKey_HeaderFile -#define NMTDS_MapOfPassKey_HeaderFile - -#include -#include - -#define _NCollection_MapHasher -#include - -typedef NCollection_Map NMTDS_MapOfPassKey; -typedef NMTDS_MapOfPassKey::Iterator NMTDS_MapIteratorOfMapOfPassKey; - -#undef _NCollection_MapHasher - -#endif diff --git a/src/NMTDS_NEW/NMTDS_MapOfPassKeyBoolean.hxx b/src/NMTDS_NEW/NMTDS_MapOfPassKeyBoolean.hxx deleted file mode 100644 index b07f2416e..000000000 --- a/src/NMTDS_NEW/NMTDS_MapOfPassKeyBoolean.hxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_MapOfPassKeyBoolean.hxx -// Created: Mon Feb 20 08:19:07 2012 -// Author: -// - - -#ifndef NMTDS_MapOfPassKeyBoolean_HeaderFile -#define NMTDS_MapOfPassKeyBoolean_HeaderFile - -#include -#include - -#define _NCollection_MapHasher -#include - -typedef NCollection_Map NMTDS_MapOfPassKeyBoolean; -typedef NMTDS_MapOfPassKeyBoolean::Iterator NMTDS_MapIteratorOfMapOfPassKeyBoolean; - -#undef _NCollection_MapHasher - -#endif diff --git a/src/NMTDS_NEW/NMTDS_PInterfPool.hxx b/src/NMTDS_NEW/NMTDS_PInterfPool.hxx deleted file mode 100644 index c9973ce47..000000000 --- a/src/NMTDS_NEW/NMTDS_PInterfPool.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_PInterfPool.hxx -// Author: Peter KURNEV - -#ifndef _NMTDS_PInterfPool_HeaderFile -#define _NMTDS_PInterfPool_HeaderFile - -class NMTDS_InterfPool; - -typedef NMTDS_InterfPool* NMTDS_PInterfPool; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_PIterator.hxx b/src/NMTDS_NEW/NMTDS_PIterator.hxx deleted file mode 100644 index 007ce188d..000000000 --- a/src/NMTDS_NEW/NMTDS_PIterator.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_PIterator.hxx -// Author: Peter KURNEV - -#ifndef _NMTDS_PIterator_HeaderFile -#define _NMTDS_PIterator_HeaderFile - -class NMTDS_Iterator; - -typedef NMTDS_Iterator* NMTDS_PIterator; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_PShapesDataStructure.hxx b/src/NMTDS_NEW/NMTDS_PShapesDataStructure.hxx deleted file mode 100644 index d38652121..000000000 --- a/src/NMTDS_NEW/NMTDS_PShapesDataStructure.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_PShapesDataStructure.hxx -// Author: Peter KURNEV - -#ifndef _NMTDS_PShapesDataStructure_HeaderFile -#define _NMTDS_PShapesDataStructure_HeaderFile - -class NMTDS_ShapesDataStructure; - -typedef NMTDS_ShapesDataStructure* NMTDS_PShapesDataStructure; - -#endif diff --git a/src/NMTDS_NEW/NMTDS_Pair.cxx b/src/NMTDS_NEW/NMTDS_Pair.cxx deleted file mode 100644 index 682bf1587..000000000 --- a/src/NMTDS_NEW/NMTDS_Pair.cxx +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_Pair.cxx -// Author: Peter KURNEV - -#include - -#include -#include -#include -#include - -#ifdef WNT -#pragma warning( disable : 4101) -#endif - -static - Standard_Integer NormalizedId(const Standard_Integer aId, - const Standard_Integer aDiv); - -//======================================================================= -//function : -//purpose : -//======================================================================= -NMTDS_Pair::NMTDS_Pair() -{ - Clear(); -} -//======================================================================= -//function : -//purpose : -//======================================================================= -NMTDS_Pair::NMTDS_Pair(const NMTDS_Pair& aOther) -{ - myId1=aOther.myId1; - myId2=aOther.myId2; -} -//======================================================================= -//function :operator = -//purpose : -//======================================================================= - NMTDS_Pair& NMTDS_Pair::operator =(const NMTDS_Pair& aOther) -{ - myId1=aOther.myId1; - myId2=aOther.myId2; - return *this; -} -//======================================================================= -//function :~ -//purpose : -//======================================================================= - NMTDS_Pair::~NMTDS_Pair() -{ -} -//======================================================================= -//function :Clear -//purpose : -//======================================================================= - void NMTDS_Pair::Clear() -{ - myId1=0; - myId2=0; -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void NMTDS_Pair::SetIds(const Standard_Integer aId1, - const Standard_Integer aId2) -{ - Clear(); - myId1=aId1; - myId2=aId2; - if (aId1>aId2) { - myId1=aId2; - myId2=aId1; - } -} -//======================================================================= -//function :Ids -//purpose : -//======================================================================= - void NMTDS_Pair::Ids(Standard_Integer& aId1, - Standard_Integer& aId2) const -{ - aId1=myId1; - aId2=myId2; -} -//======================================================================= -//function :IsEqual -//purpose : -//======================================================================= - Standard_Boolean NMTDS_Pair::IsEqual(const NMTDS_Pair& aOther) const -{ - - Standard_Boolean bRet; - // - bRet=(myId1==aOther.myId1 && myId2==aOther.myId2);//ZZ - return bRet; -} -//======================================================================= -//function : HashCode -//purpose : -//======================================================================= - Standard_Integer NMTDS_Pair::HashCode(const Standard_Integer aUpper) const -{ - Standard_Integer aSum; - // - aSum=0; - aSum+=NormalizedId(myId1, 2); - aSum+=NormalizedId(myId2, 2); - return ::HashCode(aSum, aUpper); -} -//======================================================================= -// function: NormalizedId -// purpose : -//======================================================================= -Standard_Integer NormalizedId(const Standard_Integer aId, - const Standard_Integer aDiv) -{ - Standard_Integer aMax, aTresh, aIdRet; - // - aIdRet=aId; - aMax=::IntegerLast(); - aTresh=aMax/aDiv; - if (aId>aTresh) { - aIdRet=aId%aTresh; - } - return aIdRet; -} diff --git a/src/NMTDS_NEW/NMTDS_Pair.hxx b/src/NMTDS_NEW/NMTDS_Pair.hxx deleted file mode 100644 index 4d64b1e48..000000000 --- a/src/NMTDS_NEW/NMTDS_Pair.hxx +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_Pair.hxx -// Author: Peter KURNEV - -#ifndef _NMTDS_Pair_HeaderFile -#define _NMTDS_Pair_HeaderFile - -#include -#include -#include -#include - -//======================================================================= -//function : NMTDS_Pair -//purpose : -//======================================================================= -class NMTDS_Pair { - public: - Standard_EXPORT - NMTDS_Pair(); - - Standard_EXPORT - virtual ~NMTDS_Pair(); - - Standard_EXPORT - NMTDS_Pair(const NMTDS_Pair& Other); - - Standard_EXPORT - NMTDS_Pair& operator =(const NMTDS_Pair& Other); - - Standard_EXPORT - void Clear() ; - - Standard_EXPORT - void SetIds(const Standard_Integer aI1, - const Standard_Integer aI2) ; - - Standard_EXPORT - void Ids(Standard_Integer& aI1, - Standard_Integer& aI2) const; - - Standard_EXPORT - Standard_Boolean IsEqual(const NMTDS_Pair& aOther) const; - - Standard_EXPORT - Standard_Integer HashCode(const Standard_Integer Upper) const; - -protected: -Standard_Integer myId1; -Standard_Integer myId2; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_PairBoolean.cxx b/src/NMTDS_NEW/NMTDS_PairBoolean.cxx deleted file mode 100644 index 4a7a38f8c..000000000 --- a/src/NMTDS_NEW/NMTDS_PairBoolean.cxx +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_PairBoolean.cxx -// Author: Peter KURNEV - -#include - -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTDS_PairBoolean::NMTDS_PairBoolean() -: - myFlag(Standard_False), - NMTDS_Pair() -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= - NMTDS_PairBoolean::~NMTDS_PairBoolean() -{ -} -//======================================================================= -//function :operator = -//purpose : -//======================================================================= - NMTDS_PairBoolean& NMTDS_PairBoolean::operator =(const NMTDS_PairBoolean& anOther) -{ - myFlag=anOther.myFlag; - NMTDS_Pair::operator =(anOther); - return *this; -} -//======================================================================= -//function :SetFlag -//purpose : -//======================================================================= - void NMTDS_PairBoolean::SetFlag(const Standard_Boolean aFlag) -{ - myFlag=aFlag; -} -//======================================================================= -//function :Flag -//purpose : -//======================================================================= - Standard_Boolean NMTDS_PairBoolean::Flag()const -{ - return myFlag; -} diff --git a/src/NMTDS_NEW/NMTDS_PairBoolean.hxx b/src/NMTDS_NEW/NMTDS_PairBoolean.hxx deleted file mode 100644 index a469b923e..000000000 --- a/src/NMTDS_NEW/NMTDS_PairBoolean.hxx +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_PairBoolean.hxx -// Author: Peter KURNEV - -#ifndef _NMTDS_PairBoolean_HeaderFile -#define _NMTDS_PairBoolean_HeaderFile - -#include -#include -#include -#include - -//======================================================================= -//class : NMTDS_PairBoolean -//purpose : -//======================================================================= -class NMTDS_PairBoolean : public NMTDS_Pair { - public: - Standard_EXPORT - NMTDS_PairBoolean(); - - Standard_EXPORT - virtual ~NMTDS_PairBoolean(); - - Standard_EXPORT - void SetFlag(const Standard_Boolean aFlag) ; - - Standard_EXPORT - NMTDS_PairBoolean& operator =(const NMTDS_PairBoolean& Other); - - Standard_EXPORT - Standard_Boolean Flag() const; - -protected: - Standard_Boolean myFlag; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_PairMapHasher.cxx b/src/NMTDS_NEW/NMTDS_PairMapHasher.cxx deleted file mode 100644 index b07202822..000000000 --- a/src/NMTDS_NEW/NMTDS_PairMapHasher.cxx +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_PairMapHasher.cxx -// Author: Peter KURNEV - -#include - -//======================================================================= -//function : HashCode -//purpose : -//======================================================================= -Standard_Integer NMTDS_PairMapHasher::HashCode(const NMTDS_Pair& aPK, - const Standard_Integer Upper) -{ - return aPK.HashCode(Upper); -} -//======================================================================= -//function :IsEqual -//purpose : -//======================================================================= -Standard_Boolean NMTDS_PairMapHasher::IsEqual(const NMTDS_Pair& aPK1, - const NMTDS_Pair& aPK2) -{ - return aPK1.IsEqual(aPK2); -} diff --git a/src/NMTDS_NEW/NMTDS_PairMapHasher.hxx b/src/NMTDS_NEW/NMTDS_PairMapHasher.hxx deleted file mode 100644 index 65c8796f6..000000000 --- a/src/NMTDS_NEW/NMTDS_PairMapHasher.hxx +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_PairMapHasher.cxx -// Author: Peter KURNEV - -#ifndef _NMTDS_PairMapHasher_HeaderFile -#define _NMTDS_PairMapHasher_HeaderFile - -#include -#include -#include -#include -#include - -//======================================================================= -//class : NMTDS_PairMapHasher -//purpose : -//======================================================================= -class NMTDS_PairMapHasher { - public: - Standard_EXPORT - static Standard_Integer HashCode(const NMTDS_Pair& aPKey, - const Standard_Integer Upper) ; - - Standard_EXPORT - static Standard_Boolean IsEqual(const NMTDS_Pair& aPKey1, - const NMTDS_Pair& aPKey2) ; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_PassKey.cxx b/src/NMTDS_NEW/NMTDS_PassKey.cxx deleted file mode 100644 index 9f7663696..000000000 --- a/src/NMTDS_NEW/NMTDS_PassKey.cxx +++ /dev/null @@ -1,362 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTDS_PassKey.cxx -// Created: -// Author: Peter KURNEV -// -// -#include - -#include -#include -#include -#include - -#ifdef WNT -#pragma warning( disable : 4101) -#endif - -static - Standard_Integer NormalizedId(const Standard_Integer aId, - const Standard_Integer aDiv); - -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTDS_PassKey::NMTDS_PassKey() -{ - Clear(); -} -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTDS_PassKey::NMTDS_PassKey(const NMTDS_PassKey& aOther) -{ - myNbIds=aOther.myNbIds; - mySum=aOther.mySum; - myMap=aOther.myMap; -} -//======================================================================= -//function :operator = -//purpose : -//======================================================================= - NMTDS_PassKey& NMTDS_PassKey::operator =(const NMTDS_PassKey& aOther) -{ - myNbIds=aOther.myNbIds; - mySum=aOther.mySum; - myMap=aOther.myMap; - return *this; -} -//======================================================================= -//function :~ -//purpose : -//======================================================================= - NMTDS_PassKey::~NMTDS_PassKey() -{ -} -//======================================================================= -//function :Clear -//purpose : -//======================================================================= - void NMTDS_PassKey::Clear() -{ - myNbIds=0; - mySum=0; - myMap.Clear(); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void NMTDS_PassKey::SetIds(const Standard_Integer aId1) - -{ - Clear(); - myNbIds=1; - myMap.Add(aId1); - mySum=NormalizedId(aId1, myNbIds); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void NMTDS_PassKey::SetIds(const Standard_Integer aId1, - const Standard_Integer aId2) -{ - TColStd_ListOfInteger aLI; - // - aLI.Append(aId1); - aLI.Append(aId2); - SetIds(aLI); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void NMTDS_PassKey::SetIds(const Standard_Integer aId1, - const Standard_Integer aId2, - const Standard_Integer aId3) -{ - TColStd_ListOfInteger aLI; - // - aLI.Append(aId1); - aLI.Append(aId2); - aLI.Append(aId3); - SetIds(aLI); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void NMTDS_PassKey::SetIds(const Standard_Integer aId1, - const Standard_Integer aId2, - const Standard_Integer aId3, - const Standard_Integer aId4) -{ - TColStd_ListOfInteger aLI; - // - aLI.Append(aId1); - aLI.Append(aId2); - aLI.Append(aId3); - aLI.Append(aId4); - SetIds(aLI); -} -//======================================================================= -//function :SetIds -//purpose : -//======================================================================= - void NMTDS_PassKey::SetIds(const TColStd_ListOfInteger& aLI) -{ - Standard_Integer i, aId, aIdN; - TColStd_ListIteratorOfListOfInteger aIt; - // - Clear(); - aIt.Initialize(aLI); - for (; aIt.More(); aIt.Next()) { - aId=aIt.Value(); - myMap.Add(aId); - } - myNbIds=myMap.Extent(); - for(i=1; i<=myNbIds; ++i) { - aId=myMap(i); - aIdN=NormalizedId(aId, myNbIds); - mySum+=aIdN; - } -} - -//======================================================================= -//function :NbIds -//purpose : -//======================================================================= - Standard_Integer NMTDS_PassKey::NbIds()const -{ - return myNbIds; -} -//======================================================================= -//function :Id -//purpose : -//======================================================================= - Standard_Integer NMTDS_PassKey::Id(const Standard_Integer aIndex) const -{ - if (aIndex<1 || aIndex>myNbIds) { - return -1; - } - return myMap(aIndex); -} -//======================================================================= -//function :Ids -//purpose : -//======================================================================= - void NMTDS_PassKey::Ids(Standard_Integer& aId1, - Standard_Integer& aId2) const -{ - aId1=0; - aId2=0; - if (myNbIds>1) { - aId1=myMap(1); - aId2=myMap(2); - } -} -//======================================================================= -//function :IsEqual -//purpose : -//======================================================================= - Standard_Boolean NMTDS_PassKey::IsEqual(const NMTDS_PassKey& aOther) const -{ - Standard_Boolean bRet; - Standard_Integer i, aId; - // - bRet=Standard_False; - // - if (myNbIds!=aOther.myNbIds) { - return bRet; - } - for (i=1; i<=myNbIds; ++i) { - aId=myMap(i); - if (!aOther.myMap.Contains(aId)) { - return bRet; - } - } - return !bRet; -} -//======================================================================= -//function : HashCode -//purpose : -//======================================================================= - Standard_Integer NMTDS_PassKey::HashCode(const Standard_Integer aUpper) const -{ - return ::HashCode(mySum, aUpper); -} -//======================================================================= -//function : Dump -//purpose : -//======================================================================= - void NMTDS_PassKey::Dump(const Standard_Integer )const -{ -} - -//======================================================================= -// function: NormalizedId -// purpose : -//======================================================================= -Standard_Integer NormalizedId(const Standard_Integer aId, - const Standard_Integer aDiv) -{ - Standard_Integer aMax, aTresh, aIdRet; - // - aIdRet=aId; - aMax=::IntegerLast(); - aTresh=aMax/aDiv; - if (aId>aTresh) { - aIdRet=aId%aTresh; - } - return aIdRet; -} -/* -//========= -//======================================================================= -//function : Contains -//purpose : -//======================================================================= - Standard_Boolean NMTDS_PassKey::Contains(const Standard_Integer aId) const -{ - return myMap.Contains(aId); -} -//======================================================================= -//function :Contains -//purpose : -//======================================================================= - Standard_Boolean NMTDS_PassKey::Contains(const NMTDS_PassKey& aOther) const -{ - Standard_Boolean bRet; - Standard_Integer i, aId; - // - bRet=Standard_False; - // - if (myNbIds -// -#ifndef _NMTDS_PassKey_HeaderFile -#define _NMTDS_PassKey_HeaderFile - -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : NMTDS_PassKey -//purpose : -//======================================================================= -class NMTDS_PassKey { - public: - Standard_EXPORT - NMTDS_PassKey(); - - Standard_EXPORT - virtual ~NMTDS_PassKey(); - - Standard_EXPORT - NMTDS_PassKey(const NMTDS_PassKey& Other); - - Standard_EXPORT - NMTDS_PassKey& operator =(const NMTDS_PassKey& Other); - - Standard_EXPORT - void Clear() ; - - Standard_EXPORT - void SetIds(const Standard_Integer aI1) ; - - Standard_EXPORT - void SetIds(const Standard_Integer aI1, - const Standard_Integer aI2) ; - - Standard_EXPORT - void SetIds(const Standard_Integer aI1, - const Standard_Integer aI2, - const Standard_Integer aI3) ; - - Standard_EXPORT - void SetIds(const Standard_Integer aI1, - const Standard_Integer aI2, - const Standard_Integer aI3, - const Standard_Integer aI4) ; - - Standard_EXPORT - void SetIds(const TColStd_ListOfInteger& aLS) ; - - Standard_EXPORT - Standard_Integer NbIds() const; - - Standard_EXPORT - Standard_Boolean IsEqual(const NMTDS_PassKey& aOther) const; - - Standard_EXPORT - Standard_Integer HashCode(const Standard_Integer Upper) const; - - Standard_EXPORT - Standard_Integer Id(const Standard_Integer aIndex) const; - - Standard_EXPORT - void Ids(Standard_Integer& aI1,Standard_Integer& aI2) const; - - Standard_EXPORT - void Dump(const Standard_Integer aHex = 0) const; - -protected: - Standard_Integer myNbIds; - Standard_Integer mySum; - TColStd_IndexedMapOfInteger myMap; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_PassKeyBoolean.cxx b/src/NMTDS_NEW/NMTDS_PassKeyBoolean.cxx deleted file mode 100644 index af9ae8c5e..000000000 --- a/src/NMTDS_NEW/NMTDS_PassKeyBoolean.cxx +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTDS_PassKeyBoolean.cxx -// Created: Mon May 15 14:31:05 2006 -// Author: Peter KURNEV -// -// -#include - -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTDS_PassKeyBoolean::NMTDS_PassKeyBoolean() -: - myFlag(Standard_False), - NMTDS_PassKey() -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= - NMTDS_PassKeyBoolean::~NMTDS_PassKeyBoolean() -{ -} -//======================================================================= -//function :operator = -//purpose : -//======================================================================= - NMTDS_PassKeyBoolean& NMTDS_PassKeyBoolean::operator =(const NMTDS_PassKeyBoolean& anOther) -{ - myFlag=anOther.myFlag; - NMTDS_PassKey::operator =(anOther); - return *this; -} -//======================================================================= -//function :SetFlag -//purpose : -//======================================================================= - void NMTDS_PassKeyBoolean::SetFlag(const Standard_Boolean aFlag) -{ - myFlag=aFlag; -} -//======================================================================= -//function :Flag -//purpose : -//======================================================================= - Standard_Boolean NMTDS_PassKeyBoolean::Flag()const -{ - return myFlag; -} diff --git a/src/NMTDS_NEW/NMTDS_PassKeyBoolean.hxx b/src/NMTDS_NEW/NMTDS_PassKeyBoolean.hxx deleted file mode 100644 index 1e46bf20f..000000000 --- a/src/NMTDS_NEW/NMTDS_PassKeyBoolean.hxx +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTDS_PassKeyBoolean.hxx -// Created: -// Author: Peter KURNEV -// -// -#ifndef _NMTDS_PassKeyBoolean_HeaderFile -#define _NMTDS_PassKeyBoolean_HeaderFile - -#include -#include -#include -#include - -//======================================================================= -//class : NMTDS_PassKeyBoolean -//purpose : -//======================================================================= -class NMTDS_PassKeyBoolean : public NMTDS_PassKey { - public: - Standard_EXPORT - NMTDS_PassKeyBoolean(); - - Standard_EXPORT - virtual ~NMTDS_PassKeyBoolean(); - - Standard_EXPORT - void SetFlag(const Standard_Boolean aFlag) ; - - Standard_EXPORT - NMTDS_PassKeyBoolean& operator =(const NMTDS_PassKeyBoolean& Other); - - Standard_EXPORT - Standard_Boolean Flag() const; - - protected: - Standard_Boolean myFlag; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_PassKeyMapHasher.cxx b/src/NMTDS_NEW/NMTDS_PassKeyMapHasher.cxx deleted file mode 100644 index a77d8fa34..000000000 --- a/src/NMTDS_NEW/NMTDS_PassKeyMapHasher.cxx +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTDS_PassKeyMapHasher.cxx -// Created: -// Author: Peter KURNEV -// -// -#include - -//======================================================================= -//function : HashCode -//purpose : -//======================================================================= - Standard_Integer NMTDS_PassKeyMapHasher::HashCode(const NMTDS_PassKey& aPK, - const Standard_Integer Upper) -{ - return aPK.HashCode(Upper); -} -//======================================================================= -//function :IsEqual -//purpose : -//======================================================================= - Standard_Boolean NMTDS_PassKeyMapHasher::IsEqual(const NMTDS_PassKey& aPK1, - const NMTDS_PassKey& aPK2) -{ - return aPK1.IsEqual(aPK2); -} diff --git a/src/NMTDS_NEW/NMTDS_PassKeyMapHasher.hxx b/src/NMTDS_NEW/NMTDS_PassKeyMapHasher.hxx deleted file mode 100644 index f26688d1a..000000000 --- a/src/NMTDS_NEW/NMTDS_PassKeyMapHasher.hxx +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTDS_PassKeyMapHasher.hxx -// Created: -// Author: Peter KURNEV -// -// -#ifndef _NMTDS_PassKeyMapHasher_HeaderFile -#define _NMTDS_PassKeyMapHasher_HeaderFile - -#include -#include -#include -#include -#include - - -//======================================================================= -//function : NMTDS_PassKeyMapHasher -//purpose : -//======================================================================= -class NMTDS_PassKeyMapHasher { - public: - Standard_EXPORT - static Standard_Integer HashCode(const NMTDS_PassKey& aPKey, - const Standard_Integer Upper) ; - - Standard_EXPORT - static Standard_Boolean IsEqual(const NMTDS_PassKey& aPKey1, - const NMTDS_PassKey& aPKey2) ; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_PassKeyShape.cxx b/src/NMTDS_NEW/NMTDS_PassKeyShape.cxx deleted file mode 100644 index 87ae5d764..000000000 --- a/src/NMTDS_NEW/NMTDS_PassKeyShape.cxx +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_PassKeyShape.cxx -// Created: -// Author: Peter KURNEV -// -// -#include - -#include -#include -#include - - -static - Standard_Integer NormalizedId(const Standard_Integer aId, - const Standard_Integer aDiv); -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTDS_PassKeyShape::NMTDS_PassKeyShape() -{ - myUpper=432123; -} -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTDS_PassKeyShape::NMTDS_PassKeyShape(const NMTDS_PassKeyShape& aOther) -{ - myUpper=432123; - myNbIds=aOther.myNbIds; - mySum=aOther.mySum; - myMap=aOther.myMap; -} -//======================================================================= -//function :~ -//purpose : -//======================================================================= - NMTDS_PassKeyShape::~NMTDS_PassKeyShape() -{ -} -//======================================================================= -//function :Assign -//purpose : -//======================================================================= - NMTDS_PassKeyShape& NMTDS_PassKeyShape::Assign(const NMTDS_PassKeyShape& aOther) -{ - myUpper=432123; - myNbIds=aOther.myNbIds; - mySum=aOther.mySum; - myMap=aOther.myMap; - return *this; -} -//======================================================================= -//function :Clear -//purpose : -//======================================================================= - void NMTDS_PassKeyShape::Clear() -{ - myNbIds=0; - mySum=0; - myMap.Clear(); -} -//======================================================================= -//function :SetShapes -//purpose : -//======================================================================= - void NMTDS_PassKeyShape::SetShapes(const TopoDS_Shape& aS1) - -{ - Standard_Integer aHC; - // - Clear(); - myNbIds=1; - myMap.Add(aS1); - aHC=aS1.HashCode(myUpper); - mySum=NormalizedId(aHC, myNbIds); -} -//======================================================================= -//function :SetShapes -//purpose : -//======================================================================= - void NMTDS_PassKeyShape::SetShapes(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2) -{ - TopTools_ListOfShape aLS; - // - aLS.Append(aS1); - aLS.Append(aS2); - SetShapes(aLS); -} -//======================================================================= -//function :SetShapes -//purpose : -//======================================================================= - void NMTDS_PassKeyShape::SetShapes(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2, - const TopoDS_Shape& aS3) -{ - TopTools_ListOfShape aLS; - // - aLS.Append(aS1); - aLS.Append(aS2); - aLS.Append(aS3); - SetShapes(aLS); -} -//======================================================================= -//function :SetShapes -//purpose : -//======================================================================= - void NMTDS_PassKeyShape::SetShapes(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2, - const TopoDS_Shape& aS3, - const TopoDS_Shape& aS4) -{ - TopTools_ListOfShape aLS; - // - aLS.Append(aS1); - aLS.Append(aS2); - aLS.Append(aS3); - aLS.Append(aS4); - SetShapes(aLS); -} -//======================================================================= -//function :SetShapes -//purpose : -//======================================================================= - void NMTDS_PassKeyShape::SetShapes(const TopTools_ListOfShape& aLS) -{ - Standard_Integer i, aId, aIdN; - TopTools_ListIteratorOfListOfShape aIt; - // - Clear(); - aIt.Initialize(aLS); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aS=aIt.Value(); - myMap.Add(aS); - } - myNbIds=myMap.Extent(); - for(i=1; i<=myNbIds; ++i) { - const TopoDS_Shape& aS=myMap(i); - aId=aS.HashCode(myUpper); - aIdN=NormalizedId(aId, myNbIds); - mySum+=aIdN; - } -} -//======================================================================= -//function :NbIds -//purpose : -//======================================================================= - Standard_Integer NMTDS_PassKeyShape::NbIds()const -{ - return myNbIds; -} -//======================================================================= -//function :IsEqual -//purpose : -//======================================================================= - Standard_Boolean NMTDS_PassKeyShape::IsEqual(const NMTDS_PassKeyShape& aOther) const -{ - Standard_Boolean bRet; - Standard_Integer i; - // - bRet=Standard_False; - // - if (myNbIds!=aOther.myNbIds) { - return bRet; - } - for (i=1; i<=myNbIds; ++i) { - const TopoDS_Shape& aS=myMap(i); - if (!aOther.myMap.Contains(aS)) { - return bRet; - } - } - return !bRet; -} -//======================================================================= -//function : HashCode -//purpose : -//======================================================================= - Standard_Integer NMTDS_PassKeyShape::HashCode(const Standard_Integer aUpper) const -{ - return ::HashCode(mySum, aUpper); -} -//======================================================================= -//function : Dump -//purpose : -//======================================================================= - void NMTDS_PassKeyShape::Dump(const Standard_Integer)const -{ -} -//======================================================================= -// function: NormalizedId -// purpose : -//======================================================================= -Standard_Integer NormalizedId(const Standard_Integer aId, - const Standard_Integer aDiv) -{ - Standard_Integer aMax, aTresh, aIdRet; - // - aIdRet=aId; - aMax=::IntegerLast(); - aTresh=aMax/aDiv; - if (aId>aTresh) { - aIdRet=aId%aTresh; - } - return aIdRet; -} diff --git a/src/NMTDS_NEW/NMTDS_PassKeyShape.hxx b/src/NMTDS_NEW/NMTDS_PassKeyShape.hxx deleted file mode 100644 index e77c56656..000000000 --- a/src/NMTDS_NEW/NMTDS_PassKeyShape.hxx +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_PassKeyShape.hxx -// Created: -// Author: Peter KURNEV -// -// -#ifndef _NMTDS_PassKeyShape_HeaderFile -#define _NMTDS_PassKeyShape_HeaderFile - -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : NMTDS_PassKeyShape -//purpose : -//======================================================================= -class NMTDS_PassKeyShape { - public: - Standard_EXPORT - NMTDS_PassKeyShape(); - - Standard_EXPORT - virtual ~NMTDS_PassKeyShape(); - - Standard_EXPORT - NMTDS_PassKeyShape(const NMTDS_PassKeyShape& Other); - - Standard_EXPORT - NMTDS_PassKeyShape& Assign(const NMTDS_PassKeyShape& Other) ; - - NMTDS_PassKeyShape& operator =(const NMTDS_PassKeyShape& Other) { - return Assign(Other); - } - - Standard_EXPORT - void SetShapes(const TopoDS_Shape& aS) ; - - Standard_EXPORT - void SetShapes(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2) ; - - Standard_EXPORT - void SetShapes(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2, - const TopoDS_Shape& aS3) ; - - Standard_EXPORT - void SetShapes(const TopoDS_Shape& aS1, - const TopoDS_Shape& aS2, - const TopoDS_Shape& aS3, - const TopoDS_Shape& aS4) ; - - Standard_EXPORT - void SetShapes(const TopTools_ListOfShape& aLS) ; - - Standard_EXPORT - void Clear() ; - - Standard_EXPORT - Standard_Integer NbIds() const; - - Standard_EXPORT - Standard_Boolean IsEqual(const NMTDS_PassKeyShape& aOther) const; - - Standard_EXPORT - Standard_Integer HashCode(const Standard_Integer Upper) const; - - Standard_EXPORT - void Dump(const Standard_Integer aHex = 0) const; - - protected: - Standard_Integer myNbIds; - Standard_Integer mySum; - Standard_Integer myUpper; - TopTools_IndexedMapOfShape myMap; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.cxx b/src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.cxx deleted file mode 100644 index 7f43ed16a..000000000 --- a/src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.cxx +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_PassKeyMapHasher.cxx -// Created: -// Author: Peter KURNEV -// -// -#include - -//======================================================================= -//function : HashCode -//purpose : -//======================================================================= - Standard_Integer NMTDS_PassKeyShapeMapHasher::HashCode(const NMTDS_PassKeyShape& aPK, - const Standard_Integer Upper) -{ - return aPK.HashCode(Upper); -} -//======================================================================= -//function :IsEqual -//purpose : -//======================================================================= - Standard_Boolean NMTDS_PassKeyShapeMapHasher::IsEqual(const NMTDS_PassKeyShape& aPK1, - const NMTDS_PassKeyShape& aPK2) -{ - return aPK1.IsEqual(aPK2); -} diff --git a/src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.hxx b/src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.hxx deleted file mode 100644 index e4b600e78..000000000 --- a/src/NMTDS_NEW/NMTDS_PassKeyShapeMapHasher.hxx +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_PassKeyMapHasher.cxx -// Created: -// Author: Peter KURNEV -// -// -#ifndef _NMTDS_PassKeyShapeMapHasher_HeaderFile -#define _NMTDS_PassKeyShapeMapHasher_HeaderFile - -#include -#include -#include -#include -#include - -//======================================================================= -//function : NMTDS_PassKeyShapeMapHasher -//purpose : -//======================================================================= -class NMTDS_PassKeyShapeMapHasher { - public: - Standard_EXPORT - static Standard_Integer HashCode(const NMTDS_PassKeyShape& aPKey, - const Standard_Integer Upper) ; - - Standard_EXPORT - static Standard_Boolean IsEqual(const NMTDS_PassKeyShape& aPKey1, - const NMTDS_PassKeyShape& aPKey2) ; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_ShapesDataStructure.cxx b/src/NMTDS_NEW/NMTDS_ShapesDataStructure.cxx deleted file mode 100644 index c6e9d4ece..000000000 --- a/src/NMTDS_NEW/NMTDS_ShapesDataStructure.cxx +++ /dev/null @@ -1,389 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTDS_ShapesDataStructure.cxx -// Author: Peter KURNEV - -#include -#include -#include -#include -#include -#include -#include -#include -// -#include -#include -#include -#include - - -static - void ComputeBoxExS(const Standard_Integer aIx, - const NMTDS_ShapesDataStructure* pDS, - Bnd_Box& aBoxEx); -static - void GetAllSuccessorsS(const Standard_Integer nS, - const NMTDS_ShapesDataStructure* myDS, - TColStd_IndexedMapOfInteger& aMA); - -//=========================================================================== -//function : NMTDS_ShapesDataStructure::NMTDS_ShapesDataStructure -//purpose : -//=========================================================================== -NMTDS_ShapesDataStructure::NMTDS_ShapesDataStructure() -: - BooleanOperations_ShapesDataStructure() -{} -//=========================================================================== -//function : SetCompositeShape -//purpose : -//=========================================================================== -void NMTDS_ShapesDataStructure::SetCompositeShape(const TopoDS_Shape& aS) -{ - myCompositeShape=aS; -} -//=========================================================================== -//function : CompositeShape -//purpose : -//=========================================================================== -const TopoDS_Shape& NMTDS_ShapesDataStructure::CompositeShape()const -{ - return myCompositeShape; -} -//=========================================================================== -//function : Ranges -//purpose : -//=========================================================================== -const NMTDS_CArray1OfIndexRange& NMTDS_ShapesDataStructure::Ranges()const -{ - return myRanges; -} -//=========================================================================== -//function : FillMap -//purpose : -//=========================================================================== -void NMTDS_ShapesDataStructure::FillMap - (const TopoDS_Shape& aS, - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA, - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const -{ - Standard_Integer iX, i, j, aIndex, aNbSc, aNbS; - BooleanOperations_AncestorsSeqAndSuccessorsSeq aAS; - // - aMSA.Add(aS, aAS); - aMS.Add(aS, aAS); - FillSubshapes(aS, aMSA, aMS); - // - aNbS=aMS.Extent(); - for(i=1; i<=aNbS; ++i) { - TColStd_MapOfInteger aMFence; - // - const TopoDS_Shape& aSX=aMS.FindKey(i); - iX=aMSA.FindIndex(aSX); - const BooleanOperations_AncestorsSeqAndSuccessorsSeq& aAS1=aMSA(iX); - // - aNbSc=aAS1.NumberOfSuccessors(); - for(j=1; j<=aNbSc; ++j) { - aIndex=aAS1.GetSuccessor(j); - if(aMFence.Add(aIndex)) { - BooleanOperations_AncestorsSeqAndSuccessorsSeq& aAS2=aMSA.ChangeFromIndex(aIndex); - aAS2.SetNewAncestor(iX); - } - } - } -} -//=========================================================================== -//function : FillSubshapes -//purpose : -//=========================================================================== -void NMTDS_ShapesDataStructure::FillSubshapes - (const TopoDS_Shape& aS, - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA, - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const -{ - Standard_Boolean bIsNewSubShape; - Standard_Integer aIndexSubShape, aIndex; - BooleanOperations_AncestorsSeqAndSuccessorsSeq aASx; - // - aIndex=aMSA.FindIndex(aS); - BooleanOperations_AncestorsSeqAndSuccessorsSeq& aAS=aMSA.ChangeFromIndex(aIndex); - // - TopoDS_Iterator anIt(aS, Standard_True); - for(; anIt.More(); anIt.Next()) { - const TopoDS_Shape& aSubShape = anIt.Value(); - bIsNewSubShape = Standard_False; - if(!aMSA.Contains(aSubShape)) { - bIsNewSubShape=!bIsNewSubShape; - aIndexSubShape=aMSA.Add(aSubShape, aASx); - aMS.Add(aSubShape, aASx); - } - else { - aIndexSubShape=aMSA.FindIndex(aSubShape); - } - aAS.SetNewSuccessor(aIndexSubShape); - aAS.SetNewOrientation(aSubShape.Orientation()); - // - if(bIsNewSubShape && (aSubShape.ShapeType() != TopAbs_VERTEX)) { - FillSubshapes(aSubShape, aMSA, aMS); - } - } -} -//=========================================================================== -//function : Init -//purpose : -//=========================================================================== -void NMTDS_ShapesDataStructure::Init() -{ - Standard_Integer i, j, aNbSx, aNbS, aShift, aNbRanges; - Standard_Integer iFirst, iLast; - NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors aLx; - NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors aLit; - TopoDS_Iterator anIt; - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors aMSA; - // - anIt.Initialize(myCompositeShape); - for (; anIt.More(); anIt.Next()) { - const TopoDS_Shape& aSx=anIt.Value(); - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors aMS; - // - if (!aMSA.Contains(aSx)) { - FillMap(aSx, aMSA, aMS); - aLx.Append(aMS); - } - } - aNbS=aMSA.Extent(); - // - // Fill myRanges - i=aLx.Extent(); - myRanges.Resize(i); - aLit.Initialize(aLx); - for (i=1; aLit.More(); aLit.Next(), ++i) { - const BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSx=aLit.Value(); - aNbSx=aMSx.Extent(); - if (i==1) { - iFirst=1; - iLast=aNbSx; - myRanges(i).SetFirst(iFirst); - myRanges(i).SetLast(iLast); - continue; - } - iFirst=myRanges(i-1).Last()+1; - iLast=iFirst+aNbSx-1; - myRanges(i).SetFirst(iFirst); - myRanges(i).SetLast(iLast); - } - // - myNumberOfShapesOfTheObject=aNbS; - myNumberOfShapesOfTheTool=0; - myLength=2*aNbS; - // - // Allocate the whole Table - myListOfShapeAndInterferences = (BooleanOperations_PShapeAndInterferences) - Standard::Allocate(myLength*sizeof(BooleanOperations_ShapeAndInterferences)); - // - // Fill the table - - aShift=0; - for (j=1; j<=aNbS; ++j) { - const TopoDS_Shape& aSx=aMSA.FindKey(j); - const BooleanOperations_AncestorsSeqAndSuccessorsSeq& aASx=aMSA.FindFromIndex(j); - InsertShapeAndAncestorsSuccessors(aSx, aASx, aShift); - } - // myShapeIndexMap - myShapeIndexMap.Clear(); - // - //modified by NIZNHY-PKV Mon Dec 12 09:01:53 2011f - aNbRanges=myRanges.Extent(); - for (i=1; i<=aNbRanges; ++i){ - const NMTDS_IndexRange& aR=myRanges(i); - iFirst=aR.First(); - iLast =aR.Last(); - for (j=iFirst; j<=iLast; ++j) { - const TopoDS_Shape& aS=Shape(j); - myShapeIndexMap.Bind(aS, j); - } - } - //modified by NIZNHY-PKV Mon Dec 12 09:02:00 2011t - // - // myRefEdges - iLast=myNumberOfShapesOfTheObject+myNumberOfShapesOfTheTool; - myRefEdges.Resize(iLast); - - for (i=1; i<=iLast; ++i) { - const TopoDS_Shape& aS=Shape(i); - myRefEdges(i)=0; - if (aS.ShapeType()==TopAbs_EDGE) { - myNbEdges++; - myRefEdges(i)=myNbEdges; - } - } -} -//=========================================================================== -//function : ShapeRangeIndex -//purpose : -//=========================================================================== -Standard_Integer NMTDS_ShapesDataStructure::ShapeRangeIndex - (const Standard_Integer aId)const -{ - Standard_Boolean bFound; - Standard_Integer i, aNbR, aIdx, aNbS, aZero=0; - // - aNbS=myNumberOfShapesOfTheObject+myNumberOfShapesOfTheTool; - - aIdx=aId; - if (aIdx > aNbS || aIdx < 1){ - return aZero; - } - // - if (aIdx > myNumberOfShapesOfTheObject) { - aIdx-=myNumberOfShapesOfTheObject; - } - // - aNbR=myRanges.Extent(); - for (i=1; i<=aNbR; ++i) { - const NMTDS_IndexRange& aRange=myRanges(i); - bFound=aRange.IsInRange(aIdx); - if (bFound) { - return i; - } - } - return aZero; -} -//=========================================================================== -//function : Rank -//purpose : -//=========================================================================== -Standard_Integer NMTDS_ShapesDataStructure::Rank - (const Standard_Integer aId)const -{ - Standard_Boolean bFound; - Standard_Integer i, aNbR, aNbS, aZero=0; - // - aNbS=myNumberOfShapesOfTheObject; - - if (aId > aNbS || aId < 1){ - return aZero; - } - // - aNbR=myRanges.Extent(); - for (i=1; i<=aNbR; ++i) { - const NMTDS_IndexRange& aRange=myRanges(i); - bFound=aRange.IsInRange(aId); - if (bFound) { - return i; - } - } - return aZero; -} -//=========================================================================== -//function : ShapeIndex -//purpose : -//=========================================================================== -Standard_Integer NMTDS_ShapesDataStructure::ShapeIndex - (const TopoDS_Shape& aS, - const Standard_Integer aRank)const -{ - Standard_Address pIndex; - Standard_Integer aIndex; - // - aIndex=0; - // - //modified by NIZNHY-PKV Mon Dec 12 09:02:48 2011f - pIndex=myShapeIndexMap.Find1(aS); - if (pIndex) { - aIndex=*((Standard_Integer*)pIndex); - } - //modified by NIZNHY-PKV Mon Dec 12 09:02:54 2011t - return aIndex; -} - -//======================================================================= -//function : ComputeBoxEx -//purpose : -//======================================================================= -void NMTDS_ShapesDataStructure::ComputeBoxEx - (const Standard_Integer aIx, - Bnd_Box& aBoxEx)const -{ - ComputeBoxExS(aIx, this, aBoxEx); -} -//======================================================================= -//function : GetAllSuccessors -//purpose : -//======================================================================= -void NMTDS_ShapesDataStructure::GetAllSuccessors - (const Standard_Integer nS, - TColStd_IndexedMapOfInteger& aMA)const -{ - GetAllSuccessorsS(nS, this, aMA); -} -//======================================================================= -//function : GetAllSuccessorsS -//purpose : -//======================================================================= -void GetAllSuccessorsS(const Standard_Integer nS, - const NMTDS_ShapesDataStructure* myDS, - TColStd_IndexedMapOfInteger& aMA) -{ - TopAbs_ShapeEnum aT; - Standard_Integer i, nSx, aNbSuccessors, *pSuccessors; - Standard_Address xSuccessors; - // - const TopoDS_Shape& aS=myDS->Shape(nS); - aT=aS.ShapeType(); - if(NMTDS_Tools::HasBRep(aT)) { - aMA.Add(nS); - // - if (aT==TopAbs_VERTEX) { - return; - } - } - // - myDS->GetSuccessors(nS, xSuccessors, aNbSuccessors); - pSuccessors=(Standard_Integer*)xSuccessors; - for (i=0; iGetBoundingBox(aIx); - aBoxEx.Add(aBox); - // - aNbS=pDS->NumberOfSuccessors(aIx); - for (i=1; i<=aNbS; ++i) { - Bnd_Box aBoxS; - iS=pDS->GetSuccessor(aIx, i); - ComputeBoxExS(iS, pDS, aBoxS); - aBoxEx.Add(aBoxS); - } -} diff --git a/src/NMTDS_NEW/NMTDS_ShapesDataStructure.hxx b/src/NMTDS_NEW/NMTDS_ShapesDataStructure.hxx deleted file mode 100644 index 82a88824d..000000000 --- a/src/NMTDS_NEW/NMTDS_ShapesDataStructure.hxx +++ /dev/null @@ -1,74 +0,0 @@ - -#ifndef _NMTDS_ShapesDataStructure_HeaderFile -#define _NMTDS_ShapesDataStructure_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//class : NMTDS_ShapesDataStructure -//purpose : -//======================================================================= -class NMTDS_ShapesDataStructure : public BooleanOperations_ShapesDataStructure -{ - public: - Standard_EXPORT - NMTDS_ShapesDataStructure(); - - Standard_EXPORT - void SetCompositeShape(const TopoDS_Shape& aS) ; - - Standard_EXPORT - void Init() ; - - Standard_EXPORT - const NMTDS_CArray1OfIndexRange& Ranges() const; - - Standard_EXPORT - const TopoDS_Shape& CompositeShape() const; - - Standard_EXPORT - Standard_Integer ShapeRangeIndex(const Standard_Integer aId) const; - - Standard_EXPORT - virtual Standard_Integer Rank(const Standard_Integer anIndex) const; - - Standard_EXPORT - virtual Standard_Integer ShapeIndex(const TopoDS_Shape& aS, - const Standard_Integer iRank) const; - - Standard_EXPORT - void FillMap(const TopoDS_Shape& aS, - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA, - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const; - - Standard_EXPORT - void FillSubshapes(const TopoDS_Shape& aS, - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA, - BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const; - - Standard_EXPORT - void GetAllSuccessors(const Standard_Integer anIndex, - TColStd_IndexedMapOfInteger& aScrs) const; - - Standard_EXPORT - void ComputeBoxEx(const Standard_Integer anIndex, - Bnd_Box& aBox) const; - - - protected: - TopoDS_Shape myCompositeShape; - NMTDS_CArray1OfIndexRange myRanges; - TopTools_DataMapOfShapeInteger myShapeIndexMap; -}; -#endif diff --git a/src/NMTDS_NEW/NMTDS_Tools.cxx b/src/NMTDS_NEW/NMTDS_Tools.cxx deleted file mode 100644 index c1bcec502..000000000 --- a/src/NMTDS_NEW/NMTDS_Tools.cxx +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_Tools.cxx -// Created: Tue Feb 20 14:57:28 2007 -// Author: Peter KURNEV - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void CopySource(const TopoDS_Shape& aS, - TopTools_IndexedDataMapOfShapeShape& aMapSS, - TopoDS_Shape& aSC); - -//======================================================================= -//function : CopyShape -//purpose : -//======================================================================= - void NMTDS_Tools::CopyShape(const TopoDS_Shape& aS, - TopoDS_Shape& aSC) -{ - TopTools_IndexedDataMapOfShapeShape aMapSS; - // - CopySource(aS, aMapSS, aSC); -} -//======================================================================= -//function : CopyShape -//purpose : -//======================================================================= - void NMTDS_Tools::CopyShape(const TopoDS_Shape& aS, - TopoDS_Shape& aSC, - TopTools_IndexedDataMapOfShapeShape& aMapSS) -{ - CopySource(aS, aMapSS, aSC); -} -//======================================================================= -//function : CopySource -//purpose : -//======================================================================= -void CopySource(const TopoDS_Shape& aS, - TopTools_IndexedDataMapOfShapeShape& aMapSS, - TopoDS_Shape& aSC) -{ - Standard_Boolean bFree; - TopAbs_ShapeEnum aT; - TopoDS_Iterator aIt; - TopoDS_Shape aSF; - BRep_Builder BB; - // - aT=aS.ShapeType(); - // - if (aMapSS.Contains(aS)) { - aSC=aMapSS.ChangeFromKey(aS); - aSC.Orientation(aS.Orientation()); - return; - } - else { - aSC=aS.EmptyCopied(); - aMapSS.Add(aS, aSC); - } - // - bFree=aSC.Free(); - aSC.Free(Standard_True); - aSF=aS; - if (aT==TopAbs_EDGE){ - TopAbs_Orientation aOr; - // - aOr=aS.Orientation(); - if(aOr==TopAbs_INTERNAL) { - aSF.Orientation(TopAbs_FORWARD); - } - } - aIt.Initialize(aSF); - for (; aIt.More(); aIt.Next()) { - TopoDS_Shape aSCx; - // - const TopoDS_Shape& aSx=aIt.Value(); - // - CopySource (aSx, aMapSS, aSCx); - // - aSCx.Orientation(aSx.Orientation()); - BB.Add(aSC, aSCx); - } - aSC.Free(bFree); -} -//======================================================================= -// function: ComputeVV -// purpose: -//======================================================================= - Standard_Integer NMTDS_Tools::ComputeVV(const TopoDS_Vertex& aV1, - const TopoDS_Vertex& aV2) -{ - Standard_Real aTolV1, aTolV2, aTolSum, aTolSum2, aD2; - gp_Pnt aP1, aP2; - // - aTolV1=BRep_Tool::Tolerance(aV1); - aTolV2=BRep_Tool::Tolerance(aV2); - aTolSum=aTolV1+aTolV2; - aTolSum2=aTolSum*aTolSum; - // - aP1=BRep_Tool::Pnt(aV1); - aP2=BRep_Tool::Pnt(aV2); - // - aD2=aP1.SquareDistance(aP2); - if (aD2>aTolSum2) { - return -1; - } - return 0; -} -//======================================================================= -// function: HasBRep -// purpose: -//======================================================================= - Standard_Boolean NMTDS_Tools::HasBRep(const TopAbs_ShapeEnum aTi) -{ - return (aTi==TopAbs_VERTEX || aTi==TopAbs_EDGE || aTi==TopAbs_FACE); -} -//======================================================================= -//function : TypeToInteger -//purpose : -//======================================================================= - Standard_Integer NMTDS_Tools::TypeToInteger(const TopAbs_ShapeEnum aType1, - const TopAbs_ShapeEnum aType2) -{ - Standard_Integer iRet, iT1, iT2, iX; - // - iRet=-1; - iT1=(Standard_Integer)aType1; - iT2=(Standard_Integer)aType2; - // - iX=iT2*10+iT1; - switch (iX) { - case 77: - iRet=5; // VV - break; - case 76: - case 67: - iRet=4; // VE - break; - case 74: - case 47: - iRet=2; // VF - break; - case 66: - iRet=3; // EE - break; - case 64: - case 46: - iRet=1; // EF - break; - case 44: - iRet=0; // FF - break; - default: - break; - } - return iRet; -} diff --git a/src/NMTDS_NEW/NMTDS_Tools.hxx b/src/NMTDS_NEW/NMTDS_Tools.hxx deleted file mode 100644 index 39bda9460..000000000 --- a/src/NMTDS_NEW/NMTDS_Tools.hxx +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_Tools.hxx -// Created: -// Author: Peter KURNEV - -#ifndef _NMTDS_Tools_HeaderFile -#define _NMTDS_Tools_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : NMTDS_Tools -//purpose : -//======================================================================= -class NMTDS_Tools -{ - public: - Standard_EXPORT - static Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aT1, - const TopAbs_ShapeEnum aT2) ; - - Standard_EXPORT - static Standard_Boolean HasBRep(const TopAbs_ShapeEnum aT) ; - - Standard_EXPORT - static Standard_Integer ComputeVV(const TopoDS_Vertex& aV1, - const TopoDS_Vertex& aV2) ; - - Standard_EXPORT - static void CopyShape(const TopoDS_Shape& aS, - TopoDS_Shape& aSC) ; - - Standard_EXPORT - static void CopyShape(const TopoDS_Shape& aS, - TopoDS_Shape& aSC, - TopTools_IndexedDataMapOfShapeShape& aMSS) ; -}; -#endif diff --git a/src/NMTTools_NEW/FILES b/src/NMTTools/FILES similarity index 100% rename from src/NMTTools_NEW/FILES rename to src/NMTTools/FILES diff --git a/src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx b/src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx deleted file mode 100644 index 6142c40ce..000000000 --- a/src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_HeaderFile -#define _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo); - -class Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo) : public Handle(TCollection_MapNode) { - public: - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)(const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)(const NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)& operator=(const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)& operator=(const NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo* operator->() const - { - return (NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)(); - - Standard_EXPORT static const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx deleted file mode 100644 index dd12e0f70..000000000 --- a/src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#define _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock); - -class Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) : public Handle(TCollection_MapNode) { - public: - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)(const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)(const NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)& operator=(const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)& operator=(const NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock* operator->() const - { - return (NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)(); - - Standard_EXPORT static const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx deleted file mode 100644 index 5b90e5953..000000000 --- a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#define _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger); - -class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) : public Handle(TCollection_MapNode) { - public: - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)& operator=(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)& operator=(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger* operator->() const - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)(); - - Standard_EXPORT static const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx deleted file mode 100644 index dbb3655a1..000000000 --- a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#define _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape); - -class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) : public Handle(TCollection_MapNode) { - public: - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)& operator=(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)& operator=(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape* operator->() const - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)(); - - Standard_EXPORT static const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx deleted file mode 100644 index ec31e5f7a..000000000 --- a/src/NMTTools/Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#define _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock); - -class Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) : public Handle(TCollection_MapNode) { - public: - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)& operator=(const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)& operator=(const NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock* operator->() const - { - return (NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)(); - - Standard_EXPORT static const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx b/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx deleted file mode 100644 index a71acd6f2..000000000 --- a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#define _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_ListNodeOfListOfCommonBlock; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock); - -class Handle(NMTTools_ListNodeOfListOfCommonBlock) : public Handle(TCollection_MapNode) { - public: - Handle(NMTTools_ListNodeOfListOfCommonBlock)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_ListNodeOfListOfCommonBlock)(const Handle(NMTTools_ListNodeOfListOfCommonBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_ListNodeOfListOfCommonBlock)(const NMTTools_ListNodeOfListOfCommonBlock* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_ListNodeOfListOfCommonBlock)& operator=(const Handle(NMTTools_ListNodeOfListOfCommonBlock)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_ListNodeOfListOfCommonBlock)& operator=(const NMTTools_ListNodeOfListOfCommonBlock* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_ListNodeOfListOfCommonBlock* operator->() const - { - return (NMTTools_ListNodeOfListOfCommonBlock *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTTools_ListNodeOfListOfCommonBlock)(); - - Standard_EXPORT static const Handle(NMTTools_ListNodeOfListOfCommonBlock) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx b/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx deleted file mode 100644 index 207ded178..000000000 --- a/src/NMTTools/Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#define _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_ListNodeOfListOfCoupleOfShape; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape); - -class Handle(NMTTools_ListNodeOfListOfCoupleOfShape) : public Handle(TCollection_MapNode) { - public: - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)(const Handle(NMTTools_ListNodeOfListOfCoupleOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)(const NMTTools_ListNodeOfListOfCoupleOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)& operator=(const Handle(NMTTools_ListNodeOfListOfCoupleOfShape)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_ListNodeOfListOfCoupleOfShape)& operator=(const NMTTools_ListNodeOfListOfCoupleOfShape* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_ListNodeOfListOfCoupleOfShape* operator->() const - { - return (NMTTools_ListNodeOfListOfCoupleOfShape *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTTools_ListNodeOfListOfCoupleOfShape)(); - - Standard_EXPORT static const Handle(NMTTools_ListNodeOfListOfCoupleOfShape) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Handle_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx b/src/NMTTools/Handle_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx deleted file mode 100644 index 6d113bae7..000000000 --- a/src/NMTTools/Handle_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile -#define _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile - -#ifndef _Standard_Macro_HeaderFile -#include -#endif -#ifndef _Standard_HeaderFile -#include -#endif - -#ifndef _Handle_TCollection_MapNode_HeaderFile -#include -#endif - -class Standard_Transient; -class Handle_Standard_Type; -class Handle(TCollection_MapNode); -class NMTTools_StdMapNodeOfMapOfPaveBlock; -Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_StdMapNodeOfMapOfPaveBlock); - -class Handle(NMTTools_StdMapNodeOfMapOfPaveBlock) : public Handle(TCollection_MapNode) { - public: - Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)():Handle(TCollection_MapNode)() {} - Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)(const Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) - { - } - - Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)(const NMTTools_StdMapNodeOfMapOfPaveBlock* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) - { - } - - Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)& operator=(const Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)& aHandle) - { - Assign(aHandle.Access()); - return *this; - } - - Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)& operator=(const NMTTools_StdMapNodeOfMapOfPaveBlock* anItem) - { - Assign((Standard_Transient *)anItem); - return *this; - } - - NMTTools_StdMapNodeOfMapOfPaveBlock* operator->() const - { - return (NMTTools_StdMapNodeOfMapOfPaveBlock *)ControlAccess(); - } - -// Standard_EXPORT ~Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)(); - - Standard_EXPORT static const Handle(NMTTools_StdMapNodeOfMapOfPaveBlock) DownCast(const Handle(Standard_Transient)& AnObject); -}; -#endif diff --git a/src/NMTTools/Makefile.am b/src/NMTTools/Makefile.am index 9c7c719e4..f498dad8a 100644 --- a/src/NMTTools/Makefile.am +++ b/src/NMTTools/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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 @@ -15,6 +15,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# # GEOM NMTTools : partition algorithm # File : Makefile.in @@ -26,62 +27,30 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am # header files salomeinclude_HEADERS = \ - Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx \ - Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx \ - Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx \ - Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx \ - Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx \ - Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx \ - Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx \ - Handle_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx \ NMTTools_CheckerSI.hxx \ - NMTTools_CheckerSI.ixx \ - NMTTools_CheckerSI.jxx \ NMTTools_CommonBlockAPI.hxx \ - NMTTools_CommonBlockAPI.ixx \ - NMTTools_CommonBlockAPI.jxx \ NMTTools_CommonBlock.hxx \ - NMTTools_CommonBlock.ixx \ - NMTTools_CommonBlock.jxx \ NMTTools_CommonBlockPool.hxx \ NMTTools_CoupleOfShape.hxx \ - NMTTools_CoupleOfShape.ixx \ - NMTTools_CoupleOfShape.jxx \ NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx \ NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx \ - NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx \ - NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx \ NMTTools_DataMapOfIntegerFaceInfo.hxx \ NMTTools_DataMapOfIntegerListOfPaveBlock.hxx \ NMTTools_DEProcessor.hxx \ - NMTTools_DEProcessor.ixx \ - NMTTools_DEProcessor.jxx \ NMTTools_FaceInfo.hxx \ - NMTTools_FaceInfo.ixx \ - NMTTools_FaceInfo.jxx \ NMTTools_FaceInfo.lxx \ - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx \ - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx \ - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx \ NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx \ NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx \ NMTTools_IndexedDataMapOfShapePaveBlock.hxx \ NMTTools_ListIteratorOfListOfCommonBlock.hxx \ NMTTools_ListIteratorOfListOfCoupleOfShape.hxx \ - NMTTools_ListNodeOfListOfCommonBlock.hxx \ - NMTTools_ListNodeOfListOfCoupleOfShape.hxx \ NMTTools_ListOfCommonBlock.hxx \ NMTTools_ListOfCoupleOfShape.hxx \ NMTTools_MapIteratorOfMapOfPaveBlock.hxx \ NMTTools_MapOfPaveBlock.hxx \ NMTTools_PaveFiller.hxx \ - NMTTools_PaveFiller.ixx \ - NMTTools_PaveFiller.jxx \ NMTTools_PPaveFiller.hxx \ - NMTTools_Tools.hxx \ - NMTTools_Tools.ixx \ - NMTTools_Tools.jxx \ - NMTTools_StdMapNodeOfMapOfPaveBlock.hxx + NMTTools_Tools.hxx # Libraries targets lib_LTLIBRARIES = libNMTTools.la @@ -91,30 +60,10 @@ dist_libNMTTools_la_SOURCES = \ NMTTools_CheckerSI_1.cxx \ NMTTools_CommonBlockAPI.cxx \ NMTTools_CommonBlock.cxx \ - NMTTools_CommonBlockPool_0.cxx \ + NMTTools_CommonBlockPool.cxx \ NMTTools_CoupleOfShape.cxx \ - NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_0.cxx \ - NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx \ - NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_0.cxx \ - NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx \ - NMTTools_DataMapOfIntegerFaceInfo_0.cxx \ - NMTTools_DataMapOfIntegerListOfPaveBlock_0.cxx \ NMTTools_DEProcessor.cxx \ NMTTools_FaceInfo.cxx \ - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx \ - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx \ - NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx \ - NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx \ - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx \ - NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx \ - NMTTools_ListIteratorOfListOfCommonBlock_0.cxx \ - NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx \ - NMTTools_ListNodeOfListOfCommonBlock_0.cxx \ - NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx \ - NMTTools_ListOfCommonBlock_0.cxx \ - NMTTools_ListOfCoupleOfShape_0.cxx \ - NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx \ - NMTTools_MapOfPaveBlock_0.cxx \ NMTTools_PaveFiller_0.cxx \ NMTTools_PaveFiller_1.cxx \ NMTTools_PaveFiller_2.cxx \ @@ -126,8 +75,7 @@ dist_libNMTTools_la_SOURCES = \ NMTTools_PaveFiller_8.cxx \ NMTTools_PaveFiller_9.cxx \ NMTTools_PaveFiller.cxx \ - NMTTools_Tools.cxx \ - NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx + NMTTools_Tools.cxx # additional information to compile and link file @@ -142,15 +90,9 @@ libNMTTools_la_LDFLAGS = \ $(CAS_LDPATH) -lTKBool -lTKBO \ $(KERNEL_LDFLAGS) -CDL_FILES = \ - NMTTools.cdl \ - NMTTools_CheckerSI.cdl \ - NMTTools_CommonBlock.cdl \ - NMTTools_CommonBlockAPI.cdl \ - NMTTools_CoupleOfShape.cdl \ - NMTTools_DEProcessor.cdl \ - NMTTools_FaceInfo.cdl \ - NMTTools_PaveFiller.cdl \ - NMTTools_Tools.cdl +CDL_FILES = \ + NMTTools.cdl -EXTRA_DIST += $(CDL_FILES) +EXTRA_DIST += \ + $(CDL_FILES) \ + FILES diff --git a/src/NMTTools/NMTTools.cdl b/src/NMTTools/NMTTools.cdl index 16706b426..e3ce88466 100644 --- a/src/NMTTools/NMTTools.cdl +++ b/src/NMTTools/NMTTools.cdl @@ -1,4 +1,4 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +-- Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE -- -- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,76 +25,105 @@ -- Author: Peter KURNEV -- -- -package NMTTools +package NMTTools - ---Purpose: + ---Purpose: + +uses -uses - TCollection, TColStd, - gp, - TopAbs, - TopoDS, - TopTools, + gp, + TopAbs, + TopoDS, + TopTools, Geom2d, BooleanOperations, BOPTColStd, IntTools, - BOPTools, - + BOPTools, NMTDS -is - class PaveFiller; - class Tools; - class CommonBlock; - class CommonBlockAPI; - class DEProcessor; - class CoupleOfShape; - class CheckerSI; - class FaceInfo; - - pointer PPaveFiller to PaveFiller from NMTTools; - - class ListOfCommonBlock instantiates - List from TCollection(CommonBlock from NMTTools); - - class CommonBlockPool instantiates - CArray1 from BOPTColStd (ListOfCommonBlock from NMTTools); - - class IndexedDataMapOfIndexedMapOfInteger instantiates - IndexedDataMap from TCollection (Integer from Standard, - IndexedMapOfInteger from TColStd, - MapIntegerHasher from TColStd); - - class IndexedDataMapOfShapePaveBlock instantiates - IndexedDataMap from TCollection (Shape from TopoDS, - PaveBlock from BOPTools, - ShapeMapHasher from TopTools); - - class IndexedDataMapOfShapeIndexedMapOfShape instantiates - IndexedDataMap from TCollection (Shape from TopoDS, - IndexedMapOfShape from TopTools, - ShapeMapHasher from TopTools); - - class ListOfCoupleOfShape instantiates - List from TCollection(CoupleOfShape from NMTTools); +is + imported CoupleOfShape from NMTTools; + imported CommonBlock from NMTTools; + imported CommonBlockAPI from NMTTools; + imported FaceInfo from NMTTools; + imported Tools from NMTTools; + imported PaveFiller from NMTTools; + imported PPaveFiller from NMTTools; + imported DEProcessor from NMTTools; + imported CheckerSI from NMTTools; + -- + imported ListOfCommonBlock from NMTTools; + imported ListIteratorOfListOfCommonBlock from NMTTools; + + imported ListOfCoupleOfShape from NMTTools; + imported ListIteratorOfListOfCoupleOfShape from NMTTools; + + imported MapOfPaveBlock from NMTTools; + imported MapIteratorOfMapOfPaveBlock from NMTTools; + + imported IndexedDataMapOfIndexedMapOfInteger from NMTTools; + imported IndexedDataMapOfShapePaveBlock from NMTTools; + imported IndexedDataMapOfShapeIndexedMapOfShape from NMTTools; + + imported DataMapOfIntegerListOfPaveBlock from NMTTools; + imported DataMapIteratorOfDataMapOfIntegerListOfPaveBlock from NMTTools; + + imported DataMapOfIntegerFaceInfo from NMTTools; + imported DataMapIteratorOfDataMapOfIntegerFaceInfo from NMTTools; + + imported CommonBlockPool from NMTTools; + + -- + --class PaveFiller; + --class Tools; + --class CommonBlock; + --class CommonBlockAPI; + --class FaceInfo; + --class CoupleOfShape; + --class CheckerSI; + --class DEProcessor; + --pointer PPaveFiller to PaveFiller from NMTTools; + -- + --class ListOfCommonBlock instantiates + -- List from TCollection(CommonBlock from NMTTools); + + --class ListOfCoupleOfShape instantiates + -- List from TCollection(CoupleOfShape from NMTTools); +-- + --class MapOfPaveBlock instantiates + -- Map from TCollection (PaveBlock from BOPTools, + -- PaveBlockMapHasher from BOPTools); +-- + --class IndexedDataMapOfIndexedMapOfInteger instantiates + -- IndexedDataMap from TCollection (Integer from Standard, + -- IndexedMapOfInteger from TColStd, + -- MapIntegerHasher from TColStd); + + --class IndexedDataMapOfShapePaveBlock instantiates + -- IndexedDataMap from TCollection (Shape from TopoDS, + -- PaveBlock from BOPTools, + -- ShapeMapHasher from TopTools); + + --class IndexedDataMapOfShapeIndexedMapOfShape instantiates + -- IndexedDataMap from TCollection (Shape from TopoDS, + -- IndexedMapOfShape from TopTools, + -- ShapeMapHasher from TopTools); + +-- + --class DataMapOfIntegerListOfPaveBlock instantiates + -- DataMap from TCollection(Integer from Standard, + -- ListOfPaveBlock from BOPTools, + -- MapIntegerHasher from TColStd); + --class DataMapOfIntegerFaceInfo instantiates + -- DataMap from TCollection(Integer from Standard, + -- FaceInfo from NMTTools, + -- MapIntegerHasher from TColStd); -- - class DataMapOfIntegerListOfPaveBlock instantiates - DataMap from TCollection(Integer from Standard, - ListOfPaveBlock from BOPTools, - MapIntegerHasher from TColStd); - - class MapOfPaveBlock instantiates - Map from TCollection (PaveBlock from BOPTools, - PaveBlockMapHasher from BOPTools); - - class DataMapOfIntegerFaceInfo instantiates - DataMap from TCollection(Integer from Standard, - FaceInfo from NMTTools, - MapIntegerHasher from TColStd); - + --class CommonBlockPool instantiates + -- CArray1 from BOPTColStd (ListOfCommonBlock from NMTTools); -- end NMTTools; diff --git a/src/NMTTools/NMTTools.pro b/src/NMTTools/NMTTools.pro deleted file mode 100644 index 88a58d9d4..000000000 --- a/src/NMTTools/NMTTools.pro +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = NMTTools -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -STDLIB = -lstdc++ - -CAS_LDPATH = -L$$(CASROOT)/Linux/lib - -KERNEL_LDFLAGS = -L$$(KERNEL_ROOT_DIR)/lib/salome - -INCLUDEPATH += $${CAS_CPPFLAGS} $${KERNEL_CXXFLAGS} ../NMTDS - -LIBS += -L$$(GEOM_ROOT_DIR)/lib -lNMTDS $${STDLIB} $${CAS_LDPATH} -lTKBool -lTKBO $${KERNEL_LDFLAGS} - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS - -HEADERS = Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx -HEADERS += Handle_NMTDS_ListNodeOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx -HEADERS += Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx -HEADERS += Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx -HEADERS += Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx -HEADERS += Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx -HEADERS += Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx -HEADERS += NMTTools_CommonBlockAPI.hxx -HEADERS += NMTTools_CommonBlock.hxx -HEADERS += NMTTools_CommonBlockPool.hxx -HEADERS += NMTTools_CoupleOfShape.hxx -HEADERS += NMTTools_DEProcessor.hxx -HEADERS += NMTTools_DSFiller.hxx -HEADERS += NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx -HEADERS += NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx -HEADERS += NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx -HEADERS += NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx -HEADERS += NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx -HEADERS += NMTTools_IndexedDataMapOfShapePaveBlock.hxx -HEADERS += NMTTools_ListIteratorOfListOfCommonBlock.hxx -HEADERS += NMTTools_ListIteratorOfListOfCoupleOfShape.hxx -HEADERS += NMTTools_ListNodeOfListOfCommonBlock.hxx -HEADERS += NMTTools_ListNodeOfListOfCoupleOfShape.hxx -HEADERS += NMTTools_ListOfCommonBlock.hxx -HEADERS += NMTTools_ListOfCoupleOfShape.hxx -HEADERS += NMTTools_PaveFiller.hxx -HEADERS += NMTTools_PCurveMaker.hxx -HEADERS += NMTTools_PDSFiller.hxx -HEADERS += NMTTools_PPaveFiller.hxx -HEADERS += NMTTools_Tools.hxx -HEADERS += Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx -HEADERS += Handle_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx -HEADERS += NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx -HEADERS += NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx -HEADERS += NMTTools_DataMapOfIntegerListOfPaveBlock.hxx -HEADERS += NMTTools_MapIteratorOfMapOfPaveBlock.hxx -HEADERS += NMTTools_MapOfPaveBlock.hxx -HEADERS += NMTTools_StdMapNodeOfMapOfPaveBlock.hxx - -SOURCES = NMTTools_CommonBlockAPI.cxx -SOURCES += NMTTools_CommonBlock.cxx -SOURCES += NMTTools_CommonBlockPool_0.cxx -SOURCES += NMTTools_CoupleOfShape.cxx -SOURCES += NMTTools_DEProcessor.cxx -SOURCES += NMTTools_DSFiller.cxx -SOURCES += NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx -SOURCES += NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx -SOURCES += NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx -SOURCES += NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx -SOURCES += NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx -SOURCES += NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx -SOURCES += NMTTools_ListIteratorOfListOfCommonBlock_0.cxx -SOURCES += NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx -SOURCES += NMTTools_ListNodeOfListOfCommonBlock_0.cxx -SOURCES += NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx -SOURCES += NMTTools_ListOfCommonBlock_0.cxx -SOURCES += NMTTools_ListOfCoupleOfShape_0.cxx -SOURCES += NMTTools_PaveFiller_0.cxx -SOURCES += NMTTools_PaveFiller_1.cxx -SOURCES += NMTTools_PaveFiller_2.cxx -SOURCES += NMTTools_PaveFiller_3.cxx -SOURCES += NMTTools_PaveFiller_4.cxx -SOURCES += NMTTools_PaveFiller_5.cxx -SOURCES += NMTTools_PaveFiller_6.cxx -SOURCES += NMTTools_PaveFiller_7.cxx -SOURCES += NMTTools_PaveFiller_8.cxx -SOURCES += NMTTools_PaveFiller_9.cxx -SOURCES += NMTTools_PaveFiller.cxx -SOURCES += NMTTools_PCurveMaker.cxx -SOURCES += NMTTools_Tools.cxx -SOURCES += NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx -SOURCES += NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx -SOURCES += NMTTools_DataMapOfIntegerListOfPaveBlock_0.cxx -SOURCES += NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx -SOURCES += NMTTools_MapOfPaveBlock_0.cxx -SOURCES += NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx - -includes.files = $$HEADERS -includes.path = ../../include - -INSTALLS += includes diff --git a/src/NMTTools/NMTTools_CheckerSI.cdl b/src/NMTTools/NMTTools_CheckerSI.cdl deleted file mode 100644 index 8225894fd..000000000 --- a/src/NMTTools/NMTTools_CheckerSI.cdl +++ /dev/null @@ -1,64 +0,0 @@ --- Copyright (C) 2007-2011 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: NMTTools_CheckerSI.cdl --- Created: Mon Feb 19 11:23:55 2007 --- Author: Peter KURNEV --- -class CheckerSI from NMTTools - inherits PaveFiller from NMTTools - ---Purpose: - -uses - ShapeEnum from TopAbs - ---raises - -is - - Create - returns CheckerSI from NMTTools; - ---C++: alias "Standard_EXPORT virtual ~NMTTools_CheckerSI();" - - Perform (me:out) - is redefined; - - Init (me:out) - is redefined protected; - - Clear (me:out) - is redefined protected; - - PreparePaveBlocks (me:out; - nE:Integer from Standard) - is redefined protected; - - PreparePaveBlocks (me:out; - aType1: ShapeEnum from TopAbs; - aType2: ShapeEnum from TopAbs) - is redefined protected; - - StopStatus(me) - returns Integer from Standard; - - -fields - myStopStatus: Integer from Standard is protected; - -end CheckerSI; diff --git a/src/NMTTools/NMTTools_CheckerSI.cxx b/src/NMTTools/NMTTools_CheckerSI.cxx index 84278c382..dd724ba6a 100644 --- a/src/NMTTools/NMTTools_CheckerSI.cxx +++ b/src/NMTTools/NMTTools_CheckerSI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -15,60 +15,58 @@ // 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: NMTTools_CheckerSI.cxx // Created: Mon Feb 19 11:32:08 2007 // Author: Peter KURNEV - -#include - -#include +// +#include #include #include #include - -#include - +#include #include //======================================================================= -//function : -//purpose : +//function : +//purpose : //======================================================================= -NMTTools_CheckerSI::NMTTools_CheckerSI() - : NMTTools_PaveFiller() + NMTTools_CheckerSI::NMTTools_CheckerSI() +: + NMTTools_PaveFiller() { myStopStatus=0; } //======================================================================= //function : ~ -//purpose : +//purpose : //======================================================================= -NMTTools_CheckerSI::~NMTTools_CheckerSI() + NMTTools_CheckerSI::~NMTTools_CheckerSI() { } //======================================================================= //function : Clear -//purpose : +//purpose : //======================================================================= -void NMTTools_CheckerSI::Clear() + void NMTTools_CheckerSI::Clear() { NMTTools_PaveFiller::Clear(); } //======================================================================= //function : StopStatus -//purpose : +//purpose : //======================================================================= -Standard_Integer NMTTools_CheckerSI::StopStatus()const + Standard_Integer NMTTools_CheckerSI::StopStatus()const { return myStopStatus; } //======================================================================= //function : Init -//purpose : +//purpose : //======================================================================= -void NMTTools_CheckerSI::Init() + void NMTTools_CheckerSI::Init() { myIsDone=Standard_False; if (myCompositeShape.IsNull()) { @@ -90,20 +88,17 @@ void NMTTools_CheckerSI::Init() myNbSources=myDS->NumberOfShapesOfTheObject()+ myDS->NumberOfShapesOfTheTool(); myNbEdges=myDS->NbEdges(); - // 4. + // 4 myIP=new NMTDS_InterfPool; // - // 5. -#if OCC_VERSION_LARGE > 0x06050200 - // In OCCT6.5.3 class IntTools_Context become a handle + // 5 myContext=new IntTools_Context; -#endif } //======================================================================= //function : Perform -//purpose : +//purpose : //======================================================================= -void NMTTools_CheckerSI::Perform() + void NMTTools_CheckerSI::Perform() { myIsDone=Standard_False; myStopStatus=0; @@ -173,7 +168,7 @@ void NMTTools_CheckerSI::Perform() // MakePCurves(); // - // 7. Postprocessing + // 7. Postprocessing UpdatePaveBlocks(); // NMTTools_DEProcessor aDEP(*this); diff --git a/src/NMTTools/NMTTools_CheckerSI.hxx b/src/NMTTools/NMTTools_CheckerSI.hxx index 6da5697c1..ff9000ad5 100644 --- a/src/NMTTools/NMTTools_CheckerSI.hxx +++ b/src/NMTTools/NMTTools_CheckerSI.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -17,102 +17,53 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_CheckerSI.hxx +// Created: Mon Feb 19 11:32:08 2007 +// Author: Peter KURNEV +// #ifndef _NMTTools_CheckerSI_HeaderFile #define _NMTTools_CheckerSI_HeaderFile -#ifndef _Standard_Integer_HeaderFile +#include +#include #include -#endif -#ifndef _NMTTools_PaveFiller_HeaderFile #include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile #include -#endif - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTTools_CheckerSI : public NMTTools_PaveFiller { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_CheckerSI(); -Standard_EXPORT virtual ~NMTTools_CheckerSI(); - - -Standard_EXPORT virtual void Perform() ; - - -Standard_EXPORT Standard_Integer StopStatus() const; +//======================================================================= +//class : NMTTools_CheckerSI +//purpose : +//======================================================================= +class NMTTools_CheckerSI : public NMTTools_PaveFiller +{ + public: + Standard_EXPORT + NMTTools_CheckerSI(); + Standard_EXPORT + virtual ~NMTTools_CheckerSI(); + Standard_EXPORT + virtual void Perform() ; + Standard_EXPORT + Standard_Integer StopStatus() const; -protected: + protected: + Standard_EXPORT + virtual void Init() ; - // Methods PROTECTED - // + Standard_EXPORT + virtual void Clear() ; + Standard_EXPORT + virtual void PreparePaveBlocks(const Standard_Integer nE) ; -Standard_EXPORT virtual void Init() ; - - -Standard_EXPORT virtual void Clear() ; - - -Standard_EXPORT virtual void PreparePaveBlocks(const Standard_Integer nE) ; - - -Standard_EXPORT virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; - - - // Fields PROTECTED - // -Standard_Integer myStopStatus; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // + Standard_EXPORT + virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1, + const TopAbs_ShapeEnum aType2) ; + Standard_Integer myStopStatus; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTTools/NMTTools_CheckerSI.ixx b/src/NMTTools/NMTTools_CheckerSI.ixx deleted file mode 100644 index 70ad726e1..000000000 --- a/src/NMTTools/NMTTools_CheckerSI.ixx +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#include - - - - diff --git a/src/NMTTools/NMTTools_CheckerSI.jxx b/src/NMTTools/NMTTools_CheckerSI.jxx deleted file mode 100644 index 5a1399c9d..000000000 --- a/src/NMTTools/NMTTools_CheckerSI.jxx +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (C) 2007-2011 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 -// - -#ifndef _NMTTools_CheckerSI_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_CheckerSI_1.cxx b/src/NMTTools/NMTTools_CheckerSI_1.cxx index 690159ec3..eb00dec0f 100755 --- a/src/NMTTools/NMTTools_CheckerSI_1.cxx +++ b/src/NMTTools/NMTTools_CheckerSI_1.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -21,7 +21,7 @@ // Created: Mon Feb 19 11:32:08 2007 // Author: Peter KURNEV // -#include +#include #include #include @@ -52,16 +52,16 @@ static //======================================================================= // function: PreparePaveBlocks -// purpose: +// purpose: //======================================================================= - void NMTTools_CheckerSI::PreparePaveBlocks(const TopAbs_ShapeEnum aType1, + void NMTTools_CheckerSI::PreparePaveBlocks(const TopAbs_ShapeEnum aType1, const TopAbs_ShapeEnum aType2) { NMTTools_PaveFiller::PreparePaveBlocks(aType1, aType2); } //======================================================================= // function: PreparePaveBlocks -// purpose: +// purpose: //======================================================================= void NMTTools_CheckerSI::PreparePaveBlocks(const Standard_Integer nE) { @@ -75,7 +75,7 @@ static TopoDS_Vertex aV1, aV2; // BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - // Edge + // Edge aE=TopoDS::Edge(myDS->Shape(nE)); if (BRep_Tool::Degenerated(aE)) { myIsDone=Standard_True; @@ -83,7 +83,7 @@ static } // BOPTools_PaveSet& aPS=myPavePool(myDS->RefEdge(nE)); - + BOPTools_PaveBlockIterator aPBIt(nE, aPS); for (; aPBIt.More(); aPBIt.Next()) { BOPTools_PaveBlock& aPB=aPBIt.Value(); @@ -96,7 +96,7 @@ static // const BOPTools_Pave& aPave2=aPB.Pave2(); nV2=aPave2.Index(); - aV2=TopoDS::Vertex(myDS->Shape(nV2)); + aV2=TopoDS::Vertex(myDS->Shape(nV2)); aT2=aPave2.Param(); // bIsValid=Standard_True; @@ -121,13 +121,13 @@ static } aPB.SetShrunkRange(aSR); aLPB.Append(aPB); - } //for (; aPBIt.More(); aPBIt.Next()) + } //for (; aPBIt.More(); aPBIt.Next()) myIsDone=Standard_True; } //======================================================================= //function : IsValid -//purpose : +//purpose : //======================================================================= Standard_Boolean IsValid(const TopoDS_Edge& aE, const TopoDS_Vertex& aV, diff --git a/src/NMTTools/NMTTools_CommonBlock.cdl b/src/NMTTools/NMTTools_CommonBlock.cdl deleted file mode 100644 index 985e40f20..000000000 --- a/src/NMTTools/NMTTools_CommonBlock.cdl +++ /dev/null @@ -1,108 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTTools_CommonBlock.cdl --- Created: Tue Dec 9 12:11:48 2003 --- Author: Peter KURNEV --- --- -class CommonBlock from NMTTools - - ---Purpose: - -uses - ListOfInteger from TColStd, - PaveBlock from BOPTools, - ListOfPaveBlock from BOPTools - ---raises - -is - Create - returns CommonBlock from NMTTools; - - AddPaveBlock(me:out; - aPB : PaveBlock from BOPTools); - - AddFace(me:out; - aF : Integer from Standard); - - AddFaces(me:out; - aLF: ListOfInteger from TColStd); - - PaveBlocks(me) - returns ListOfPaveBlock from BOPTools; - ---C++: return const & - - Faces (me) - returns ListOfInteger from TColStd; - ---C++: return const & - - PaveBlock1 (me) - returns PaveBlock from BOPTools; - ---C++: return const & - - PaveBlock1 (me:out; - anIx: Integer from Standard) - returns PaveBlock from BOPTools; - ---C++: return & - - PaveBlockOnEdge (me:out; - anIndex: Integer from Standard) - returns PaveBlock from BOPTools; - ---C++: return & - - IsPaveBlockOnFace (me; - anIndex: Integer from Standard) - returns Boolean from Standard; - - IsPaveBlockOnEdge (me; - anIndex: Integer from Standard) - returns Boolean from Standard; - - IsEqual (me; - aCB:CommonBlock from NMTTools) - returns Boolean from Standard; - - Contains(me; - aPB:PaveBlock from BOPTools) - returns Boolean from Standard; - --- SetEdge (me:out; --- anEdge:Integer from Standard); - --- Edge (me) --- returns Integer from Standard; - -fields - myPaveBlocks: ListOfPaveBlock from BOPTools is protected; - myFaces : ListOfInteger from TColStd is protected; - -end CommonBlock; - - - - - - - - diff --git a/src/NMTTools/NMTTools_CommonBlock.cxx b/src/NMTTools/NMTTools_CommonBlock.cxx index 5672d34ec..701bf3790 100644 --- a/src/NMTTools/NMTTools_CommonBlock.cxx +++ b/src/NMTTools/NMTTools_CommonBlock.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,21 +25,21 @@ // Author: Peter KURNEV // // -#include +#include #include #include //======================================================================= // function: NMTTools_CommonBlock::NMTTools_CommonBlock() -// purpose: +// purpose: //======================================================================= NMTTools_CommonBlock::NMTTools_CommonBlock() { } //======================================================================= // function: AddPaveBlock -// purpose: +// purpose: //======================================================================= void NMTTools_CommonBlock::AddPaveBlock(const BOPTools_PaveBlock& aPB) { @@ -47,7 +47,7 @@ } //======================================================================= // function: AddFace -// purpose: +// purpose: //======================================================================= void NMTTools_CommonBlock::AddFace(const Standard_Integer aF) { @@ -55,7 +55,7 @@ } //======================================================================= // function: AddFaces -// purpose: +// purpose: //======================================================================= void NMTTools_CommonBlock::AddFaces(const TColStd_ListOfInteger& aLF) { @@ -67,7 +67,7 @@ } //======================================================================= // function: PaveBlocks -// purpose: +// purpose: //======================================================================= const BOPTools_ListOfPaveBlock& NMTTools_CommonBlock::PaveBlocks()const { @@ -75,7 +75,7 @@ } //======================================================================= // function: Faces -// purpose: +// purpose: //======================================================================= const TColStd_ListOfInteger& NMTTools_CommonBlock::Faces()const { @@ -83,7 +83,7 @@ } //======================================================================= // function: PaveBlock1 -// purpose: +// purpose: //======================================================================= const BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlock1()const { @@ -91,7 +91,7 @@ } //======================================================================= // function: PaveBlock1 -// purpose: +// purpose: //======================================================================= BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlock1(const Standard_Integer aIx) { @@ -99,7 +99,7 @@ } //======================================================================= // function: PaveBlockOnEdge -// purpose: +// purpose: //======================================================================= BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlockOnEdge(const Standard_Integer aIx) { @@ -118,7 +118,7 @@ } //======================================================================= // function: IsPaveBlockOnFace -// purpose: +// purpose: //======================================================================= Standard_Boolean NMTTools_CommonBlock::IsPaveBlockOnFace(const Standard_Integer aIx)const { @@ -136,7 +136,7 @@ } //======================================================================= // function: IsPaveBlockOnEdge -// purpose: +// purpose: //======================================================================= Standard_Boolean NMTTools_CommonBlock::IsPaveBlockOnEdge(const Standard_Integer aIx)const { @@ -155,7 +155,7 @@ } //======================================================================= // function: IsEqual -// purpose: +// purpose: //======================================================================= Standard_Boolean NMTTools_CommonBlock::IsEqual(const NMTTools_CommonBlock& aOther)const { @@ -189,7 +189,7 @@ } //======================================================================= // function: Contains -// purpose: +// purpose: //======================================================================= Standard_Boolean NMTTools_CommonBlock::Contains(const BOPTools_PaveBlock& aPBx)const { @@ -215,7 +215,7 @@ /* //======================================================================= // function: SetEdge -// purpose: +// purpose: //======================================================================= void NMTTools_CommonBlock::SetEdge(const Standard_Integer anEdge) { @@ -229,7 +229,7 @@ } //======================================================================= // function: Edge -// purpose: +// purpose: //======================================================================= Standard_Integer NMTTools_CommonBlock::Edge()const { diff --git a/src/NMTTools/NMTTools_CommonBlock.hxx b/src/NMTTools/NMTTools_CommonBlock.hxx index dee73db0b..94dc4d9b2 100644 --- a/src/NMTTools/NMTTools_CommonBlock.hxx +++ b/src/NMTTools/NMTTools_CommonBlock.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,126 +20,72 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_CommonBlock.hxx +// Created: Tue Dec 9 12:23:29 2003 +// Author: Peter KURNEV +// +// + #ifndef _NMTTools_CommonBlock_HeaderFile #define _NMTTools_CommonBlock_HeaderFile -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile +#include +#include #include -#endif -#ifndef _TColStd_ListOfInteger_HeaderFile #include -#endif -#ifndef _Standard_Integer_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif -class BOPTools_PaveBlock; -class TColStd_ListOfInteger; -class BOPTools_ListOfPaveBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif +#include +//======================================================================= +//function : NMTTools_CommonBlock +//purpose : +//======================================================================= class NMTTools_CommonBlock { + public: + Standard_EXPORT + NMTTools_CommonBlock(); -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_CommonBlock(); - - -Standard_EXPORT void AddPaveBlock(const BOPTools_PaveBlock& aPB) ; - - -Standard_EXPORT void AddFace(const Standard_Integer aF) ; - - -Standard_EXPORT void AddFaces(const TColStd_ListOfInteger& aLF) ; - - -Standard_EXPORT const BOPTools_ListOfPaveBlock& PaveBlocks() const; - + Standard_EXPORT + void AddPaveBlock(const BOPTools_PaveBlock& aPB) ; -Standard_EXPORT const TColStd_ListOfInteger& Faces() const; + Standard_EXPORT + void AddFace(const Standard_Integer aF) ; + Standard_EXPORT + void AddFaces(const TColStd_ListOfInteger& aLF) ; -Standard_EXPORT const BOPTools_PaveBlock& PaveBlock1() const; + Standard_EXPORT + const BOPTools_ListOfPaveBlock& PaveBlocks() const; + Standard_EXPORT + const TColStd_ListOfInteger& Faces() const; -Standard_EXPORT BOPTools_PaveBlock& PaveBlock1(const Standard_Integer anIx) ; + Standard_EXPORT + const BOPTools_PaveBlock& PaveBlock1() const; + Standard_EXPORT + BOPTools_PaveBlock& PaveBlock1(const Standard_Integer anIx) ; -Standard_EXPORT BOPTools_PaveBlock& PaveBlockOnEdge(const Standard_Integer anIndex) ; + Standard_EXPORT + BOPTools_PaveBlock& PaveBlockOnEdge(const Standard_Integer anIndex) ; + Standard_EXPORT + Standard_Boolean IsPaveBlockOnFace(const Standard_Integer anIndex) const; -Standard_EXPORT Standard_Boolean IsPaveBlockOnFace(const Standard_Integer anIndex) const; + Standard_EXPORT + Standard_Boolean IsPaveBlockOnEdge(const Standard_Integer anIndex) const; + Standard_EXPORT + Standard_Boolean IsEqual(const NMTTools_CommonBlock& aCB) const; -Standard_EXPORT Standard_Boolean IsPaveBlockOnEdge(const Standard_Integer anIndex) const; - - -Standard_EXPORT Standard_Boolean IsEqual(const NMTTools_CommonBlock& aCB) const; - - -Standard_EXPORT Standard_Boolean Contains(const BOPTools_PaveBlock& aPB) const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -BOPTools_ListOfPaveBlock myPaveBlocks; -TColStd_ListOfInteger myFaces; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - + Standard_EXPORT + Standard_Boolean Contains(const BOPTools_PaveBlock& aPB) const; + protected: + BOPTools_ListOfPaveBlock myPaveBlocks; + TColStd_ListOfInteger myFaces; }; - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTTools/NMTTools_CommonBlock.ixx b/src/NMTTools/NMTTools_CommonBlock.ixx deleted file mode 100644 index 25481fe11..000000000 --- a/src/NMTTools/NMTTools_CommonBlock.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTTools/NMTTools_CommonBlock.jxx b/src/NMTTools/NMTTools_CommonBlock.jxx deleted file mode 100644 index 0e92ac3dc..000000000 --- a/src/NMTTools/NMTTools_CommonBlock.jxx +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TColStd_ListOfInteger_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.cdl b/src/NMTTools/NMTTools_CommonBlockAPI.cdl deleted file mode 100644 index b9e39711f..000000000 --- a/src/NMTTools/NMTTools_CommonBlockAPI.cdl +++ /dev/null @@ -1,74 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTTools_CommonBlockAPI.cdl --- Created: Mon Dec 15 11:35:46 2003 --- Author: Peter KURNEV --- --- -class CommonBlockAPI from NMTTools - - ---Purpose: - -uses - ListOfCommonBlock from NMTTools, - ListOfPaveBlock from BOPTools, - PaveBlock from BOPTools, - CommonBlock from NMTTools - ---raises - -is - Create (aList:ListOfCommonBlock from NMTTools) - returns CommonBlockAPI from NMTTools; - - List(me) - returns ListOfCommonBlock from NMTTools; - ---C++: return const & - ---Purpose: - --- Selector - --- - CommonPaveBlocks(me; - anE:Integer from Standard) - returns ListOfPaveBlock from BOPTools; - ---C++: return const & - ---Purpose: - --- Returns all PaveBlock-s (from the list) that are - --- common for the given edge with DS-index - --- - IsCommonBlock (me; - aPB: PaveBlock from BOPTools) - returns Boolean from Standard; - ---Purpose: - --- Returns TRUE if given PaveBlock is - --- common for the Blocks from the list - - CommonBlock(me; - aPB: PaveBlock from BOPTools) - returns CommonBlock from NMTTools; - ---C++: return & - -fields - myListOfCommonBlock :Address from Standard; - myListOfPaveBlock :ListOfPaveBlock from BOPTools; - -end CommonBlockAPI; diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.cxx b/src/NMTTools/NMTTools_CommonBlockAPI.cxx index 19a2e68da..4593ef860 100644 --- a/src/NMTTools/NMTTools_CommonBlockAPI.cxx +++ b/src/NMTTools/NMTTools_CommonBlockAPI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,7 +25,7 @@ // Author: Peter KURNEV // // -#include +#include #include #include @@ -37,7 +37,7 @@ //======================================================================= // function: NMTTools_CommonBlockAPI::NMTTools_CommonBlockAPI -// purpose: +// purpose: //======================================================================= NMTTools_CommonBlockAPI::NMTTools_CommonBlockAPI (const NMTTools_ListOfCommonBlock& aLCB) { @@ -45,7 +45,7 @@ } //======================================================================= // function: List -// purpose: +// purpose: //======================================================================= const NMTTools_ListOfCommonBlock& NMTTools_CommonBlockAPI::List () const { @@ -85,7 +85,7 @@ } //======================================================================= // function: IsCommonBlock -// purpose: +// purpose: //======================================================================= Standard_Boolean NMTTools_CommonBlockAPI::IsCommonBlock(const BOPTools_PaveBlock& aPB) const { @@ -107,7 +107,7 @@ //======================================================================= // function: CommonBlock -// purpose: +// purpose: //======================================================================= NMTTools_CommonBlock& NMTTools_CommonBlockAPI::CommonBlock(const BOPTools_PaveBlock& aPB)const { @@ -120,7 +120,7 @@ // anItCB.Initialize(*pLCB); for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); + NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); // const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); anItPB.Initialize(aLPB); diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.hxx b/src/NMTTools/NMTTools_CommonBlockAPI.hxx index 10877ba87..d9c4aa4e7 100644 --- a/src/NMTTools/NMTTools_CommonBlockAPI.hxx +++ b/src/NMTTools/NMTTools_CommonBlockAPI.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,108 +20,55 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_CommonBlockAPI.hxx +// Created: Mon Dec 15 11:38:04 2003 +// Author: Peter KURNEV +// +// #ifndef _NMTTools_CommonBlockAPI_HeaderFile #define _NMTTools_CommonBlockAPI_HeaderFile -#ifndef _Standard_Address_HeaderFile +#include +#include #include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile #include -#endif -#ifndef _Standard_Integer_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif -class NMTTools_ListOfCommonBlock; -class BOPTools_ListOfPaveBlock; -class BOPTools_PaveBlock; -class NMTTools_CommonBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTTools_CommonBlockAPI { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_CommonBlockAPI(const NMTTools_ListOfCommonBlock& aList); - +#include +#include +#include +#include + +//======================================================================= +//class : NMTTools_CommonBlockAPI +//purpose : +//======================================================================= +class NMTTools_CommonBlockAPI +{ + public: + Standard_EXPORT + NMTTools_CommonBlockAPI(const NMTTools_ListOfCommonBlock& aList); //! Selector
        -Standard_EXPORT const NMTTools_ListOfCommonBlock& List() const; - + Standard_EXPORT + const NMTTools_ListOfCommonBlock& List() const; //! Returns all PaveBlock-s (from the list) that are
        //! common for the given edge with DS-index
        -Standard_EXPORT const BOPTools_ListOfPaveBlock& CommonPaveBlocks(const Standard_Integer anE) const; - + Standard_EXPORT + const BOPTools_ListOfPaveBlock& CommonPaveBlocks(const Standard_Integer anE) const; //! Returns TRUE if given PaveBlock is
        //! common for the Blocks from the list
        -Standard_EXPORT Standard_Boolean IsCommonBlock(const BOPTools_PaveBlock& aPB) const; - - -Standard_EXPORT NMTTools_CommonBlock& CommonBlock(const BOPTools_PaveBlock& aPB) const; - - - - + Standard_EXPORT + Standard_Boolean IsCommonBlock(const BOPTools_PaveBlock& aPB) const; + Standard_EXPORT + NMTTools_CommonBlock& CommonBlock(const BOPTools_PaveBlock& aPB) const; protected: +//private: - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // Standard_Address myListOfCommonBlock; BOPTools_ListOfPaveBlock myListOfPaveBlock; - - }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.ixx b/src/NMTTools/NMTTools_CommonBlockAPI.ixx deleted file mode 100644 index dce0485f1..000000000 --- a/src/NMTTools/NMTTools_CommonBlockAPI.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTTools/NMTTools_CommonBlockAPI.jxx b/src/NMTTools/NMTTools_CommonBlockAPI.jxx deleted file mode 100644 index 72be76bc1..000000000 --- a/src/NMTTools/NMTTools_CommonBlockAPI.jxx +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlockAPI_HeaderFile -#include -#endif diff --git a/src/NMTTools_NEW/NMTTools_CommonBlockPool.cxx b/src/NMTTools/NMTTools_CommonBlockPool.cxx similarity index 91% rename from src/NMTTools_NEW/NMTTools_CommonBlockPool.cxx rename to src/NMTTools/NMTTools_CommonBlockPool.cxx index 654852c7f..d49252b41 100644 --- a/src/NMTTools_NEW/NMTTools_CommonBlockPool.cxx +++ b/src/NMTTools/NMTTools_CommonBlockPool.cxx @@ -1,42 +1,42 @@ -// Copyright (C) 2007-2011 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: NMTTools_CommonBlockPool.cxx -// Created: -// Author: Peter KURNEV -// -// - - -#include - -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_OutOfMemory_HeaderFile -#include -#endif - - -#define Array1Item NMTTools_ListOfCommonBlock -#define Array1Item_hxx -#define BOPTColStd_CArray1 NMTTools_CommonBlockPool -#define BOPTColStd_CArray1_hxx -#include - +// Copyright (C) 2007-2012 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: NMTTools_CommonBlockPool.cxx +// Created: +// Author: Peter KURNEV +// +// + + +#include + +#ifndef _Standard_OutOfRange_HeaderFile +#include +#endif +#ifndef _Standard_OutOfMemory_HeaderFile +#include +#endif + + +#define Array1Item NMTTools_ListOfCommonBlock +#define Array1Item_hxx +#define BOPTColStd_CArray1 NMTTools_CommonBlockPool +#define BOPTColStd_CArray1_hxx +#include + diff --git a/src/NMTTools/NMTTools_CommonBlockPool.hxx b/src/NMTTools/NMTTools_CommonBlockPool.hxx index cd322c430..57a95d332 100644 --- a/src/NMTTools/NMTTools_CommonBlockPool.hxx +++ b/src/NMTTools/NMTTools_CommonBlockPool.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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 @@ -18,138 +15,108 @@ // 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: NMTTools_CommonBlockPool.hxx +// Created: +// Author: Peter KURNEV +// +// #ifndef _NMTTools_CommonBlockPool_HeaderFile #define _NMTTools_CommonBlockPool_HeaderFile -#include - -#ifndef _Standard_Address_HeaderFile +#include +#include #include -#endif -#ifndef _Standard_Integer_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif +#include class Standard_OutOfRange; class Standard_OutOfMemory; -class NMTTools_ListOfCommonBlock; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTTools_CommonBlockPool { - -public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // -Standard_EXPORT NMTTools_CommonBlockPool(const Standard_Integer Length = 0,const Standard_Integer BlockLength = 5); - - -Standard_EXPORT void Resize(const Standard_Integer theNewLength) ; - - -Standard_EXPORT void Destroy() ; -~NMTTools_CommonBlockPool() +//======================================================================= +//class : NMTTools_CommonBlockPool +//purpose : +//======================================================================= +class NMTTools_CommonBlockPool { - Destroy(); -} + public: + Standard_EXPORT + NMTTools_CommonBlockPool(const Standard_Integer Length = 0,const Standard_Integer BlockLength = 5); + Standard_EXPORT + void Resize(const Standard_Integer theNewLength) ; + Standard_EXPORT + void Destroy() ; -Standard_EXPORT Standard_Integer Length() const; + ~NMTTools_CommonBlockPool() { + Destroy(); + } + Standard_EXPORT + Standard_Integer Length() const; -Standard_EXPORT Standard_Integer Extent() const; + Standard_EXPORT + Standard_Integer Extent() const; + Standard_EXPORT + Standard_Integer FactLength() const; -Standard_EXPORT Standard_Integer FactLength() const; + Standard_EXPORT + Standard_Integer Append(const NMTTools_ListOfCommonBlock& Value) ; + Standard_EXPORT + void Remove(const Standard_Integer Index) ; -Standard_EXPORT Standard_Integer Append(const NMTTools_ListOfCommonBlock& Value) ; + Standard_EXPORT + const NMTTools_ListOfCommonBlock& Value(const Standard_Integer Index) const; + const NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) const { + return Value(Index); + } -Standard_EXPORT void Remove(const Standard_Integer Index) ; + Standard_EXPORT + NMTTools_ListOfCommonBlock& ChangeValue(const Standard_Integer Index) ; + NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) { + return ChangeValue(Index); + } -Standard_EXPORT const NMTTools_ListOfCommonBlock& Value(const Standard_Integer Index) const; - const NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) const -{ - return Value(Index); -} + Standard_EXPORT + void SetBlockLength(const Standard_Integer aBL) ; + Standard_EXPORT + Standard_Integer BlockLength() const; - -Standard_EXPORT NMTTools_ListOfCommonBlock& ChangeValue(const Standard_Integer Index) ; - NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) -{ - return ChangeValue(Index); -} - -Standard_EXPORT void SetBlockLength(const Standard_Integer aBL) ; -Standard_EXPORT Standard_Integer BlockLength() const; - -#if OCC_VERSION_LARGE > 0x06050200 -Standard_EXPORT void Purge(); -#endif + Standard_EXPORT + void Purge() ; protected: - // Methods PROTECTED - // - - // Fields PROTECTED - // - -private: - - // Methods PRIVATE - // -Standard_EXPORT NMTTools_CommonBlockPool(const NMTTools_CommonBlockPool& AnArray); +private: + Standard_EXPORT + NMTTools_CommonBlockPool(const NMTTools_CommonBlockPool& AnArray); -Standard_EXPORT NMTTools_CommonBlockPool& Assign(const NMTTools_CommonBlockPool& Other) ; - NMTTools_CommonBlockPool& operator =(const NMTTools_CommonBlockPool& Other) -{ - return Assign(Other); -} + Standard_EXPORT + NMTTools_CommonBlockPool& Assign(const NMTTools_CommonBlockPool& Other) ; -Standard_EXPORT Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; + NMTTools_CommonBlockPool& operator =(const NMTTools_CommonBlockPool& Other) { + return Assign(Other); + } - // Fields PRIVATE - // -Standard_Address myStart; -Standard_Integer myLength; -Standard_Integer myFactLength; -Standard_Integer myBlockLength; -Standard_Boolean myIsAllocated; + Standard_EXPORT + Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; + Standard_Address myStart; + Standard_Integer myLength; + Standard_Integer myFactLength; + Standard_Integer myBlockLength; + Standard_Boolean myIsAllocated; }; - -// other Inline functions and methods (like "C++: function call" methods) -// - #endif diff --git a/src/NMTTools/NMTTools_CommonBlockPool_0.cxx b/src/NMTTools/NMTTools_CommonBlockPool_0.cxx deleted file mode 100644 index 6704ac733..000000000 --- a/src/NMTTools/NMTTools_CommonBlockPool_0.cxx +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_OutOfMemory_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif - - -#define Array1Item NMTTools_ListOfCommonBlock -#define Array1Item_hxx -#define BOPTColStd_CArray1 NMTTools_CommonBlockPool -#define BOPTColStd_CArray1_hxx -#include - diff --git a/src/NMTTools/NMTTools_CoupleOfShape.cdl b/src/NMTTools/NMTTools_CoupleOfShape.cdl deleted file mode 100644 index 0661771bc..000000000 --- a/src/NMTTools/NMTTools_CoupleOfShape.cdl +++ /dev/null @@ -1,59 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTTools_CoupleOfShape.cdl --- Created: Wed Jan 28 15:03:39 2004 --- Author: Peter KURNEV --- --- -class CoupleOfShape from NMTTools - - ---Purpose: - -uses - Shape from TopoDS - ---raises - -is - Create - returns CoupleOfShape from NMTTools; - - SetShape1(me:out; - aS: Shape from TopoDS); - - SetShape2(me:out; - aS: Shape from TopoDS); - - Shape1(me) - returns Shape from TopoDS; - ---C++: return const & - - Shape2(me) - returns Shape from TopoDS; - ---C++: return const & - -fields - myShape1:Shape from TopoDS is protected; - myShape2:Shape from TopoDS is protected; - -end CoupleOfShape; diff --git a/src/NMTTools/NMTTools_CoupleOfShape.cxx b/src/NMTTools/NMTTools_CoupleOfShape.cxx index c05d61cdb..80726d9bd 100644 --- a/src/NMTTools/NMTTools_CoupleOfShape.cxx +++ b/src/NMTTools/NMTTools_CoupleOfShape.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,17 +25,17 @@ // Author: Peter KURNEV // // -#include +#include //======================================================================= // function: NMTTools_CoupleOfShape::NMTTools_CoupleOfShape -// purpose: +// purpose: //======================================================================= NMTTools_CoupleOfShape::NMTTools_CoupleOfShape() {} //======================================================================= // function: SetShape1 -// purpose: +// purpose: //======================================================================= void NMTTools_CoupleOfShape::SetShape1(const TopoDS_Shape& aS) { @@ -43,7 +43,7 @@ } //======================================================================= // function: SetShape2 -// purpose: +// purpose: //======================================================================= void NMTTools_CoupleOfShape::SetShape2(const TopoDS_Shape& aS) { @@ -51,7 +51,7 @@ } //======================================================================= // function: Shape1 -// purpose: +// purpose: //======================================================================= const TopoDS_Shape& NMTTools_CoupleOfShape::Shape1()const { @@ -59,7 +59,7 @@ } //======================================================================= // function: Shape2 -// purpose: +// purpose: //======================================================================= const TopoDS_Shape& NMTTools_CoupleOfShape::Shape2()const { diff --git a/src/NMTTools/NMTTools_CoupleOfShape.hxx b/src/NMTTools/NMTTools_CoupleOfShape.hxx index 44afa7bbf..fef9a00fe 100644 --- a/src/NMTTools/NMTTools_CoupleOfShape.hxx +++ b/src/NMTTools/NMTTools_CoupleOfShape.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,91 +20,42 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_CoupleOfShape.hxx +// Created: Wed Jan 28 15:06:11 2004 +// Author: Peter KURNEV +// +// #ifndef _NMTTools_CoupleOfShape_HeaderFile #define _NMTTools_CoupleOfShape_HeaderFile -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -class TopoDS_Shape; - - -#ifndef _Standard_HeaderFile #include -#endif -#ifndef _Standard_Macro_HeaderFile #include -#endif - - -class NMTTools_CoupleOfShape { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_CoupleOfShape(); - - -Standard_EXPORT void SetShape1(const TopoDS_Shape& aS) ; - - -Standard_EXPORT void SetShape2(const TopoDS_Shape& aS) ; - - -Standard_EXPORT const TopoDS_Shape& Shape1() const; - - -Standard_EXPORT const TopoDS_Shape& Shape2() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -TopoDS_Shape myShape1; -TopoDS_Shape myShape2; - +#include -private: +//======================================================================= +//class : NMTTools_CoupleOfShape +//purpose : +//======================================================================= +class NMTTools_CoupleOfShape +{ + public: + Standard_EXPORT + NMTTools_CoupleOfShape(); - // Methods PRIVATE - // + Standard_EXPORT + void SetShape1(const TopoDS_Shape& aS) ; + Standard_EXPORT + void SetShape2(const TopoDS_Shape& aS) ; - // Fields PRIVATE - // + Standard_EXPORT + const TopoDS_Shape& Shape1() const; + Standard_EXPORT + const TopoDS_Shape& Shape2() const; + protected: + TopoDS_Shape myShape1; + TopoDS_Shape myShape2; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTTools/NMTTools_CoupleOfShape.ixx b/src/NMTTools/NMTTools_CoupleOfShape.ixx deleted file mode 100644 index 83bc30c99..000000000 --- a/src/NMTTools/NMTTools_CoupleOfShape.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTTools/NMTTools_CoupleOfShape.jxx b/src/NMTTools/NMTTools_CoupleOfShape.jxx deleted file mode 100644 index e3c7b4313..000000000 --- a/src/NMTTools/NMTTools_CoupleOfShape.jxx +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_DEProcessor.cdl b/src/NMTTools/NMTTools_DEProcessor.cdl deleted file mode 100644 index 86d4c7b88..000000000 --- a/src/NMTTools/NMTTools_DEProcessor.cdl +++ /dev/null @@ -1,125 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTTools_DEProcessor.cdl --- Created: Wed Sep 12 12:08:37 2001 --- Author: Peter KURNEV --- --- -class DEProcessor from NMTTools - - ---Purpose: - -- - -- The Algorithm to compute and store in interferences' pool - --- and in the Data Structure the following values - --- for degenerated edges - --- 1. Paves/Pave set(s) - --- 2. Split parts - --- 3. States (3D) for split parts - --- - -uses - - Vertex from TopoDS, - Edge from TopoDS, - Face from TopoDS, - - PPaveFiller from NMTTools, - PaveFiller from NMTTools, - --PDSFiller from NMTTools, - ListOfPaveBlock from BOPTools, - PShapesDataStructure from NMTDS, - IndexedDataMapOfIntegerDEInfo from BOPTools - - -is - --Create (aFiller:out PDSFiller from NMTTools) - -- returns DEProcessor from NMTTools; - ---Purpose: - --- Constructor - --- - Create (aFiller:out PaveFiller from NMTTools) - returns DEProcessor from NMTTools; - ---Purpose: - --- Constructor - --- - Do(me:out); - ---Purpose: - --- Launches the processor - --- - IsDone(me) - returns Boolean from Standard; - ---Purpose: - --- Returns TRUE if it is Ok - --- - --- - --- Private block - --- - --- - FindDegeneratedEdges (me:out) - is protected; - - DoPaves (me:out) - is protected; - - FindPaveBlocks (me:out; - nED:Integer from Standard; - nVD:Integer from Standard; - nFD:Integer from Standard; - aLPB:out ListOfPaveBlock from BOPTools) - is protected; - - FillPaveSet (me:out; - nED:Integer from Standard; - nVD:Integer from Standard; - nFD:Integer from Standard; - aLPB: ListOfPaveBlock from BOPTools) - is protected; - - FillSplitEdgesPool(me:out; - nED:Integer from Standard) - is protected; - - MakeSplitEdges(me:out; - nED:Integer from Standard; - nFD:Integer from Standard) - is protected; - - MakeSplitEdge (me:out; - aS1: Edge from TopoDS; - aF : Face from TopoDS; - aV1: Vertex from TopoDS; - aP1: Real from Standard; - aV2: Vertex from TopoDS; - aP2: Real from Standard; - aNewEdge:out Edge from TopoDS) - is protected; - -fields - - --myDSFiller: PDSFiller from NMTTools is protected; - myFiller : PPaveFiller from NMTTools is protected; - myDS : PShapesDataStructure from NMTDS is protected; - myIsDone : Boolean from Standard is protected; - myDEMap : IndexedDataMapOfIntegerDEInfo from BOPTools is protected; - -end DEProcessor; diff --git a/src/NMTTools/NMTTools_DEProcessor.cxx b/src/NMTTools/NMTTools_DEProcessor.cxx index 0ccdd6ca7..7a1501a38 100644 --- a/src/NMTTools/NMTTools_DEProcessor.cxx +++ b/src/NMTTools/NMTTools_DEProcessor.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,7 +25,7 @@ // Author: Peter KURNEV // // -#include +#include #include @@ -91,8 +91,8 @@ #include //======================================================================= -// function: -// purpose: +// function: +// purpose: //======================================================================= NMTTools_DEProcessor::NMTTools_DEProcessor(NMTTools_PaveFiller& aPaveFiller) : @@ -103,7 +103,7 @@ } //======================================================================= // function: IsDone -// purpose: +// purpose: //======================================================================= Standard_Boolean NMTTools_DEProcessor::IsDone() const { @@ -111,7 +111,7 @@ } //======================================================================= // function: Do -// purpose: +// purpose: //======================================================================= void NMTTools_DEProcessor::Do() { @@ -131,7 +131,7 @@ } //======================================================================= // function: FindDegeneratedEdges -// purpose: +// purpose: //======================================================================= void NMTTools_DEProcessor::FindDegeneratedEdges() { @@ -151,7 +151,7 @@ const TopoDS_Shape aS=myDS->Shape(i); if (aS.ShapeType()==TopAbs_EDGE) { const TopoDS_Edge& aE=TopoDS::Edge(aS); - + if (BRep_Tool::Degenerated(aE)) { iRankE=myDS->Rank(i); aV=TopExp::FirstVertex(aE); @@ -182,7 +182,7 @@ } //======================================================================= // function: DoPaves -// purpose: +// purpose: //======================================================================= void NMTTools_DEProcessor::DoPaves() { @@ -202,7 +202,7 @@ TColStd_ListIteratorOfListOfInteger anIt(nLF); for (; anIt.More(); anIt.Next()) { nFD=anIt.Value(); - + BOPTools_ListOfPaveBlock aLPB; FindPaveBlocks(nED, nVD, nFD, aLPB); // @@ -213,7 +213,7 @@ // FillPaveSet (nED, nVD, nFD, aLPB); } - // + // // Fill aSplitEdges for the edge nED FillSplitEdgesPool(nED); // @@ -224,7 +224,7 @@ } //======================================================================= // function: FindPaveBlocks -// purpose: +// purpose: //======================================================================= void NMTTools_DEProcessor::FindPaveBlocks(const Standard_Integer , const Standard_Integer nVD, @@ -245,7 +245,7 @@ continue; } // - // Split Parts + // Split Parts const BOPTools_ListOfPaveBlock& aLPBSplits=aFF.PaveBlocks(); anIt.Initialize(aLPBSplits); for (; anIt.More(); anIt.Next()) { @@ -267,7 +267,7 @@ } // // Section Parts - Standard_Integer j, aNbCurves; + Standard_Integer j, aNbCurves; // BOPTools_SequenceOfCurves& aSC=aFF.Curves(); aNbCurves=aSC.Length(); @@ -298,7 +298,7 @@ } //======================================================================= // function: FillPaveSet -// purpose: +// purpose: //======================================================================= void NMTTools_DEProcessor::FillPaveSet (const Standard_Integer nED, const Standard_Integer nVD, @@ -313,7 +313,7 @@ // aDT=Precision::PConfusion(); // - BOPTools_PaveSet& aPaveSet= + BOPTools_PaveSet& aPaveSet= (myFiller->ChangePavePool()).ChangeValue(myDS->RefEdge(nED)); // // Clear aPaveSet, aSplitEdges @@ -341,13 +341,13 @@ BOPTools_Pave aPave2 (nVD, aTD2, BooleanOperations_UnknownInterference); aPaveSet.Append(aPave2); // - // Fill other paves + // Fill other paves BOPTools_ListIteratorOfListOfPaveBlock anIt(aLPB); for (; anIt.More(); anIt.Next()) { const BOPTools_PaveBlock& aPB=anIt.Value(); nE=aPB.Edge(); const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE)); - + Handle(Geom2d_Curve) aC2D=BRep_Tool::CurveOnSurface(aE, aDF, aT1, aT2); // // Intersection @@ -367,7 +367,7 @@ bIsDone=aGInter.IsDone(); if(bIsDone) { aNbPoints=aGInter.NbPoints(); - if (aNbPoints) { + if (aNbPoints) { for (j=1; j<=aNbPoints; ++j) { aP2D=aGInter.Point(j).Value(); Handle(Geom2d_Line) aCLDE; @@ -384,7 +384,7 @@ } //aCLDE=Handle(Geom2d_Line)::DownCast(aC2DDE1); //modified by NIZNHY-PKV Thu Mar 20 17:37:37 2008t - + if (aCLDE.IsNull()) { continue; } @@ -393,10 +393,10 @@ aX=ElCLib::Parameter(aLDE, aP2D); // if (fabs (aX-aTD1) < aDT || fabs (aX-aTD2) < aDT) { - continue; + continue; } if (aX < aTD1 || aX > aTD2) { - continue; + continue; } // bRejectFlag=Standard_False; @@ -411,7 +411,7 @@ } } if (bRejectFlag) { - continue; + continue; } // BOPTools_Pave aPave(nVD, aX, BooleanOperations_UnknownInterference); @@ -423,7 +423,7 @@ } //======================================================================= // function: FillSplitEdgesPool -// purpose: +// purpose: //======================================================================= void NMTTools_DEProcessor::FillSplitEdgesPool (const Standard_Integer nED) { @@ -437,7 +437,7 @@ const BOPTools_PavePool& aPavePool=myFiller->PavePool(); BOPTools_PavePool* pPavePool=(BOPTools_PavePool*) &aPavePool; BOPTools_PaveSet& aPaveSet= pPavePool->ChangeValue(myDS->RefEdge(nED)); - + BOPTools_PaveBlockIterator aPBIt(nED, aPaveSet); for (; aPBIt.More(); aPBIt.Next()) { BOPTools_PaveBlock& aPB=aPBIt.Value(); @@ -446,7 +446,7 @@ } //======================================================================= // function: MakeSplitEdges -// purpose: +// purpose: //======================================================================= void NMTTools_DEProcessor::MakeSplitEdges (const Standard_Integer nED, const Standard_Integer nFD) @@ -504,30 +504,30 @@ aPBIt.Initialize(aSplitEdges); for (; aPBIt.More(); aPBIt.Next()) { BOPTools_PaveBlock& aPB=aPBIt.Value(); - + const BOPTools_Pave& aPave1=aPB.Pave1(); nV1=aPave1.Index(); t1=aPave1.Param(); aV1=TopoDS::Vertex(myDS->GetShape(nV1)); aV1.Orientation(TopAbs_FORWARD); - + const BOPTools_Pave& aPave2=aPB.Pave2(); nV2=aPave2.Index(); t2=aPave2.Param(); aV2=TopoDS::Vertex(myDS->GetShape(nV2)); aV2.Orientation(TopAbs_REVERSED); - - MakeSplitEdge(aDE, aDF, aV1, t1, aV2, t2, aESplit); + + MakeSplitEdge(aDE, aDF, aV1, t1, aV2, t2, aESplit); // // Add Split Part of the Original Edge to the DS BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - + anASSeq.SetNewSuccessor(nV1); anASSeq.SetNewOrientation(aV1.Orientation()); - + anASSeq.SetNewSuccessor(nV2); anASSeq.SetNewOrientation(aV2.Orientation()); - + myDS->InsertShapeAndAncestorsSuccessors(aESplit, anASSeq); aNewShapeIndex=myDS->NumberOfInsertedShapes(); myDS->SetState(aNewShapeIndex, BooleanOperations_UNKNOWN); @@ -539,7 +539,7 @@ } //======================================================================= // function: MakeSplitEdge -// purpose: +// purpose: //======================================================================= void NMTTools_DEProcessor::MakeSplitEdge (const TopoDS_Edge& aE, const TopoDS_Face& aF, diff --git a/src/NMTTools/NMTTools_DEProcessor.hxx b/src/NMTTools/NMTTools_DEProcessor.hxx index bc79cfc13..e2ee6e089 100644 --- a/src/NMTTools/NMTTools_DEProcessor.hxx +++ b/src/NMTTools/NMTTools_DEProcessor.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,40 +20,23 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_DEProcessor.hxx +// Created: Wed Sep 12 12:10:52 2001 +// Author: Peter KURNEV +// + #ifndef _NMTTools_DEProcessor_HeaderFile #define _NMTTools_DEProcessor_HeaderFile -#ifndef _NMTTools_PPaveFiller_HeaderFile +#include +#include #include -#endif -#ifndef _NMTDS_PShapesDataStructure_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif -#ifndef _BOPTools_IndexedDataMapOfIntegerDEInfo_HeaderFile #include -#endif -#ifndef _Standard_Integer_HeaderFile +#include #include -#endif -#ifndef _Standard_Real_HeaderFile #include -#endif -class NMTTools_PaveFiller; -class BOPTools_ListOfPaveBlock; -class TopoDS_Edge; -class TopoDS_Face; -class TopoDS_Vertex; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif //!
        @@ -64,97 +47,71 @@ class TopoDS_Vertex; //! 2. Split parts
        //! 3. States (3D) for split parts
        //!
        +//======================================================================= +//class : NMTTools_DEProcessor +//purpose : +//======================================================================= class NMTTools_DEProcessor { - public: - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // //! Constructor
        //!
        //! Constructor
        //!
        -Standard_EXPORT NMTTools_DEProcessor(NMTTools_PaveFiller& aFiller); - + Standard_EXPORT + NMTTools_DEProcessor(NMTTools_PaveFiller& aFiller); //! Launches the processor
        -Standard_EXPORT void Do() ; - + Standard_EXPORT + void Do() ; //! Returns TRUE if it is Ok
        -Standard_EXPORT Standard_Boolean IsDone() const; - - + Standard_EXPORT + Standard_Boolean IsDone() const; protected: - - // Methods PROTECTED - // - - -Standard_EXPORT void FindDegeneratedEdges() ; - - -Standard_EXPORT void DoPaves() ; - - -Standard_EXPORT void FindPaveBlocks(const Standard_Integer nED,const Standard_Integer nVD,const Standard_Integer nFD,BOPTools_ListOfPaveBlock& aLPB) ; - - -Standard_EXPORT void FillPaveSet(const Standard_Integer nED,const Standard_Integer nVD,const Standard_Integer nFD,const BOPTools_ListOfPaveBlock& aLPB) ; - - -Standard_EXPORT void FillSplitEdgesPool(const Standard_Integer nED) ; - - -Standard_EXPORT void MakeSplitEdges(const Standard_Integer nED,const Standard_Integer nFD) ; - - -Standard_EXPORT void MakeSplitEdge(const TopoDS_Edge& aS1,const TopoDS_Face& aF,const TopoDS_Vertex& aV1,const Standard_Real aP1,const TopoDS_Vertex& aV2,const Standard_Real aP2,TopoDS_Edge& aNewEdge) ; - - - // Fields PROTECTED - // -NMTTools_PPaveFiller myFiller; -NMTDS_PShapesDataStructure myDS; -Standard_Boolean myIsDone; -BOPTools_IndexedDataMapOfIntegerDEInfo myDEMap; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + Standard_EXPORT + void FindDegeneratedEdges() ; + + Standard_EXPORT + void DoPaves() ; + + Standard_EXPORT + void FindPaveBlocks(const Standard_Integer nED, + const Standard_Integer nVD, + const Standard_Integer nFD, + BOPTools_ListOfPaveBlock& aLPB) ; + + Standard_EXPORT + void FillPaveSet(const Standard_Integer nED, + const Standard_Integer nVD, + const Standard_Integer nFD, + const BOPTools_ListOfPaveBlock& aLPB) ; + + Standard_EXPORT + void FillSplitEdgesPool(const Standard_Integer nED) ; + + Standard_EXPORT + void MakeSplitEdges(const Standard_Integer nED, + const Standard_Integer nFD) ; + + Standard_EXPORT + void MakeSplitEdge(const TopoDS_Edge& aS1, + const TopoDS_Face& aF, + const TopoDS_Vertex& aV1, + const Standard_Real aP1, + const TopoDS_Vertex& aV2, + const Standard_Real aP2, + TopoDS_Edge& aNewEdge) ; + + + NMTTools_PPaveFiller myFiller; + NMTDS_PShapesDataStructure myDS; + Standard_Boolean myIsDone; + BOPTools_IndexedDataMapOfIntegerDEInfo myDEMap; }; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTTools/NMTTools_DEProcessor.ixx b/src/NMTTools/NMTTools_DEProcessor.ixx deleted file mode 100644 index 98a0d822f..000000000 --- a/src/NMTTools/NMTTools_DEProcessor.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTTools/NMTTools_DEProcessor.jxx b/src/NMTTools/NMTTools_DEProcessor.jxx deleted file mode 100644 index 6326daa66..000000000 --- a/src/NMTTools/NMTTools_DEProcessor.jxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_PaveFiller_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _NMTTools_DEProcessor_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx index 991573713..1117b0d7d 100644 --- a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx +++ b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,100 +16,17 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx +// Created: Mon Feb 20 12:24:47 2012 +// Author: +// -#ifndef _NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_HeaderFile -#define _NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_HeaderFile - -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTTools_FaceInfo; -class TColStd_MapIntegerHasher; -class NMTTools_DataMapOfIntegerFaceInfo; -class NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo; +#ifndef NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_HeaderFile +#define NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_HeaderFile -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include +#ifndef NMTTools_DataMapOfIntegerFaceInfo_HeaderFile +#include #endif - -class NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo : public TCollection_BasicMapIterator { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo(); - - -Standard_EXPORT NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo(const NMTTools_DataMapOfIntegerFaceInfo& aMap); - - -Standard_EXPORT void Initialize(const NMTTools_DataMapOfIntegerFaceInfo& aMap) ; - - -Standard_EXPORT const Standard_Integer& Key() const; - - -Standard_EXPORT const NMTTools_FaceInfo& Value() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_0.cxx b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_0.cxx deleted file mode 100644 index 9ded92849..000000000 --- a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_0.cxx +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_FaceInfo_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapOfIntegerFaceInfo_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem NMTTools_FaceInfo -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_Type_() -#define TCollection_DataMap NMTTools_DataMapOfIntegerFaceInfo -#define TCollection_DataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx index a2641b73b..415d7db84 100644 --- a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx +++ b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,100 +16,17 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx +// Created: Mon Feb 20 12:04:52 2012 +// Author: +// -#ifndef _NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#define _NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile - -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class BOPTools_ListOfPaveBlock; -class TColStd_MapIntegerHasher; -class NMTTools_DataMapOfIntegerListOfPaveBlock; -class NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock; +#ifndef NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#define NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include +#ifndef NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile +#include #endif - -class NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock : public TCollection_BasicMapIterator { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock(); - - -Standard_EXPORT NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock(const NMTTools_DataMapOfIntegerListOfPaveBlock& aMap); - - -Standard_EXPORT void Initialize(const NMTTools_DataMapOfIntegerListOfPaveBlock& aMap) ; - - -Standard_EXPORT const Standard_Integer& Key() const; - - -Standard_EXPORT const BOPTools_ListOfPaveBlock& Value() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx deleted file mode 100644 index c27167ad7..000000000 --- a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BOPTools_ListOfPaveBlock -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() -#define TCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock -#define TCollection_DataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx b/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx deleted file mode 100644 index 451a4d7e6..000000000 --- a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo.hxx +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_HeaderFile -#define _NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _NMTTools_FaceInfo_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTTools_FaceInfo; -class TColStd_MapIntegerHasher; -class NMTTools_DataMapOfIntegerFaceInfo; -class NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo; - - - -class NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo(const Standard_Integer& K,const NMTTools_FaceInfo& I,const TCollection_MapNodePtr& n); - - Standard_Integer& Key() const; - - NMTTools_FaceInfo& Value() const; -//Standard_EXPORT ~NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myKey; -NMTTools_FaceInfo myValue; - - -}; - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem NMTTools_FaceInfo -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_Type_() -#define TCollection_DataMap NMTTools_DataMapOfIntegerFaceInfo -#define TCollection_DataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_DataMapNode -#undef TCollection_DataMapNode_hxx -#undef TCollection_DataMapIterator -#undef TCollection_DataMapIterator_hxx -#undef Handle_TCollection_DataMapNode -#undef TCollection_DataMapNode_Type_ -#undef TCollection_DataMap -#undef TCollection_DataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_0.cxx b/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_0.cxx deleted file mode 100644 index e388ec3b9..000000000 --- a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_0.cxx +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _NMTTools_FaceInfo_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapOfIntegerFaceInfo_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_HeaderFile -#include -#endif -//NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo::~NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo", - sizeof(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo) Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo))) { - _anOtherObject = Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)((Handle(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo) ; -} -//Standard_Boolean NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo::~Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo() {} -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem NMTTools_FaceInfo -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_Type_() -#define TCollection_DataMap NMTTools_DataMapOfIntegerFaceInfo -#define TCollection_DataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx deleted file mode 100644 index 7968b4c1f..000000000 --- a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#define _NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class BOPTools_ListOfPaveBlock; -class TColStd_MapIntegerHasher; -class NMTTools_DataMapOfIntegerListOfPaveBlock; -class NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock; - - - -class NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock(const Standard_Integer& K,const BOPTools_ListOfPaveBlock& I,const TCollection_MapNodePtr& n); - - Standard_Integer& Key() const; - - BOPTools_ListOfPaveBlock& Value() const; -//Standard_EXPORT ~NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myKey; -BOPTools_ListOfPaveBlock myValue; - - -}; - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BOPTools_ListOfPaveBlock -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() -#define TCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock -#define TCollection_DataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_DataMapNode -#undef TCollection_DataMapNode_hxx -#undef TCollection_DataMapIterator -#undef TCollection_DataMapIterator_hxx -#undef Handle_TCollection_DataMapNode -#undef TCollection_DataMapNode_Type_ -#undef TCollection_DataMap -#undef TCollection_DataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx deleted file mode 100644 index a49c51a78..000000000 --- a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif -//NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock::~NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock", - sizeof(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock))) { - _anOtherObject = Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)((Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) ; -} -//Standard_Boolean NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock::~Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock() {} -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BOPTools_ListOfPaveBlock -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() -#define TCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock -#define TCollection_DataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_DataMapOfIntegerFaceInfo.hxx b/src/NMTTools/NMTTools_DataMapOfIntegerFaceInfo.hxx index 508c28f1b..7d97931fb 100644 --- a/src/NMTTools/NMTTools_DataMapOfIntegerFaceInfo.hxx +++ b/src/NMTTools/NMTTools_DataMapOfIntegerFaceInfo.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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 @@ -18,140 +15,26 @@ // 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: NMTTools_DataMapOfIntegerFaceInfo.hxx +// Created: Mon Feb 20 12:21:55 2012 +// Author: +// -#ifndef _NMTTools_DataMapOfIntegerFaceInfo_HeaderFile -#define _NMTTools_DataMapOfIntegerFaceInfo_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_NoSuchObject; -class NMTTools_FaceInfo; -class TColStd_MapIntegerHasher; -class NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo; -class NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTTools_DataMapOfIntegerFaceInfo : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_DataMapOfIntegerFaceInfo(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTTools_DataMapOfIntegerFaceInfo& Assign(const NMTTools_DataMapOfIntegerFaceInfo& Other) ; - NMTTools_DataMapOfIntegerFaceInfo& operator =(const NMTTools_DataMapOfIntegerFaceInfo& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTTools_DataMapOfIntegerFaceInfo() -{ - Clear(); -} - - - -Standard_EXPORT Standard_Boolean Bind(const Standard_Integer& K,const NMTTools_FaceInfo& I) ; - - -Standard_EXPORT Standard_Boolean IsBound(const Standard_Integer& K) const; - - -Standard_EXPORT Standard_Boolean UnBind(const Standard_Integer& K) ; - - -Standard_EXPORT const NMTTools_FaceInfo& Find(const Standard_Integer& K) const; - const NMTTools_FaceInfo& operator()(const Standard_Integer& K) const -{ - return Find(K); -} - - - -Standard_EXPORT NMTTools_FaceInfo& ChangeFind(const Standard_Integer& K) ; - NMTTools_FaceInfo& operator()(const Standard_Integer& K) -{ - return ChangeFind(K); -} - -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address Find1 (const Standard_Integer& K) const; - Standard_EXPORT Standard_Address ChangeFind1 (const Standard_Integer& K); -#endif - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTTools_DataMapOfIntegerFaceInfo(const NMTTools_DataMapOfIntegerFaceInfo& Other); - - - // Fields PRIVATE - // - - -}; +#ifndef NMTTools_DataMapOfIntegerFaceInfo_HeaderFile +#define NMTTools_DataMapOfIntegerFaceInfo_HeaderFile +#include +#include +#define _NCollection_MapHasher +#include +typedef NCollection_DataMap NMTTools_DataMapOfIntegerFaceInfo; +typedef NMTTools_DataMapOfIntegerFaceInfo::Iterator NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo; -// other Inline functions and methods (like "C++: function call" methods) -// +#undef _NCollection_MapHasher #endif diff --git a/src/NMTTools/NMTTools_DataMapOfIntegerFaceInfo_0.cxx b/src/NMTTools/NMTTools_DataMapOfIntegerFaceInfo_0.cxx deleted file mode 100644 index f269d905d..000000000 --- a/src/NMTTools/NMTTools_DataMapOfIntegerFaceInfo_0.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_FaceInfo_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem NMTTools_FaceInfo -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo -#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerFaceInfo_Type_() -#define TCollection_DataMap NMTTools_DataMapOfIntegerFaceInfo -#define TCollection_DataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx index 0cc6bde58..805c92eca 100644 --- a/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx +++ b/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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 @@ -18,130 +15,27 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile -#define _NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_NoSuchObject; -class BOPTools_ListOfPaveBlock; -class TColStd_MapIntegerHasher; -class NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock; -class NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTTools_DataMapOfIntegerListOfPaveBlock : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_DataMapOfIntegerListOfPaveBlock(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTTools_DataMapOfIntegerListOfPaveBlock& Assign(const NMTTools_DataMapOfIntegerListOfPaveBlock& Other) ; - NMTTools_DataMapOfIntegerListOfPaveBlock& operator =(const NMTTools_DataMapOfIntegerListOfPaveBlock& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTTools_DataMapOfIntegerListOfPaveBlock() -{ - Clear(); -} - - - -Standard_EXPORT Standard_Boolean Bind(const Standard_Integer& K,const BOPTools_ListOfPaveBlock& I) ; - - -Standard_EXPORT Standard_Boolean IsBound(const Standard_Integer& K) const; - - -Standard_EXPORT Standard_Boolean UnBind(const Standard_Integer& K) ; - - -Standard_EXPORT const BOPTools_ListOfPaveBlock& Find(const Standard_Integer& K) const; - const BOPTools_ListOfPaveBlock& operator()(const Standard_Integer& K) const -{ - return Find(K); -} - - - -Standard_EXPORT BOPTools_ListOfPaveBlock& ChangeFind(const Standard_Integer& K) ; - BOPTools_ListOfPaveBlock& operator()(const Standard_Integer& K) -{ - return ChangeFind(K); -} - -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address Find1 (const Standard_Integer& K) const; - Standard_EXPORT Standard_Address ChangeFind1 (const Standard_Integer& K); -#endif - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTTools_DataMapOfIntegerListOfPaveBlock(const NMTTools_DataMapOfIntegerListOfPaveBlock& Other); - - - // Fields PRIVATE - // +// +// File: NMTTools_DataMapOfIntegerListOfPaveBlock.hxx +// Created: Mon Feb 20 09:27:40 2012 +// Author: +// -}; +#ifndef NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile +#define NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#include +#define _NCollection_MapHasher +#include +typedef NCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock; +typedef NMTTools_DataMapOfIntegerListOfPaveBlock::Iterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock; -// other Inline functions and methods (like "C++: function call" methods) -// +#undef _NCollection_MapHasher #endif diff --git a/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock_0.cxx deleted file mode 100644 index 11dedb9e5..000000000 --- a/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock_0.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem BOPTools_ListOfPaveBlock -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapNode_hxx -#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapIterator_hxx -#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock -#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() -#define TCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock -#define TCollection_DataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_FaceInfo.cdl b/src/NMTTools/NMTTools_FaceInfo.cdl deleted file mode 100644 index 234b304e1..000000000 --- a/src/NMTTools/NMTTools_FaceInfo.cdl +++ /dev/null @@ -1,161 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTTools_FaceInfo.cdl --- Created: Tue Dec 9 12:11:48 2003 --- Author: Peter KURNEV --- --- -class FaceInfo from NMTTools - - ---Purpose: - -uses - MapOfInteger from TColStd, - MapOfPaveBlock from NMTTools ---raises - -is - - Create - returns FaceInfo from NMTTools; - ---C++: inline - ---C++: alias "virtual ~NMTTools_FaceInfo();" - ---Purpose: - --- Empty contructor - --- - - Clear(me:out); - ---Purpose: - --- Clears the contents - - SetIndex(me:out; - theI: Integer from Standard); - ---C++: inline - ---Purpose: - --- Modifier - --- Sets the index of the face - - Index(me) - returns Integer from Standard; - ---C++: inline - ---Purpose: - --- Selector - --- Returns the index of the face - -- - -- In - -- - PaveBlocksIn(me) - returns MapOfPaveBlock from NMTTools; - ---C++: return const & - ---C++: inline - ---Purpose: - --- Selector - --- Returns the pave blocks of the face - --- that have state In - - ChangePaveBlocksIn(me:out) - returns MapOfPaveBlock from NMTTools; - ---C++: return & - ---C++: inline - ---Purpose: - --- Selector/Modifier - --- Returns the pave blocks - -- of the face - --- that have state In - - VerticesIn(me) - returns MapOfInteger from TColStd; - ---C++: return const & - ---C++: inline - ---Purpose: - --- Selector - --- Returns the list of indices for vertices - -- of the face - --- that have state In - - ChangeVerticesIn(me:out) - returns MapOfInteger from TColStd; - ---C++: return & - ---C++: inline - ---Purpose: - --- Selector/Modifier - --- Returns the list of indices for vertices - -- of the face - --- that have state In - -- - -- On - -- - PaveBlocksOn(me) - returns MapOfPaveBlock from NMTTools; - ---C++: return const & - ---C++: inline - ---Purpose: - --- Selector - --- Returns the pave blocks of the face - --- that have state On - - ChangePaveBlocksOn(me:out) - returns MapOfPaveBlock from NMTTools; - ---C++: return & - ---C++: inline - ---Purpose: - --- Selector/Modifier - --- Returns the pave blocks - -- of the face - --- that have state On - VerticesOn(me) - returns MapOfInteger from TColStd; - ---C++: return const & - ---C++: inline - ---Purpose: - --- Selector - --- Returns the list of indices for vertices - -- of the face - --- that have state On - - ChangeVerticesOn(me:out) - returns MapOfInteger from TColStd; - ---C++: return & - ---C++: inline - ---Purpose: - --- Selector/Modifier - --- Returns the list of indices for vertices - -- of the face - --- that have state On - -fields - myIndex : Integer from Standard is protected; - myPaveBlocksIn: MapOfPaveBlock from NMTTools is protected; - myVerticesIn : MapOfInteger from TColStd is protected; - myPaveBlocksOn: MapOfPaveBlock from NMTTools is protected; - myVerticesOn : MapOfInteger from TColStd is protected; - -end FaceInfo; - - - - - - - - diff --git a/src/NMTTools/NMTTools_FaceInfo.cxx b/src/NMTTools/NMTTools_FaceInfo.cxx index 18e913708..26bbcdcd9 100644 --- a/src/NMTTools/NMTTools_FaceInfo.cxx +++ b/src/NMTTools/NMTTools_FaceInfo.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,4 +25,4 @@ // Author: Peter KURNEV // // -#include +#include diff --git a/src/NMTTools/NMTTools_FaceInfo.hxx b/src/NMTTools/NMTTools_FaceInfo.hxx index 305cd2304..6a37fb79c 100644 --- a/src/NMTTools/NMTTools_FaceInfo.hxx +++ b/src/NMTTools/NMTTools_FaceInfo.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,156 +20,105 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_FaceInfo.hxx +// Created: Tue Dec 9 12:23:29 2003 +// Author: Peter KURNEV +// +// #ifndef _NMTTools_FaceInfo_HeaderFile #define _NMTTools_FaceInfo_HeaderFile -#ifndef _Standard_Integer_HeaderFile +#include +#include #include -#endif -#ifndef _NMTTools_MapOfPaveBlock_HeaderFile #include -#endif -#ifndef _TColStd_MapOfInteger_HeaderFile #include -#endif -class NMTTools_MapOfPaveBlock; -class TColStd_MapOfInteger; +#include +#include +//======================================================================= +//class : NMTTools_FaceInfo +//purpose : +//======================================================================= +class NMTTools_FaceInfo { + public: -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif + //! Empty contructor
        + //!
        + NMTTools_FaceInfo(); + virtual ~NMTTools_FaceInfo(); -class NMTTools_FaceInfo { + //! Clears the contents
        + Standard_EXPORT void Clear() ; -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - -//! Empty contructor
        -//!
        -NMTTools_FaceInfo(); -virtual ~NMTTools_FaceInfo(); - - -//! Clears the contents
        -Standard_EXPORT void Clear() ; - -//! Modifier
        -//! Sets the index of the face
        + //! Modifier
        + //! Sets the index of the face
        void SetIndex(const Standard_Integer theI) ; -//! Selector
        -//! Returns the index of the face
        -//!
        -//! In
        -//!
        + //! Selector
        + //! Returns the index of the face
        + //!
        + //! In
        + //!
        Standard_Integer Index() const; -//! Selector
        -//! Returns the pave blocks of the face
        -//! that have state In
        - const NMTTools_MapOfPaveBlock& PaveBlocksIn() const; + //! Selector
        + //! Returns the pave blocks of the face
        + //! that have state In
        + const NMTTools_MapOfPaveBlock& PaveBlocksIn() const; //! Selector/Modifier
        -//! Returns the pave blocks
        -//! of the face
        -//! that have state In
        + //! Returns the pave blocks
        + //! of the face
        + //! that have state In
        NMTTools_MapOfPaveBlock& ChangePaveBlocksIn() ; -//! Selector
        -//! Returns the list of indices for vertices
        -//! of the face
        -//! that have state In
        - const TColStd_MapOfInteger& VerticesIn() const; - -//! Selector/Modifier
        -//! Returns the list of indices for vertices
        -//! of the face
        -//! that have state In
        -//!
        -//! On
        -//!
        + //! Selector
        + //! Returns the list of indices for vertices
        + //! of the face
        + //! that have state In
        + const TColStd_MapOfInteger& VerticesIn() const; + + //! Selector/Modifier
        + //! Returns the list of indices for vertices
        + //! of the face
        + //! that have state In
        + //!
        + //! On
        + //!
        TColStd_MapOfInteger& ChangeVerticesIn() ; -//! Selector
        -//! Returns the pave blocks of the face
        -//! that have state On
        - const NMTTools_MapOfPaveBlock& PaveBlocksOn() const; + //! Selector
        + //! Returns the pave blocks of the face
        + //! that have state On
        + const NMTTools_MapOfPaveBlock& PaveBlocksOn() const; -//! Selector/Modifier
        -//! Returns the pave blocks
        -//! of the face
        -//! that have state On
        + //! Selector/Modifier
        + //! Returns the pave blocks
        + //! of the face
        + //! that have state On
        NMTTools_MapOfPaveBlock& ChangePaveBlocksOn() ; -//! Selector
        -//! Returns the list of indices for vertices
        -//! of the face
        -//! that have state On
        - const TColStd_MapOfInteger& VerticesOn() const; + //! Selector
        + //! Returns the list of indices for vertices
        + //! of the face
        + //! that have state On
        + const TColStd_MapOfInteger& VerticesOn() const; -//! Selector/Modifier
        -//! Returns the list of indices for vertices
        -//! of the face
        -//! that have state On
        + //! Selector/Modifier
        + //! Returns the list of indices for vertices
        + //! of the face
        + //! that have state On
        TColStd_MapOfInteger& ChangeVerticesOn() ; - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // -Standard_Integer myIndex; -NMTTools_MapOfPaveBlock myPaveBlocksIn; -TColStd_MapOfInteger myVerticesIn; -NMTTools_MapOfPaveBlock myPaveBlocksOn; -TColStd_MapOfInteger myVerticesOn; - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - + protected: + Standard_Integer myIndex; + NMTTools_MapOfPaveBlock myPaveBlocksIn; + TColStd_MapOfInteger myVerticesIn; + NMTTools_MapOfPaveBlock myPaveBlocksOn; + TColStd_MapOfInteger myVerticesOn; }; - #include - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTTools/NMTTools_FaceInfo.ixx b/src/NMTTools/NMTTools_FaceInfo.ixx deleted file mode 100644 index 52930fafa..000000000 --- a/src/NMTTools/NMTTools_FaceInfo.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTTools/NMTTools_FaceInfo.jxx b/src/NMTTools/NMTTools_FaceInfo.jxx deleted file mode 100644 index 3dc6b725e..000000000 --- a/src/NMTTools/NMTTools_FaceInfo.jxx +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_MapOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TColStd_MapOfInteger_HeaderFile -#include -#endif -#ifndef _NMTTools_FaceInfo_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_FaceInfo.lxx b/src/NMTTools/NMTTools_FaceInfo.lxx index b92bca7b1..7a14228cc 100644 --- a/src/NMTTools/NMTTools_FaceInfo.lxx +++ b/src/NMTTools/NMTTools_FaceInfo.lxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -26,8 +26,8 @@ // //======================================================================= -//function : -//purpose : +//function : +//purpose : //======================================================================= inline NMTTools_FaceInfo::NMTTools_FaceInfo() : @@ -36,7 +36,7 @@ inline NMTTools_FaceInfo::NMTTools_FaceInfo() } //======================================================================= //function : ~ -//purpose : +//purpose : //======================================================================= inline NMTTools_FaceInfo::~NMTTools_FaceInfo() { @@ -44,7 +44,7 @@ inline NMTTools_FaceInfo::~NMTTools_FaceInfo() } //======================================================================= //function : Clear -//purpose : +//purpose : //======================================================================= inline void NMTTools_FaceInfo::Clear() { @@ -56,7 +56,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : SetIndex -//purpose : +//purpose : //======================================================================= inline void NMTTools_FaceInfo::SetIndex(const Standard_Integer theI) { @@ -64,7 +64,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : Index -//purpose : +//purpose : //======================================================================= inline Standard_Integer NMTTools_FaceInfo::Index()const { @@ -72,7 +72,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : PaveBlockIn -//purpose : +//purpose : //======================================================================= inline const NMTTools_MapOfPaveBlock& NMTTools_FaceInfo::PaveBlocksIn()const { @@ -80,7 +80,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : ChangePaveBlocksIn -//purpose : +//purpose : //======================================================================= inline NMTTools_MapOfPaveBlock& NMTTools_FaceInfo::ChangePaveBlocksIn() { @@ -88,7 +88,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : VerticesIn -//purpose : +//purpose : //======================================================================= inline const TColStd_MapOfInteger& NMTTools_FaceInfo::VerticesIn()const { @@ -96,7 +96,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : ChangeVerticesIn -//purpose : +//purpose : //======================================================================= inline TColStd_MapOfInteger& NMTTools_FaceInfo::ChangeVerticesIn() { @@ -104,7 +104,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : PaveBlockOn -//purpose : +//purpose : //======================================================================= inline const NMTTools_MapOfPaveBlock& NMTTools_FaceInfo::PaveBlocksOn()const { @@ -112,7 +112,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : ChangePaveBlocksOn -//purpose : +//purpose : //======================================================================= inline NMTTools_MapOfPaveBlock& NMTTools_FaceInfo::ChangePaveBlocksOn() { @@ -120,7 +120,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : VerticesOn -//purpose : +//purpose : //======================================================================= inline const TColStd_MapOfInteger& NMTTools_FaceInfo::VerticesOn()const { @@ -128,7 +128,7 @@ inline void NMTTools_FaceInfo::Clear() } //======================================================================= //function : ChangeVerticesOn -//purpose : +//purpose : //======================================================================= inline TColStd_MapOfInteger& NMTTools_FaceInfo::ChangeVerticesOn() { diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx deleted file mode 100644 index 16575b963..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#define _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#include -#endif - -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TColStd_IndexedMapOfInteger; -class TColStd_MapIntegerHasher; -class NMTTools_IndexedDataMapOfIndexedMapOfInteger; - - - -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger(const Standard_Integer& K1,const Standard_Integer K2,const TColStd_IndexedMapOfInteger& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - - Standard_Integer& Key1() const; - - Standard_Integer& Key2() const; - - TCollection_MapNodePtr& Next2() const; - - TColStd_IndexedMapOfInteger& Value() const; -//Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Integer myKey1; -Standard_Integer myKey2; -TColStd_IndexedMapOfInteger myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx deleted file mode 100644 index 33d4a10ed..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile -#include -#endif -//NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger", - sizeof(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger))) { - _anOtherObject = Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)((Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) ; -} -//Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger() {} -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx deleted file mode 100644 index 5593667fb..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#define _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class TopTools_IndexedMapOfShape; -class TopTools_ShapeMapHasher; -class NMTTools_IndexedDataMapOfShapeIndexedMapOfShape; - - - -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape(const TopoDS_Shape& K1,const Standard_Integer K2,const TopTools_IndexedMapOfShape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - - TopoDS_Shape& Key1() const; - - Standard_Integer& Key2() const; - - TCollection_MapNodePtr& Next2() const; - - TopTools_IndexedMapOfShape& Value() const; -//Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Shape myKey1; -Standard_Integer myKey2; -TopTools_IndexedMapOfShape myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem TopTools_IndexedMapOfShape -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx deleted file mode 100644 index 407568dfa..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif -//NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape", - sizeof(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape))) { - _anOtherObject = Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)((Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) ; -} -//Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape() {} -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem TopTools_IndexedMapOfShape -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx deleted file mode 100644 index 0bccbcf36..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#define _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -class TopoDS_Shape; -class BOPTools_PaveBlock; -class TopTools_ShapeMapHasher; -class NMTTools_IndexedDataMapOfShapePaveBlock; - - - -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock(const TopoDS_Shape& K1,const Standard_Integer K2,const BOPTools_PaveBlock& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); - - TopoDS_Shape& Key1() const; - - Standard_Integer& Key2() const; - - TCollection_MapNodePtr& Next2() const; - - BOPTools_PaveBlock& Value() const; -//Standard_EXPORT ~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -TopoDS_Shape myKey1; -Standard_Integer myKey2; -BOPTools_PaveBlock myValue; -TCollection_MapNodePtr myNext2; - - -}; - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem BOPTools_PaveBlock -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMap_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef TheItem -#undef TheItem_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_hxx -#undef Handle_TCollection_IndexedDataMapNode -#undef TCollection_IndexedDataMapNode_Type_ -#undef TCollection_IndexedDataMap -#undef TCollection_IndexedDataMap_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx deleted file mode 100644 index bfbedaa89..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile -#include -#endif -//NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::~NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock", - sizeof(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock))) { - _anOtherObject = Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)((Handle(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) ; -} -//Standard_Boolean NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock::~Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock() {} -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem BOPTools_PaveBlock -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx index 0618f69cc..479a13158 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx +++ b/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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 @@ -18,156 +15,28 @@ // 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: NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx +// Created: Mon Feb 20 09:20:07 2012 +// Author: +// -#ifndef _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile -#define _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TColStd_IndexedMapOfInteger; -class TColStd_MapIntegerHasher; -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTTools_IndexedDataMapOfIndexedMapOfInteger : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_IndexedDataMapOfIndexedMapOfInteger(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTTools_IndexedDataMapOfIndexedMapOfInteger& Assign(const NMTTools_IndexedDataMapOfIndexedMapOfInteger& Other) ; - NMTTools_IndexedDataMapOfIndexedMapOfInteger& operator =(const NMTTools_IndexedDataMapOfIndexedMapOfInteger& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTTools_IndexedDataMapOfIndexedMapOfInteger() -{ - Clear(); -} - - - -Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const TColStd_IndexedMapOfInteger& I) ; - - -Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const TColStd_IndexedMapOfInteger& T) ; - - -Standard_EXPORT void RemoveLast() ; - - -Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; - - -Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; - - -Standard_EXPORT const TColStd_IndexedMapOfInteger& FindFromIndex(const Standard_Integer I) const; - const TColStd_IndexedMapOfInteger& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - - - -Standard_EXPORT TColStd_IndexedMapOfInteger& ChangeFromIndex(const Standard_Integer I) ; - TColStd_IndexedMapOfInteger& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - - - -Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; - - -Standard_EXPORT const TColStd_IndexedMapOfInteger& FindFromKey(const Standard_Integer& K) const; - - -Standard_EXPORT TColStd_IndexedMapOfInteger& ChangeFromKey(const Standard_Integer& K) ; - -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address FindFromKey1 (const Standard_Integer& K) const; - Standard_EXPORT Standard_Address ChangeFromKey1 (const Standard_Integer& K); -#endif - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTTools_IndexedDataMapOfIndexedMapOfInteger(const NMTTools_IndexedDataMapOfIndexedMapOfInteger& Other); - - - // Fields PRIVATE - // +#ifndef NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile +#define NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile -}; +#include +#include +#include +#define _NCollection_MapHasher +#include +typedef NCollection_IndexedDataMap NMTTools_IndexedDataMapOfIndexedMapOfInteger; +#undef _NCollection_MapHasher -// other Inline functions and methods (like "C++: function call" methods) -// #endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx deleted file mode 100644 index b2dd73d71..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapOfIndexedMapOfInteger_0.cxx +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TColStd_IndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TColStd_MapIntegerHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_HeaderFile -#include -#endif - - -#define TheKey Standard_Integer -#define TheKey_hxx -#define TheItem TColStd_IndexedMapOfInteger -#define TheItem_hxx -#define Hasher TColStd_MapIntegerHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfIndexedMapOfInteger -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx index 601854b71..6dbe387cb 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx +++ b/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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 @@ -18,157 +15,33 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -#ifndef _NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#define _NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class TopTools_IndexedMapOfShape; -class TopTools_ShapeMapHasher; -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTTools_IndexedDataMapOfShapeIndexedMapOfShape : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_IndexedDataMapOfShapeIndexedMapOfShape(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Assign(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Other) ; - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& operator =(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTTools_IndexedDataMapOfShapeIndexedMapOfShape() -{ - Clear(); -} - - - -Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const TopTools_IndexedMapOfShape& I) ; - - -Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const TopTools_IndexedMapOfShape& T) ; - - -Standard_EXPORT void RemoveLast() ; - - -Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; - - -Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; - - -Standard_EXPORT const TopTools_IndexedMapOfShape& FindFromIndex(const Standard_Integer I) const; - const TopTools_IndexedMapOfShape& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - +// +// File: NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx +// Created: Mon Feb 20 09:20:07 2012 +// Author: +// +// File: NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx +// Created: Mon Feb 20 11:59:23 2012 +// Author: +// -Standard_EXPORT TopTools_IndexedMapOfShape& ChangeFromIndex(const Standard_Integer I) ; - TopTools_IndexedMapOfShape& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} +#ifndef NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile +#define NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile +#include +#include +#include -Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; +#define _NCollection_MapHasher +#include -Standard_EXPORT const TopTools_IndexedMapOfShape& FindFromKey(const TopoDS_Shape& K) const; +typedef NCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapeIndexedMapOfShape; +#undef _NCollection_MapHasher -Standard_EXPORT TopTools_IndexedMapOfShape& ChangeFromKey(const TopoDS_Shape& K) ; -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address FindFromKey1 (const TopoDS_Shape& K) const; - Standard_EXPORT Standard_Address ChangeFromKey1 (const TopoDS_Shape& K); #endif -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTTools_IndexedDataMapOfShapeIndexedMapOfShape(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx deleted file mode 100644 index 6a850b471..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_0.cxx +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif - - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem TopTools_IndexedMapOfShape -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapeIndexedMapOfShape -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx index 4f3c1abc1..db2546036 100644 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx +++ b/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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 @@ -18,157 +15,26 @@ // 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: NMTTools_IndexedDataMapOfShapePaveBlock.hxx +// Created: Mon Feb 20 11:55:34 2012 +// Author: +// -#ifndef _NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile -#define _NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif - -class Standard_DomainError; -class Standard_OutOfRange; -class Standard_NoSuchObject; -class TopoDS_Shape; -class BOPTools_PaveBlock; -class TopTools_ShapeMapHasher; -class NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock; - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - -#include - -class NMTTools_IndexedDataMapOfShapePaveBlock : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_IndexedDataMapOfShapePaveBlock(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTTools_IndexedDataMapOfShapePaveBlock& Assign(const NMTTools_IndexedDataMapOfShapePaveBlock& Other) ; - NMTTools_IndexedDataMapOfShapePaveBlock& operator =(const NMTTools_IndexedDataMapOfShapePaveBlock& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTTools_IndexedDataMapOfShapePaveBlock() -{ - Clear(); -} - - - -Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const BOPTools_PaveBlock& I) ; - - -Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const BOPTools_PaveBlock& T) ; - - -Standard_EXPORT void RemoveLast() ; - - -Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; - - -Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; - - -Standard_EXPORT const BOPTools_PaveBlock& FindFromIndex(const Standard_Integer I) const; - const BOPTools_PaveBlock& operator ()(const Standard_Integer I) const -{ - return FindFromIndex(I); -} - - - -Standard_EXPORT BOPTools_PaveBlock& ChangeFromIndex(const Standard_Integer I) ; - BOPTools_PaveBlock& operator ()(const Standard_Integer I) -{ - return ChangeFromIndex(I); -} - - - -Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; - - -Standard_EXPORT const BOPTools_PaveBlock& FindFromKey(const TopoDS_Shape& K) const; - - -Standard_EXPORT BOPTools_PaveBlock& ChangeFromKey(const TopoDS_Shape& K) ; - -#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version - Standard_EXPORT Standard_Address FindFromKey1 (const TopoDS_Shape& K) const; - Standard_EXPORT Standard_Address ChangeFromKey1 (const TopoDS_Shape& K); -#endif - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTTools_IndexedDataMapOfShapePaveBlock(const NMTTools_IndexedDataMapOfShapePaveBlock& Other); - - - // Fields PRIVATE - // - - -}; +#ifndef NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile +#define NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile +#include +#include +#include +#define _NCollection_MapHasher +#include +typedef NCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapePaveBlock; -// other Inline functions and methods (like "C++: function call" methods) -// +#undef _NCollection_MapHasher #endif diff --git a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx b/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx deleted file mode 100644 index 0b1fc0cb1..000000000 --- a/src/NMTTools/NMTTools_IndexedDataMapOfShapePaveBlock_0.cxx +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _Standard_OutOfRange_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TopTools_ShapeMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_HeaderFile -#include -#endif - - -#define TheKey TopoDS_Shape -#define TheKey_hxx -#define TheItem BOPTools_PaveBlock -#define TheItem_hxx -#define Hasher TopTools_ShapeMapHasher -#define Hasher_hxx -#define TCollection_IndexedDataMapNode NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_hxx -#define Handle_TCollection_IndexedDataMapNode Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMapNode_Type_() NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_Type_() -#define TCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapePaveBlock -#define TCollection_IndexedDataMap_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx index 18a7ac7d9..160530caf 100644 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx +++ b/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,126 +16,16 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_ListIteratorOfListOfCommonBlock.hxx +// Created: Mon Feb 20 11:25:23 2012 +// Author: +// -#ifndef _NMTTools_ListIteratorOfListOfCommonBlock_HeaderFile -#define _NMTTools_ListIteratorOfListOfCommonBlock_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTTools_ListOfCommonBlock; -class NMTTools_CommonBlock; -class NMTTools_ListNodeOfListOfCommonBlock; - +#ifndef NMTDS_ListIteratorOfListOfCommonBlock_HeaderFile +#define NMTDS_ListIteratorOfListOfCommonBlock_HeaderFile -#ifndef _Standard_HeaderFile -#include +#ifndef NMTTools_ListOfCommonBlock_HeaderFile +#include #endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTTools_ListIteratorOfListOfCommonBlock { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_ListIteratorOfListOfCommonBlock(); - - -Standard_EXPORT NMTTools_ListIteratorOfListOfCommonBlock(const NMTTools_ListOfCommonBlock& L); - - -Standard_EXPORT void Initialize(const NMTTools_ListOfCommonBlock& L) ; - - Standard_Boolean More() const; - - -Standard_EXPORT void Next() ; - - -Standard_EXPORT NMTTools_CommonBlock& Value() const; - - -friend class NMTTools_ListOfCommonBlock; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - #endif diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx deleted file mode 100644 index 7e15ab38c..000000000 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCommonBlock_0.cxx +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif - - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx index be07b971d..0a1b3ca3d 100644 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx +++ b/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,126 +16,16 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTDS_ListIteratorOfListOfCoupleOfShape.hxx +// Created: Mon Feb 20 11:25:23 2012 +// Author: +// -#ifndef _NMTTools_ListIteratorOfListOfCoupleOfShape_HeaderFile -#define _NMTTools_ListIteratorOfListOfCoupleOfShape_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoMoreObject; -class Standard_NoSuchObject; -class NMTTools_ListOfCoupleOfShape; -class NMTTools_CoupleOfShape; -class NMTTools_ListNodeOfListOfCoupleOfShape; - +#ifndef NMTDS_ListIteratorOfListOfCoupleOfShape_HeaderFile +#define NMTDS_ListIteratorOfListOfCoupleOfShape_HeaderFile -#ifndef _Standard_HeaderFile -#include +#ifndef NMTTools_ListOfCoupleOfShape_HeaderFile +#include #endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTTools_ListIteratorOfListOfCoupleOfShape { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_ListIteratorOfListOfCoupleOfShape(); - - -Standard_EXPORT NMTTools_ListIteratorOfListOfCoupleOfShape(const NMTTools_ListOfCoupleOfShape& L); - - -Standard_EXPORT void Initialize(const NMTTools_ListOfCoupleOfShape& L) ; - - Standard_Boolean More() const; - - -Standard_EXPORT void Next() ; - - -Standard_EXPORT NMTTools_CoupleOfShape& Value() const; - - -friend class NMTTools_ListOfCoupleOfShape; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Standard_Address current; -Standard_Address previous; - - -}; - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - #endif diff --git a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx b/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx deleted file mode 100644 index 8b0202304..000000000 --- a/src/NMTTools/NMTTools_ListIteratorOfListOfCoupleOfShape_0.cxx +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoMoreObject_HeaderFile -#include -#endif -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif - - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx b/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx deleted file mode 100644 index d31ba005b..000000000 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock.hxx +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#define _NMTTools_ListNodeOfListOfCommonBlock_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif - -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTTools_CommonBlock; -class NMTTools_ListOfCommonBlock; -class NMTTools_ListIteratorOfListOfCommonBlock; - - - -class NMTTools_ListNodeOfListOfCommonBlock : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTTools_ListNodeOfListOfCommonBlock(const NMTTools_CommonBlock& I,const TCollection_MapNodePtr& n); - - NMTTools_CommonBlock& Value() const; -//Standard_EXPORT ~NMTTools_ListNodeOfListOfCommonBlock(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -NMTTools_CommonBlock myValue; - - -}; - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx b/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx deleted file mode 100644 index df093d2bd..000000000 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCommonBlock_0.cxx +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_ListIteratorOfListOfCommonBlock_HeaderFile -#include -#endif -//NMTTools_ListNodeOfListOfCommonBlock::~NMTTools_ListNodeOfListOfCommonBlock() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_ListNodeOfListOfCommonBlock_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_ListNodeOfListOfCommonBlock", - sizeof(NMTTools_ListNodeOfListOfCommonBlock), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_ListNodeOfListOfCommonBlock) Handle(NMTTools_ListNodeOfListOfCommonBlock)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_ListNodeOfListOfCommonBlock) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock))) { - _anOtherObject = Handle(NMTTools_ListNodeOfListOfCommonBlock)((Handle(NMTTools_ListNodeOfListOfCommonBlock)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_ListNodeOfListOfCommonBlock::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock) ; -} -//Standard_Boolean NMTTools_ListNodeOfListOfCommonBlock::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTTools_ListNodeOfListOfCommonBlock) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTTools_ListNodeOfListOfCommonBlock::~Handle_NMTTools_ListNodeOfListOfCommonBlock() {} -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx deleted file mode 100644 index 2e6b1dd8e..000000000 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape.hxx +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#define _NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif - -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class NMTTools_CoupleOfShape; -class NMTTools_ListOfCoupleOfShape; -class NMTTools_ListIteratorOfListOfCoupleOfShape; - - - -class NMTTools_ListNodeOfListOfCoupleOfShape : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTTools_ListNodeOfListOfCoupleOfShape(const NMTTools_CoupleOfShape& I,const TCollection_MapNodePtr& n); - - NMTTools_CoupleOfShape& Value() const; -//Standard_EXPORT ~NMTTools_ListNodeOfListOfCoupleOfShape(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -NMTTools_CoupleOfShape myValue; - - -}; - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx b/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx deleted file mode 100644 index a51490161..000000000 --- a/src/NMTTools/NMTTools_ListNodeOfListOfCoupleOfShape_0.cxx +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_ListIteratorOfListOfCoupleOfShape_HeaderFile -#include -#endif -//NMTTools_ListNodeOfListOfCoupleOfShape::~NMTTools_ListNodeOfListOfCoupleOfShape() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_ListNodeOfListOfCoupleOfShape", - sizeof(NMTTools_ListNodeOfListOfCoupleOfShape), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_ListNodeOfListOfCoupleOfShape) Handle(NMTTools_ListNodeOfListOfCoupleOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_ListNodeOfListOfCoupleOfShape) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape))) { - _anOtherObject = Handle(NMTTools_ListNodeOfListOfCoupleOfShape)((Handle(NMTTools_ListNodeOfListOfCoupleOfShape)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_ListNodeOfListOfCoupleOfShape::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape) ; -} -//Standard_Boolean NMTTools_ListNodeOfListOfCoupleOfShape::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTTools_ListNodeOfListOfCoupleOfShape) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTTools_ListNodeOfListOfCoupleOfShape::~Handle_NMTTools_ListNodeOfListOfCoupleOfShape() {} -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListOfCommonBlock.hxx b/src/NMTTools/NMTTools_ListOfCommonBlock.hxx index a257de981..ebca6d403 100644 --- a/src/NMTTools/NMTTools_ListOfCommonBlock.hxx +++ b/src/NMTTools/NMTTools_ListOfCommonBlock.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,180 +16,18 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_ListOfCommonBlock.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#define _NMTTools_ListOfCommonBlock_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTTools_ListIteratorOfListOfCommonBlock; -class NMTTools_CommonBlock; -class NMTTools_ListNodeOfListOfCommonBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTTools_ListOfCommonBlock { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_ListOfCommonBlock(); - - -Standard_EXPORT void Assign(const NMTTools_ListOfCommonBlock& Other) ; - void operator=(const NMTTools_ListOfCommonBlock& Other) -{ - Assign(Other); -} - - - -Standard_EXPORT Standard_Integer Extent() const; - - -Standard_EXPORT void Clear() ; -~NMTTools_ListOfCommonBlock() -{ - Clear(); -} - - - Standard_Boolean IsEmpty() const; - - -Standard_EXPORT void Prepend(const NMTTools_CommonBlock& I) ; - - -Standard_EXPORT void Prepend(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& theIt) ; - - -Standard_EXPORT void Prepend(NMTTools_ListOfCommonBlock& Other) ; - - -Standard_EXPORT void Append(const NMTTools_CommonBlock& I) ; - - -Standard_EXPORT void Append(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& theIt) ; - - -Standard_EXPORT void Append(NMTTools_ListOfCommonBlock& Other) ; - +#ifndef NMTTools_ListOfCommonBlock_HeaderFile +#define NMTTools_ListOfCommonBlock_HeaderFile -Standard_EXPORT NMTTools_CommonBlock& First() const; - - -Standard_EXPORT NMTTools_CommonBlock& Last() const; - - -Standard_EXPORT void RemoveFirst() ; - - -Standard_EXPORT void Remove(NMTTools_ListIteratorOfListOfCommonBlock& It) ; - - -Standard_EXPORT void InsertBefore(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& It) ; - - -Standard_EXPORT void InsertBefore(NMTTools_ListOfCommonBlock& Other,NMTTools_ListIteratorOfListOfCommonBlock& It) ; - - -Standard_EXPORT void InsertAfter(const NMTTools_CommonBlock& I,NMTTools_ListIteratorOfListOfCommonBlock& It) ; - - -Standard_EXPORT void InsertAfter(NMTTools_ListOfCommonBlock& Other,NMTTools_ListIteratorOfListOfCommonBlock& It) ; - - -friend class NMTTools_ListIteratorOfListOfCommonBlock; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTTools_ListOfCommonBlock(const NMTTools_ListOfCommonBlock& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// +#include +#include +typedef NCollection_List NMTTools_ListOfCommonBlock; +typedef NMTTools_ListOfCommonBlock::Iterator NMTTools_ListIteratorOfListOfCommonBlock; #endif diff --git a/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx b/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx deleted file mode 100644 index fc5d50f37..000000000 --- a/src/NMTTools/NMTTools_ListOfCommonBlock_0.cxx +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_ListIteratorOfListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_ListNodeOfListOfCommonBlock_HeaderFile -#include -#endif - - -#define Item NMTTools_CommonBlock -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCommonBlock -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCommonBlock -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCommonBlock_Type_() -#define TCollection_List NMTTools_ListOfCommonBlock -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx b/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx index d5138fc47..6660a46f2 100644 --- a/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx +++ b/src/NMTTools/NMTTools_ListOfCoupleOfShape.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,180 +16,18 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_ListOfCoupleOfShape.hxx +// Created: Mon Feb 20 07:27:34 2012 +// Author: +// -#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile -#define _NMTTools_ListOfCoupleOfShape_HeaderFile - -#ifndef _Standard_Address_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class NMTTools_ListIteratorOfListOfCoupleOfShape; -class NMTTools_CoupleOfShape; -class NMTTools_ListNodeOfListOfCoupleOfShape; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTTools_ListOfCoupleOfShape { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_ListOfCoupleOfShape(); - - -Standard_EXPORT void Assign(const NMTTools_ListOfCoupleOfShape& Other) ; - void operator=(const NMTTools_ListOfCoupleOfShape& Other) -{ - Assign(Other); -} - - - -Standard_EXPORT Standard_Integer Extent() const; - - -Standard_EXPORT void Clear() ; -~NMTTools_ListOfCoupleOfShape() -{ - Clear(); -} - - - Standard_Boolean IsEmpty() const; - - -Standard_EXPORT void Prepend(const NMTTools_CoupleOfShape& I) ; - - -Standard_EXPORT void Prepend(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& theIt) ; - - -Standard_EXPORT void Prepend(NMTTools_ListOfCoupleOfShape& Other) ; - - -Standard_EXPORT void Append(const NMTTools_CoupleOfShape& I) ; - - -Standard_EXPORT void Append(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& theIt) ; - - -Standard_EXPORT void Append(NMTTools_ListOfCoupleOfShape& Other) ; - +#ifndef NMTTools_ListOfCoupleOfShape_HeaderFile +#define NMTTools_ListOfCoupleOfShape_HeaderFile -Standard_EXPORT NMTTools_CoupleOfShape& First() const; - - -Standard_EXPORT NMTTools_CoupleOfShape& Last() const; - - -Standard_EXPORT void RemoveFirst() ; - - -Standard_EXPORT void Remove(NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; - - -Standard_EXPORT void InsertBefore(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; - - -Standard_EXPORT void InsertBefore(NMTTools_ListOfCoupleOfShape& Other,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; - - -Standard_EXPORT void InsertAfter(const NMTTools_CoupleOfShape& I,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; - - -Standard_EXPORT void InsertAfter(NMTTools_ListOfCoupleOfShape& Other,NMTTools_ListIteratorOfListOfCoupleOfShape& It) ; - - -friend class NMTTools_ListIteratorOfListOfCoupleOfShape; - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTTools_ListOfCoupleOfShape(const NMTTools_ListOfCoupleOfShape& Other); - - - // Fields PRIVATE - // -Standard_Address myFirst; -Standard_Address myLast; - - -}; - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx - -#include - -#undef Item -#undef Item_hxx -#undef TCollection_ListNode -#undef TCollection_ListNode_hxx -#undef TCollection_ListIterator -#undef TCollection_ListIterator_hxx -#undef Handle_TCollection_ListNode -#undef TCollection_ListNode_Type_ -#undef TCollection_List -#undef TCollection_List_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// +#include +#include +typedef NCollection_List NMTTools_ListOfCoupleOfShape; +typedef NMTTools_ListOfCoupleOfShape::Iterator NMTTools_ListIteratorOfListOfCoupleOfShape; #endif diff --git a/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx b/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx deleted file mode 100644 index 365d2a022..000000000 --- a/src/NMTTools/NMTTools_ListOfCoupleOfShape_0.cxx +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _NMTTools_ListIteratorOfListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_ListNodeOfListOfCoupleOfShape_HeaderFile -#include -#endif - - -#define Item NMTTools_CoupleOfShape -#define Item_hxx -#define TCollection_ListNode NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_hxx -#define TCollection_ListIterator NMTTools_ListIteratorOfListOfCoupleOfShape -#define TCollection_ListIterator_hxx -#define Handle_TCollection_ListNode Handle_NMTTools_ListNodeOfListOfCoupleOfShape -#define TCollection_ListNode_Type_() NMTTools_ListNodeOfListOfCoupleOfShape_Type_() -#define TCollection_List NMTTools_ListOfCoupleOfShape -#define TCollection_List_hxx -#include - diff --git a/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock.hxx b/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock.hxx index a48f4ab3d..bf94f3757 100644 --- a/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock.hxx +++ b/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,94 +16,17 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_MapIteratorOfMapOfPaveBlock.hxx +// Created: Mon Feb 20 11:47:30 2012 +// Author: +// -#ifndef _NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile -#define _NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile -#ifndef _TCollection_BasicMapIterator_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile -#include -#endif -class Standard_NoSuchObject; -class BOPTools_PaveBlock; -class BOPTools_PaveBlockMapHasher; -class NMTTools_MapOfPaveBlock; -class NMTTools_StdMapNodeOfMapOfPaveBlock; +#ifndef NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile +#define NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include +#ifndef NMTTools_MapOfPaveBlock_HeaderFile +#include #endif - -class NMTTools_MapIteratorOfMapOfPaveBlock : public TCollection_BasicMapIterator { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_MapIteratorOfMapOfPaveBlock(); - - -Standard_EXPORT NMTTools_MapIteratorOfMapOfPaveBlock(const NMTTools_MapOfPaveBlock& aMap); - - -Standard_EXPORT void Initialize(const NMTTools_MapOfPaveBlock& aMap) ; - - -Standard_EXPORT const BOPTools_PaveBlock& Key() const; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - - #endif diff --git a/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx deleted file mode 100644 index 70bc6a305..000000000 --- a/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_NoSuchObject_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlockMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_MapOfPaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile -#include -#endif - - -#define TheKey BOPTools_PaveBlock -#define TheKey_hxx -#define Hasher BOPTools_PaveBlockMapHasher -#define Hasher_hxx -#define TCollection_StdMapNode NMTTools_StdMapNodeOfMapOfPaveBlock -#define TCollection_StdMapNode_hxx -#define TCollection_MapIterator NMTTools_MapIteratorOfMapOfPaveBlock -#define TCollection_MapIterator_hxx -#define Handle_TCollection_StdMapNode Handle_NMTTools_StdMapNodeOfMapOfPaveBlock -#define TCollection_StdMapNode_Type_() NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() -#define TCollection_Map NMTTools_MapOfPaveBlock -#define TCollection_Map_hxx -#include - diff --git a/src/NMTTools/NMTTools_MapOfPaveBlock.hxx b/src/NMTTools/NMTTools_MapOfPaveBlock.hxx index e35192913..9def69219 100644 --- a/src/NMTTools/NMTTools_MapOfPaveBlock.hxx +++ b/src/NMTTools/NMTTools_MapOfPaveBlock.hxx @@ -1,7 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&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-2012 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,121 +17,24 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#ifndef _NMTTools_MapOfPaveBlock_HeaderFile -#define _NMTTools_MapOfPaveBlock_HeaderFile - -#ifndef _TCollection_BasicMap_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile -#include -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -class Standard_DomainError; -class BOPTools_PaveBlock; -class BOPTools_PaveBlockMapHasher; -class NMTTools_StdMapNodeOfMapOfPaveBlock; -class NMTTools_MapIteratorOfMapOfPaveBlock; - - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Standard_Macro_HeaderFile -#include -#endif - - -class NMTTools_MapOfPaveBlock : public TCollection_BasicMap { - -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - // Methods PUBLIC - // - - -Standard_EXPORT NMTTools_MapOfPaveBlock(const Standard_Integer NbBuckets = 1); - - -Standard_EXPORT NMTTools_MapOfPaveBlock& Assign(const NMTTools_MapOfPaveBlock& Other) ; - NMTTools_MapOfPaveBlock& operator =(const NMTTools_MapOfPaveBlock& Other) -{ - return Assign(Other); -} - - - -Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; - - -Standard_EXPORT void Clear() ; -~NMTTools_MapOfPaveBlock() -{ - Clear(); -} - +// File: NMTTools_MapOfPaveBlock.hxx +// Created: Mon Feb 20 08:19:07 2012 +// Author: +// -Standard_EXPORT Standard_Boolean Add(const BOPTools_PaveBlock& aKey) ; +#ifndef NMTTools_MapOfPaveBlock_HeaderFile +#define NMTTools_MapOfPaveBlock_HeaderFile +#include +#include -Standard_EXPORT Standard_Boolean Contains(const BOPTools_PaveBlock& aKey) const; +#define _NCollection_MapHasher +#include +typedef NCollection_Map NMTTools_MapOfPaveBlock; +typedef NMTTools_MapOfPaveBlock::Iterator NMTTools_MapIteratorOfMapOfPaveBlock; -Standard_EXPORT Standard_Boolean Remove(const BOPTools_PaveBlock& aKey) ; - - - - - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - -Standard_EXPORT NMTTools_MapOfPaveBlock(const NMTTools_MapOfPaveBlock& Other); - - - // Fields PRIVATE - // - - -}; - - - - - -// other Inline functions and methods (like "C++: function call" methods) -// - +#undef _NCollection_MapHasher #endif diff --git a/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx deleted file mode 100644 index a23c136c3..000000000 --- a/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_DomainError_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlockMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile -#include -#endif - - -#define TheKey BOPTools_PaveBlock -#define TheKey_hxx -#define Hasher BOPTools_PaveBlockMapHasher -#define Hasher_hxx -#define TCollection_StdMapNode NMTTools_StdMapNodeOfMapOfPaveBlock -#define TCollection_StdMapNode_hxx -#define TCollection_MapIterator NMTTools_MapIteratorOfMapOfPaveBlock -#define TCollection_MapIterator_hxx -#define Handle_TCollection_StdMapNode Handle_NMTTools_StdMapNodeOfMapOfPaveBlock -#define TCollection_StdMapNode_Type_() NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() -#define TCollection_Map NMTTools_MapOfPaveBlock -#define TCollection_Map_hxx -#include - diff --git a/src/NMTTools/NMTTools_PPaveFiller.hxx b/src/NMTTools/NMTTools_PPaveFiller.hxx index 469dfb9ec..516d71f52 100644 --- a/src/NMTTools/NMTTools_PPaveFiller.hxx +++ b/src/NMTTools/NMTTools_PPaveFiller.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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,11 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File: NMTTools_PPaveFiller.hxx +// Created: Tue Dec 9 12:23:29 2003 +// Author: Peter KURNEV +// +// #ifndef _NMTTools_PPaveFiller_HeaderFile #define _NMTTools_PPaveFiller_HeaderFile diff --git a/src/NMTTools/NMTTools_PaveFiller.cdl b/src/NMTTools/NMTTools_PaveFiller.cdl deleted file mode 100644 index 350f48e87..000000000 --- a/src/NMTTools/NMTTools_PaveFiller.cdl +++ /dev/null @@ -1,538 +0,0 @@ --- 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 --- --- 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: NMTTools_PaveFiller.cdl --- Created: --- Author: Peter KURNEV --- --- -class PaveFiller from NMTTools - - ---Purpose: - -uses - DataMapOfIntegerInteger from TColStd, - ListOfInteger from TColStd, - MapOfInteger from TColStd, - - Pnt from gp, - ShapeEnum from TopAbs, - Vertex from TopoDS, - Face from TopoDS, - Shape from TopoDS, - Edge from TopoDS, - ListOfShape from TopTools, - DataMapOfShapeShape from TopTools, - - Context from IntTools, - ShrunkRange from IntTools, - - IndexedDataMapOfShapeInteger from BooleanOperations, - - PavePool from BOPTools, - PaveBlock from BOPTools, - ListOfPaveBlock from BOPTools, - SplitShapesPool from BOPTools, - Pave from BOPTools, - PaveSet from BOPTools, - Curve from BOPTools, - SSInterference from BOPTools, - IDMapOfPaveBlockIMapOfPaveBlock from BOPTools, - IDMapOfPaveBlockIMapOfInteger from BOPTools, - SSIntersectionAttribute from BOPTools, - - ShapesDataStructure from NMTDS, - PShapesDataStructure from NMTDS, - Iterator from NMTDS, - PIterator from NMTDS, - PInterfPool from NMTDS, - - CommonBlockPool from NMTTools, - CommonBlock from NMTTools, - ListOfCommonBlock from NMTTools, - DataMapOfIntegerFaceInfo from NMTTools, - IndexedDataMapOfIndexedMapOfInteger from NMTTools - ---raises - -is - Create - returns PaveFiller from NMTTools; - ---C++: alias "Standard_EXPORT virtual ~NMTTools_PaveFiller();" - - - - SetCompositeShape (me:out; - aS: Shape from TopoDS); - - CompositeShape(me) - returns Shape from TopoDS; - ---C++: return const& - - - DS(me:out) - returns PShapesDataStructure from NMTDS; - - DSIt(me:out) - returns PIterator from NMTDS; - - IP(me:out) - returns PInterfPool from NMTDS; - -- - Init (me:out) - is virtual protected; - - Clear (me:out) - is virtual protected; - - Perform (me:out) - is virtual; - - PerformVV (me:out) - is virtual protected; - - PerformVE (me:out) - is virtual protected; - - PerformVF (me:out) - is virtual protected; - - PerformEE (me:out) - is virtual protected; - - PerformEF (me:out) - is virtual protected; - - PerformFF (me:out) - is virtual protected; - - MakeSplitEdges(me:out) - is protected; - - PreparePaveBlocks (me:out; - aType1: ShapeEnum from TopAbs; - aType2: ShapeEnum from TopAbs) - is virtual protected; - - CorrectShrunkRanges(me:out; - aSide: Integer from Standard; - aPave: Pave from BOPTools; - aSR : out ShrunkRange from IntTools) - is protected; - - PreparePaveBlocks (me:out; - anE:Integer from Standard) - is virtual protected; - - - PrepareEdges (me:out) - is virtual protected; - - -- - -- Query section - IsDone(me) - returns Boolean from Standard; - - Context(me) - returns Context from IntTools; - ---C++:return const & - - PavePool(me) - returns PavePool from BOPTools; - ---C++:return const & - - ChangePavePool(me:out) - returns PavePool from BOPTools; - ---C++:return & - - CommonBlockPool(me) - returns CommonBlockPool from NMTTools; - ---C++:return const & - - ChangeCommonBlockPool(me:out) - returns CommonBlockPool from NMTTools; - ---C++:return & - - SplitShapesPool(me) - returns SplitShapesPool from BOPTools; - ---C++:return const & - - ChangeSplitShapesPool(me:out) - returns SplitShapesPool from BOPTools; - ---C++:return & - - FindSDVertex (me; - nV: Integer from Standard) - returns Integer from Standard; - - IsSuccessorsComputed (me; - iF1:Integer from Standard; - iF2:Integer from Standard) - returns Boolean from Standard - is protected; - - IsBlocksCoinside (me; - aPB1:PaveBlock from BOPTools; - aPB2:PaveBlock from BOPTools) - returns Boolean from Standard - is protected; - - RefinePavePool(me:out) - is protected; - - CheckFacePaves(me:out; - aV : Vertex from TopoDS; - nF: Integer from Standard) - returns Integer from Standard - is protected; - - ReplaceCommonBlocks (me:out; - aLCB: ListOfCommonBlock from NMTTools) - is protected; - - RemoveCommonBlocks (me:out; - aLCB: ListOfCommonBlock from NMTTools) - is protected; - - SplitCommonBlocks (me:out; - aLCB: ListOfCommonBlock from NMTTools) - is protected; - - SplitCommonBlock (me:out; - aCB : CommonBlock from NMTTools; - aLCB: out ListOfCommonBlock from NMTTools) - is protected; - - EECommonBlocks(me:out; - aM:IDMapOfPaveBlockIMapOfPaveBlock from BOPTools) - is protected; - - EFCommonBlocks(me:out; - aMapCB:IDMapOfPaveBlockIMapOfInteger from BOPTools) - is protected; - - EENewVertices (me:out; - aM:IndexedDataMapOfShapeInteger from BooleanOperations) - is protected; - - EENewVertices (me:out; - aV:Vertex from TopoDS; - aM:IndexedDataMapOfShapeInteger from BooleanOperations) - is protected; - - EFNewVertices (me:out; - aM:IndexedDataMapOfShapeInteger from BooleanOperations) - is protected; - - EFNewVertices (me:out; - aV:Vertex from TopoDS; - aM:IndexedDataMapOfShapeInteger from BooleanOperations) - is protected; - - UpdateCommonBlocks(me:out) - is protected; - - --modified by NIZNHY-PKV Mon Dec 12 09:12:15 2011f - UpdateCommonBlocks(me:out; - aI:Integer from Standard) - is protected; - --modified by NIZNHY-PKV Mon Dec 12 09:12:21 2011t - - UpdatePaveBlocks(me:out) - is protected; - - SplitIndex(me; - aPB:PaveBlock from BOPTools) - returns Integer from Standard - is protected; - - MakeBlocks(me:out) - is protected; - - -------------------------------------------------------------- - --- - --- Some API FUNCTIONS - --- - SplitsInFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsInFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsOnEdge(me:out; - nE1 :Integer from Standard; - nE2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsOnFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsOnFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - SplitsInFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsInFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsOnEdge(me:out; - nE1 :Integer from Standard; - nE2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsOnFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsOnFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - -- - SplitsFace (me:out; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools) - returns Integer from Standard; - - SplitsFace (me:out; - nF2 :Integer from Standard; - aLs :out ListOfInteger from TColStd) - returns Integer from Standard; - - CommonBlocksFace (me:out; - nF :Integer from Standard; - aLCB:out ListOfCommonBlock from NMTTools) - returns Integer from Standard; - - PrepareFace(me:out; - nF : Integer from Standard; - aF : out Face from TopoDS); - - -- - RealPaveBlock(me:out; - aPB:PaveBlock from BOPTools) - returns PaveBlock from BOPTools; - ---C++: return const & - - RealPaveBlock(me:out; - aPB:PaveBlock from BOPTools; - aLB:out ListOfInteger from TColStd; - aIsCommonBlock:out Integer from Standard) - returns PaveBlock from BOPTools; - ---C++: return const & - - RealSplitsFace (me:out; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - HasRealSplitsInOnFace (me:out; - nF1 :Integer from Standard; - nF2 :Integer from Standard) - returns Boolean from Standard; - - RealSplitsInFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - RealSplitsInFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - RealSplitsInFace(me:out; - nF1 :Integer from Standard; - aLPB :out ListOfPaveBlock from BOPTools); - - RealSplitsOnEdge(me:out; - nE1 :Integer from Standard; - nE2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - RealSplitsOnFace(me:out; - nE1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - RealSplitsOnFace(me:out; - aBid:Integer from Standard; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLs :out ListOfPaveBlock from BOPTools); - - PrepareSetForFace(me:out; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLPB: ListOfPaveBlock from BOPTools; - aPSF:out PaveSet from BOPTools); - - PutPaveOnCurve(me:out; - aPSF: PaveSet from BOPTools; - aTol: Real from Standard; - aBC : out Curve from BOPTools); - - - PutBoundPaveOnCurve (me:out; - aBC :out Curve from BOPTools; - aFF :out SSInterference from BOPTools); - - PutBoundPaveOnCurve (me:out; - aP : Pnt from gp; - aT : Real from Standard; - aBC :out Curve from BOPTools; - aFF :out SSInterference from BOPTools); - - FindPave (me:out; - aP : Pnt from gp; - aTpV: Real from Standard; - aPS : PaveSet from BOPTools; - aPV :out Pave from BOPTools) - returns Boolean from Standard; - - CheckIntermediatePoint(me:out; - aPB : PaveBlock from BOPTools; - aPBR: PaveBlock from BOPTools; - aTol: Real from Standard) - returns Integer from Standard; - - - IsExistingPaveBlock (me:out; - aPB : PaveBlock from BOPTools; - aLPB: ListOfPaveBlock from BOPTools; - aTol: Real from Standard) - returns Boolean from Standard; - - MakePCurves (me:out); - - PerformVF1(me:out) - is protected; - - MakeAloneVertices(me:out) - is protected; - - AloneVertices(me) - returns IndexedDataMapOfIndexedMapOfInteger from NMTTools; - ---C++: return const & - - IsExistingPaveBlock (me:out; - aPB : PaveBlock from BOPTools; - aLPB: ListOfShape from TopTools; - aTol: Real from Standard) - returns Boolean from Standard; - - -- - CheckCoincidence (me:out; - aPB : PaveBlock from BOPTools; - aLPB: ListOfPaveBlock from BOPTools) - returns Boolean from Standard; - -- - - CheckIntermediatePoint(me:out; - aPB : PaveBlock from BOPTools; - aE : Edge from TopoDS; - aTol: Real from Standard) - returns Integer from Standard; - - SharedEdges(me:out; - nF1 :Integer from Standard; - nF2 :Integer from Standard; - aLNE :out ListOfInteger from TColStd; - aLSE :out ListOfShape from TopTools); - - FuseVertices(me; - aC:Shape from TopoDS; - aDMVV: out DataMapOfShapeShape from TopTools); - -- - TreatPaveBlocks(me:out; - theLCB:out ListOfCommonBlock from NMTTools); - - ChangePavePoolNew(me:out) - returns PavePool from BOPTools; - ---C++:return & - - CheckCoincidence (me:out; - aPB1 : PaveBlock from BOPTools; - aPB2 : PaveBlock from BOPTools) - returns Boolean from Standard; - - FillFaceInfo (me:out) - is protected; - - CorrectTolR3D(me:out; - aFF : SSInterference from BOPTools; - aMVStick: MapOfInteger from TColStd; - aTolR3D: out Real from Standard) - is protected; - - PutClosingPaveOnCurve (me:out; - aBC :out Curve from BOPTools; - aFF :out SSInterference from BOPTools); - -fields - myDS : PShapesDataStructure from NMTDS is protected; - myIsDone : Boolean from Standard is protected; - myNbSources : Integer from Standard is protected; - myNbEdges : Integer from Standard is protected; - - myPavePool : PavePool from BOPTools is protected; - myPavePoolNew : PavePool from BOPTools is protected; - myCommonBlockPool : CommonBlockPool from NMTTools is protected; - mySplitShapesPool : SplitShapesPool from BOPTools is protected; - -- - myContext : Context from IntTools is protected; - mySectionAttribute : SSIntersectionAttribute from BOPTools is protected; - myAloneVertices : IndexedDataMapOfIndexedMapOfInteger from NMTTools is protected; - -- - myVSD : DataMapOfIntegerInteger from TColStd is protected; - myDSIt : PIterator from NMTDS is protected; - myCompositeShape : Shape from TopoDS is protected; - myIP : PInterfPool from NMTDS is protected; - myFaceInfo : DataMapOfIntegerFaceInfo from NMTTools is protected; -end PaveFiller; diff --git a/src/NMTTools/NMTTools_PaveFiller.cxx b/src/NMTTools/NMTTools_PaveFiller.cxx index 8abecf340..b98bc4fa6 100644 --- a/src/NMTTools/NMTTools_PaveFiller.cxx +++ b/src/NMTTools/NMTTools_PaveFiller.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,26 +18,25 @@ // 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: NMTTools_PaveFiller.cxx // Created: Fri Dec 5 14:58:54 2003 // Author: Peter KURNEV - -#include - -#include - -#include - +// +// +#include +// +#include +#include #include +#include #include #include -#include - //======================================================================= // function: NMTTools_PaveFiller::NMTTools_PaveFiller -// purpose: +// purpose: //======================================================================= NMTTools_PaveFiller::NMTTools_PaveFiller() { @@ -50,7 +49,7 @@ } //======================================================================= // function: ~ -// purpose: +// purpose: //======================================================================= NMTTools_PaveFiller::~NMTTools_PaveFiller() { @@ -58,19 +57,19 @@ } //======================================================================= // function: Clear -// purpose: +// purpose: //======================================================================= void NMTTools_PaveFiller::Clear() { if (myDSIt) { delete myDSIt; - } + } if (myDS) { delete myDS; } myDSIt=NULL; myDS=NULL; - + if (myIP) { delete myIP; } @@ -78,7 +77,7 @@ } //======================================================================= // function: SetCompositeShape -// purpose: +// purpose: //======================================================================= void NMTTools_PaveFiller::SetCompositeShape(const TopoDS_Shape& aS) { @@ -86,7 +85,7 @@ } //======================================================================= // function: CompositeShape -// purpose: +// purpose: //======================================================================= const TopoDS_Shape& NMTTools_PaveFiller::CompositeShape()const { @@ -94,7 +93,7 @@ } //======================================================================= // function: DS -// purpose: +// purpose: //======================================================================= NMTDS_PShapesDataStructure NMTTools_PaveFiller::DS() { @@ -102,7 +101,7 @@ } //======================================================================= // function: DSIt -// purpose: +// purpose: //======================================================================= NMTDS_PIterator NMTTools_PaveFiller::DSIt() { @@ -110,7 +109,7 @@ } //======================================================================= // function: IP -// purpose: +// purpose: //======================================================================= NMTDS_PInterfPool NMTTools_PaveFiller::IP() { @@ -118,7 +117,7 @@ } //======================================================================= // function:IsDone -// purpose: +// purpose: //======================================================================= Standard_Boolean NMTTools_PaveFiller::IsDone() const { @@ -126,31 +125,15 @@ } //======================================================================= // function: Context -// purpose: +// purpose: //======================================================================= -#if OCC_VERSION_LARGE > 0x06050200 -const Handle(IntTools_Context)& NMTTools_PaveFiller::Context() const -#else -const IntTools_Context& NMTTools_PaveFiller::Context() const -#endif + const Handle(IntTools_Context)& NMTTools_PaveFiller::Context() const { return myContext; } - -#if OCC_VERSION_LARGE <= 0x06050200 -//======================================================================= -// function: ChangeContext -// purpose: -//======================================================================= -IntTools_Context& NMTTools_PaveFiller::ChangeContext() -{ - return myContext; -} -#endif - //======================================================================= // function: PavePool -// purpose: +// purpose: //======================================================================= const BOPTools_PavePool& NMTTools_PaveFiller::PavePool() const { @@ -158,7 +141,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() } //======================================================================= // function: ChangePavePool -// purpose: +// purpose: //======================================================================= BOPTools_PavePool& NMTTools_PaveFiller::ChangePavePool() { @@ -166,7 +149,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() } //======================================================================= // function: ChangePavePoolNew -// purpose: +// purpose: //======================================================================= BOPTools_PavePool& NMTTools_PaveFiller::ChangePavePoolNew() { @@ -174,7 +157,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() } //======================================================================= // function: CommonBlockPool -// purpose: +// purpose: //======================================================================= const NMTTools_CommonBlockPool& NMTTools_PaveFiller::CommonBlockPool() const { @@ -182,7 +165,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() } //======================================================================= // function: ChangeCommonBlockPool -// purpose: +// purpose: //======================================================================= NMTTools_CommonBlockPool& NMTTools_PaveFiller::ChangeCommonBlockPool() { @@ -190,7 +173,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() } //======================================================================= // function: SplitShapesPool -// purpose: +// purpose: //======================================================================= const BOPTools_SplitShapesPool& NMTTools_PaveFiller::SplitShapesPool() const { @@ -198,7 +181,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() } //======================================================================= // function: ChangeSplitShapesPool -// purpose: +// purpose: //======================================================================= BOPTools_SplitShapesPool& NMTTools_PaveFiller::ChangeSplitShapesPool() { @@ -206,7 +189,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() } //======================================================================= // function: Init -// purpose: +// purpose: //======================================================================= void NMTTools_PaveFiller::Init() { @@ -231,18 +214,16 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() myDS->NumberOfShapesOfTheTool(); myNbEdges=myDS->NbEdges(); // - // 4. + // 4 myIP=new NMTDS_InterfPool; -#if OCC_VERSION_LARGE > 0x06050200 // - // 5. + // 5 myContext=new IntTools_Context; -#endif } //======================================================================= // function: Perform -// purpose: +// purpose: //======================================================================= void NMTTools_PaveFiller::Perform() { @@ -258,7 +239,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() // // 2.VE myPavePool.Resize (myNbEdges); - + PrepareEdges(); PerformVE(); @@ -292,7 +273,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() RefinePavePool(); // myPavePoolNew.Destroy(); - + MakeSplitEdges(); UpdateCommonBlocks(); @@ -304,7 +285,7 @@ IntTools_Context& NMTTools_PaveFiller::ChangeContext() // MakePCurves(); // - // 7.Postprocessing + // 7.Postprocessing UpdatePaveBlocks(); // NMTTools_DEProcessor aDEP(*this); diff --git a/src/NMTTools/NMTTools_PaveFiller.hxx b/src/NMTTools/NMTTools_PaveFiller.hxx index 70d59bcbc..765e5aba3 100644 --- a/src/NMTTools/NMTTools_PaveFiller.hxx +++ b/src/NMTTools/NMTTools_PaveFiller.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,72 +18,62 @@ // 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: NMTTools_PaveFiller.hxx +// Created: Fri Dec 5 14:58:54 2003 +// Author: Peter KURNEV +// +// #ifndef _NMTTools_PaveFiller_HeaderFile #define _NMTTools_PaveFiller_HeaderFile -#include - -#ifndef _Standard_HeaderFile #include -#endif -#ifndef _Standard_Macro_HeaderFile #include -#endif - -#ifndef _NMTDS_PShapesDataStructure_HeaderFile #include -#endif -#ifndef _Standard_Boolean_HeaderFile #include -#endif -#ifndef _Standard_Integer_HeaderFile #include -#endif -#ifndef _BOPTools_PavePool_HeaderFile #include -#endif -#ifndef _NMTTools_CommonBlockPool_HeaderFile #include -#endif -#ifndef _BOPTools_SplitShapesPool_HeaderFile #include -#endif - -#if OCC_VERSION_LARGE > 0x06050200 #include -#else -#include -#endif - -#ifndef _BOPTools_SSIntersectionAttribute_HeaderFile #include -#endif -#ifndef _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile #include -#endif -#ifndef _TColStd_DataMapOfIntegerInteger_HeaderFile #include -#endif -#ifndef _NMTDS_PIterator_HeaderFile #include -#endif -#ifndef _TopoDS_Shape_HeaderFile #include -#endif -#ifndef _NMTDS_PInterfPool_HeaderFile #include -#endif -#ifndef _NMTTools_DataMapOfIntegerFaceInfo_HeaderFile #include -#endif -#ifndef _TopAbs_ShapeEnum_HeaderFile #include -#endif -#ifndef _Standard_Real_HeaderFile +#include #include -#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/* class TopoDS_Shape; class BOPTools_Pave; class IntTools_ShrunkRange; @@ -93,7 +83,6 @@ class BOPTools_SplitShapesPool; class BOPTools_PaveBlock; class TopoDS_Vertex; class NMTTools_ListOfCommonBlock; -class NMTTools_CommonBlock; class BOPTools_IDMapOfPaveBlockIMapOfPaveBlock; class BOPTools_IDMapOfPaveBlockIMapOfInteger; class BooleanOperations_IndexedDataMapOfShapeInteger; @@ -108,248 +97,404 @@ class NMTTools_IndexedDataMapOfIndexedMapOfInteger; class TopTools_ListOfShape; class TopoDS_Edge; class TopTools_DataMapOfShapeShape; -class TColStd_MapOfInteger; +class TCoLSTD_MapOfInteger; +*/ +//======================================================================= +//function : NMTTools_PaveFiller +//purpose : +//======================================================================= class NMTTools_PaveFiller { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } + public: + Standard_EXPORT + NMTTools_PaveFiller(); + Standard_EXPORT + virtual ~NMTTools_PaveFiller(); - Standard_EXPORT NMTTools_PaveFiller(); -Standard_EXPORT virtual ~NMTTools_PaveFiller(); + Standard_EXPORT + void SetCompositeShape(const TopoDS_Shape& aS) ; - Standard_EXPORT void SetCompositeShape(const TopoDS_Shape& aS) ; + Standard_EXPORT + const TopoDS_Shape& CompositeShape() const; - Standard_EXPORT const TopoDS_Shape& CompositeShape() const; + Standard_EXPORT + NMTDS_PShapesDataStructure DS() ; - Standard_EXPORT NMTDS_PShapesDataStructure DS() ; + Standard_EXPORT + NMTDS_PIterator DSIt() ; - Standard_EXPORT NMTDS_PIterator DSIt() ; + Standard_EXPORT + NMTDS_PInterfPool IP() ; - Standard_EXPORT NMTDS_PInterfPool IP() ; - - Standard_EXPORT virtual void Perform() ; - - Standard_EXPORT Standard_Boolean IsDone() const; - -#if OCC_VERSION_LARGE > 0x06050200 - Standard_EXPORT const Handle_IntTools_Context& Context() const; -#else - Standard_EXPORT const IntTools_Context& Context() const; - Standard_EXPORT IntTools_Context& ChangeContext() ; -#endif + Standard_EXPORT + virtual void Perform() ; - Standard_EXPORT const BOPTools_PavePool& PavePool() const; + Standard_EXPORT + Standard_Boolean IsDone() const; - Standard_EXPORT BOPTools_PavePool& ChangePavePool() ; + Standard_EXPORT + const Handle_IntTools_Context& Context() const; - Standard_EXPORT const NMTTools_CommonBlockPool& CommonBlockPool() const; + Standard_EXPORT + const BOPTools_PavePool& PavePool() const; - Standard_EXPORT NMTTools_CommonBlockPool& ChangeCommonBlockPool() ; + Standard_EXPORT + BOPTools_PavePool& ChangePavePool() ; - Standard_EXPORT const BOPTools_SplitShapesPool& SplitShapesPool() const; + Standard_EXPORT + const NMTTools_CommonBlockPool& CommonBlockPool() const; - Standard_EXPORT BOPTools_SplitShapesPool& ChangeSplitShapesPool() ; + Standard_EXPORT + NMTTools_CommonBlockPool& ChangeCommonBlockPool() ; - Standard_EXPORT Standard_Integer FindSDVertex(const Standard_Integer nV) const; + Standard_EXPORT + const BOPTools_SplitShapesPool& SplitShapesPool() const; - Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + Standard_EXPORT + BOPTools_SplitShapesPool& ChangeSplitShapesPool() ; - Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + Standard_EXPORT + Standard_Integer FindSDVertex(const Standard_Integer nV) const; + + Standard_EXPORT + Standard_Integer SplitsInFace(const Standard_Integer aBid, + const Standard_Integer nF1, + const Standard_Integer nF2, + TColStd_ListOfInteger& aLs) ; - Standard_EXPORT Standard_Integer SplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,TColStd_ListOfInteger& aLs) ; + Standard_EXPORT + Standard_Integer SplitsInFace(const Standard_Integer nE1, + const Standard_Integer nF2, + TColStd_ListOfInteger& aLs) ; - Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + Standard_EXPORT + Standard_Integer SplitsOnEdge(const Standard_Integer nE1, + const Standard_Integer nE2, + TColStd_ListOfInteger& aLs) ; + + Standard_EXPORT + Standard_Integer SplitsOnFace(const Standard_Integer nE1, + const Standard_Integer nF2, + TColStd_ListOfInteger& aLs) ; + + Standard_EXPORT + Standard_Integer SplitsOnFace(const Standard_Integer aBid, + const Standard_Integer nF1, + const Standard_Integer nF2, + TColStd_ListOfInteger& aLs) ; + + Standard_EXPORT + Standard_Integer SplitsInFace(const Standard_Integer aBid, + const Standard_Integer nF1, + const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + Standard_Integer SplitsInFace(const Standard_Integer nE1, + const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + Standard_Integer SplitsOnEdge(const Standard_Integer nE1, + const Standard_Integer nE2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + Standard_Integer SplitsOnFace(const Standard_Integer nE1, + const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + Standard_Integer SplitsOnFace(const Standard_Integer aBid, + const Standard_Integer nF1, + const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + Standard_Integer SplitsFace(const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + Standard_Integer SplitsFace(const Standard_Integer nF2, + TColStd_ListOfInteger& aLs) ; + + Standard_EXPORT + Standard_Integer CommonBlocksFace(const Standard_Integer nF, + NMTTools_ListOfCommonBlock& aLCB) ; + + Standard_EXPORT + void PrepareFace(const Standard_Integer nF, + TopoDS_Face& aF) ; + + Standard_EXPORT + const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB) ; + + Standard_EXPORT + const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB, + TColStd_ListOfInteger& aLB, + Standard_Integer& aIsCommonBlock) ; + + Standard_EXPORT + void RealSplitsFace(const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + Standard_Boolean HasRealSplitsInOnFace(const Standard_Integer nF1, + const Standard_Integer nF2) ; + + Standard_EXPORT + void RealSplitsInFace(const Standard_Integer aBid, + const Standard_Integer nF1, + const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + void RealSplitsInFace(const Standard_Integer nE1, + const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + void RealSplitsInFace(const Standard_Integer nF1, + BOPTools_ListOfPaveBlock& aLPB) ; + + Standard_EXPORT + void RealSplitsOnEdge(const Standard_Integer nE1, + const Standard_Integer nE2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + void RealSplitsOnFace(const Standard_Integer nE1, + const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + void RealSplitsOnFace(const Standard_Integer aBid, + const Standard_Integer nF1, + const Standard_Integer nF2, + BOPTools_ListOfPaveBlock& aLs) ; + + Standard_EXPORT + void PrepareSetForFace(const Standard_Integer nF1, + const Standard_Integer nF2, + const BOPTools_ListOfPaveBlock& aLPB, + BOPTools_PaveSet& aPSF) ; + + Standard_EXPORT + void PutPaveOnCurve(const BOPTools_PaveSet& aPSF, + const Standard_Real aTol, + BOPTools_Curve& aBC) ; + + Standard_EXPORT + void PutBoundPaveOnCurve(BOPTools_Curve& aBC, + BOPTools_SSInterference& aFF) ; + + Standard_EXPORT + void PutBoundPaveOnCurve(const gp_Pnt& aP, + const Standard_Real aT, + BOPTools_Curve& aBC, + BOPTools_SSInterference& aFF) ; + + Standard_EXPORT + Standard_Boolean FindPave(const gp_Pnt& aP, + const Standard_Real aTpV, + const BOPTools_PaveSet& aPS, + BOPTools_Pave& aPV) ; + + Standard_EXPORT + Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB, + const BOPTools_PaveBlock& aPBR, + const Standard_Real aTol) ; + + Standard_EXPORT + Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB, + const BOPTools_ListOfPaveBlock& aLPB, + const Standard_Real aTol) ; + + Standard_EXPORT + void MakePCurves() ; + + Standard_EXPORT + const NMTTools_IndexedDataMapOfIndexedMapOfInteger& AloneVertices() const; + + Standard_EXPORT + Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB, + const TopTools_ListOfShape& aLPB, + const Standard_Real aTol) ; - Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + Standard_EXPORT + Standard_Boolean CheckCoincidence(const BOPTools_PaveBlock& aPB, + const BOPTools_ListOfPaveBlock& aLPB) ; - Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB, + const TopoDS_Edge& aE, + const Standard_Real aTol) ; - Standard_EXPORT Standard_Integer SplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + void SharedEdges(const Standard_Integer nF1, + const Standard_Integer nF2, + TColStd_ListOfInteger& aLNE, + TopTools_ListOfShape& aLSE) ; - Standard_EXPORT Standard_Integer SplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + void FuseVertices(const TopoDS_Shape& aC, + TopTools_DataMapOfShapeShape& aDMVV) const; - Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + void TreatPaveBlocks(NMTTools_ListOfCommonBlock& theLCB) ; - Standard_EXPORT Standard_Integer SplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + BOPTools_PavePool& ChangePavePoolNew() ; - Standard_EXPORT Standard_Integer SplitsFace(const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + Standard_Boolean CheckCoincidence(const BOPTools_PaveBlock& aPB1, + const BOPTools_PaveBlock& aPB2) ; - Standard_EXPORT Standard_Integer SplitsFace(const Standard_Integer nF2,TColStd_ListOfInteger& aLs) ; + Standard_EXPORT + void PutClosingPaveOnCurve(BOPTools_Curve& aBC, + BOPTools_SSInterference& aFF) ; - Standard_EXPORT Standard_Integer CommonBlocksFace(const Standard_Integer nF,NMTTools_ListOfCommonBlock& aLCB) ; + protected: + Standard_EXPORT + virtual void Init() ; - Standard_EXPORT void PrepareFace(const Standard_Integer nF,TopoDS_Face& aF) ; + Standard_EXPORT + virtual void Clear() ; - Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB) ; + Standard_EXPORT + virtual void PerformVV() ; - Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB,TColStd_ListOfInteger& aLB,Standard_Integer& aIsCommonBlock) ; + Standard_EXPORT + virtual void PerformVE() ; - Standard_EXPORT void RealSplitsFace(const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + virtual void PerformVF() ; - Standard_EXPORT Standard_Boolean HasRealSplitsInOnFace(const Standard_Integer nF1,const Standard_Integer nF2) ; + Standard_EXPORT + virtual void PerformEE() ; - Standard_EXPORT void RealSplitsInFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + virtual void PerformEF() ; - Standard_EXPORT void RealSplitsInFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + virtual void PerformFF() ; - Standard_EXPORT void RealSplitsInFace(const Standard_Integer nF1,BOPTools_ListOfPaveBlock& aLPB) ; + Standard_EXPORT + void MakeSplitEdges() ; - Standard_EXPORT void RealSplitsOnEdge(const Standard_Integer nE1,const Standard_Integer nE2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1, + const TopAbs_ShapeEnum aType2) ; - Standard_EXPORT void RealSplitsOnFace(const Standard_Integer nE1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + void CorrectShrunkRanges(const Standard_Integer aSide, + const BOPTools_Pave& aPave, + IntTools_ShrunkRange& aSR) ; - Standard_EXPORT void RealSplitsOnFace(const Standard_Integer aBid,const Standard_Integer nF1,const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ; + Standard_EXPORT + virtual void PreparePaveBlocks(const Standard_Integer anE) ; - Standard_EXPORT void PrepareSetForFace(const Standard_Integer nF1,const Standard_Integer nF2,const BOPTools_ListOfPaveBlock& aLPB,BOPTools_PaveSet& aPSF) ; + Standard_EXPORT + virtual void PrepareEdges() ; - Standard_EXPORT void PutPaveOnCurve(const BOPTools_PaveSet& aPSF,const Standard_Real aTol,BOPTools_Curve& aBC) ; + Standard_EXPORT + Standard_Boolean IsSuccessorsComputed(const Standard_Integer iF1, + const Standard_Integer iF2) const; - Standard_EXPORT void PutBoundPaveOnCurve(BOPTools_Curve& aBC,BOPTools_SSInterference& aFF) ; + Standard_EXPORT + Standard_Boolean IsBlocksCoinside(const BOPTools_PaveBlock& aPB1, + const BOPTools_PaveBlock& aPB2) const; - Standard_EXPORT void PutBoundPaveOnCurve(const gp_Pnt& aP,const Standard_Real aT,BOPTools_Curve& aBC,BOPTools_SSInterference& aFF) ; + Standard_EXPORT + void RefinePavePool() ; - Standard_EXPORT Standard_Boolean FindPave(const gp_Pnt& aP,const Standard_Real aTpV,const BOPTools_PaveSet& aPS,BOPTools_Pave& aPV) ; + Standard_EXPORT + Standard_Integer CheckFacePaves(const TopoDS_Vertex& aV, + const Standard_Integer nF) ; - Standard_EXPORT Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB,const BOPTools_PaveBlock& aPBR,const Standard_Real aTol) ; + Standard_EXPORT + void ReplaceCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - Standard_EXPORT Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB,const BOPTools_ListOfPaveBlock& aLPB,const Standard_Real aTol) ; + Standard_EXPORT + void RemoveCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - Standard_EXPORT void MakePCurves() ; + Standard_EXPORT + void SplitCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - Standard_EXPORT const NMTTools_IndexedDataMapOfIndexedMapOfInteger& AloneVertices() const; + Standard_EXPORT + void SplitCommonBlock(const NMTTools_CommonBlock& aCB,NMTTools_ListOfCommonBlock& aLCB) ; - Standard_EXPORT Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB,const TopTools_ListOfShape& aLPB,const Standard_Real aTol) ; + Standard_EXPORT + void EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aM) ; - Standard_EXPORT Standard_Boolean CheckCoincidence(const BOPTools_PaveBlock& aPB,const BOPTools_ListOfPaveBlock& aLPB) ; + Standard_EXPORT + void EFCommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfInteger& aMapCB) ; - Standard_EXPORT Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB,const TopoDS_Edge& aE,const Standard_Real aTol) ; + Standard_EXPORT + void EENewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - Standard_EXPORT void SharedEdges(const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLNE,TopTools_ListOfShape& aLSE) ; + Standard_EXPORT + void EENewVertices(const TopoDS_Vertex& aV, + const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - Standard_EXPORT void FuseVertices(const TopoDS_Shape& aC,TopTools_DataMapOfShapeShape& aDMVV) const; + Standard_EXPORT + void EFNewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - Standard_EXPORT void TreatPaveBlocks(NMTTools_ListOfCommonBlock& theLCB) ; + Standard_EXPORT + void EFNewVertices(const TopoDS_Vertex& aV, + const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - Standard_EXPORT BOPTools_PavePool& ChangePavePoolNew() ; + Standard_EXPORT + void UpdateCommonBlocks() ; - Standard_EXPORT Standard_Boolean CheckCoincidence(const BOPTools_PaveBlock& aPB1,const BOPTools_PaveBlock& aPB2) ; + Standard_EXPORT + void UpdateCommonBlocks(const Standard_Integer aI) ; - Standard_EXPORT void PutClosingPaveOnCurve(BOPTools_Curve& aBC,BOPTools_SSInterference& aFF) ; + Standard_EXPORT + void UpdatePaveBlocks() ; -protected: + Standard_EXPORT + Standard_Integer SplitIndex(const BOPTools_PaveBlock& aPB) const; - Standard_EXPORT virtual void Init() ; + Standard_EXPORT + void MakeBlocks() ; - Standard_EXPORT virtual void Clear() ; + Standard_EXPORT + void PerformVF1() ; - Standard_EXPORT virtual void PerformVV() ; + Standard_EXPORT + void MakeAloneVertices() ; - Standard_EXPORT virtual void PerformVE() ; + Standard_EXPORT + void FillFaceInfo() ; - Standard_EXPORT virtual void PerformVF() ; + Standard_EXPORT + void CorrectTolR3D(const BOPTools_SSInterference& aFF, + const TColStd_MapOfInteger& aMVStick, + Standard_Real& aTolR3D) ; - Standard_EXPORT virtual void PerformEE() ; - Standard_EXPORT virtual void PerformEF() ; - - Standard_EXPORT virtual void PerformFF() ; - - Standard_EXPORT void MakeSplitEdges() ; - - Standard_EXPORT virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; - - Standard_EXPORT void CorrectShrunkRanges(const Standard_Integer aSide,const BOPTools_Pave& aPave,IntTools_ShrunkRange& aSR) ; - - Standard_EXPORT virtual void PreparePaveBlocks(const Standard_Integer anE) ; - - Standard_EXPORT virtual void PrepareEdges() ; - - Standard_EXPORT Standard_Boolean IsSuccessorsComputed(const Standard_Integer iF1,const Standard_Integer iF2) const; - - Standard_EXPORT Standard_Boolean IsBlocksCoinside(const BOPTools_PaveBlock& aPB1,const BOPTools_PaveBlock& aPB2) const; - - Standard_EXPORT void RefinePavePool() ; - - Standard_EXPORT Standard_Integer CheckFacePaves(const TopoDS_Vertex& aV,const Standard_Integer nF) ; - - Standard_EXPORT void ReplaceCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT void RemoveCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT void SplitCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT void SplitCommonBlock(const NMTTools_CommonBlock& aCB,NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT void EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aM) ; - - Standard_EXPORT void EFCommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfInteger& aMapCB) ; - - Standard_EXPORT void EENewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT void EENewVertices(const TopoDS_Vertex& aV,const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT void EFNewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT void EFNewVertices(const TopoDS_Vertex& aV,const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT void UpdateCommonBlocks() ; - - Standard_EXPORT void UpdateCommonBlocks (const Standard_Integer aI); - - Standard_EXPORT void UpdatePaveBlocks() ; - - Standard_EXPORT Standard_Integer SplitIndex(const BOPTools_PaveBlock& aPB) const; - - Standard_EXPORT void MakeBlocks() ; - - Standard_EXPORT void PerformVF1() ; - - Standard_EXPORT void MakeAloneVertices() ; - - Standard_EXPORT void FillFaceInfo() ; - - Standard_EXPORT void CorrectTolR3D(const BOPTools_SSInterference& aFF,const TColStd_MapOfInteger& aMVStick,Standard_Real& aTolR3D) ; - - -NMTDS_PShapesDataStructure myDS; -Standard_Boolean myIsDone; -Standard_Integer myNbSources; -Standard_Integer myNbEdges; -BOPTools_PavePool myPavePool; -BOPTools_PavePool myPavePoolNew; -NMTTools_CommonBlockPool myCommonBlockPool; -BOPTools_SplitShapesPool mySplitShapesPool; -#if OCC_VERSION_LARGE > 0x06050200 + NMTDS_PShapesDataStructure myDS; + Standard_Boolean myIsDone; + Standard_Integer myNbSources; + Standard_Integer myNbEdges; + BOPTools_PavePool myPavePool; + BOPTools_PavePool myPavePoolNew; + NMTTools_CommonBlockPool myCommonBlockPool; + BOPTools_SplitShapesPool mySplitShapesPool; Handle_IntTools_Context myContext; -#else - IntTools_Context myContext; -#endif -BOPTools_SSIntersectionAttribute mySectionAttribute; -NMTTools_IndexedDataMapOfIndexedMapOfInteger myAloneVertices; -TColStd_DataMapOfIntegerInteger myVSD; -NMTDS_PIterator myDSIt; -TopoDS_Shape myCompositeShape; -NMTDS_PInterfPool myIP; -NMTTools_DataMapOfIntegerFaceInfo myFaceInfo; - -private: + BOPTools_SSIntersectionAttribute mySectionAttribute; + NMTTools_IndexedDataMapOfIndexedMapOfInteger myAloneVertices; + TColStd_DataMapOfIntegerInteger myVSD; + NMTDS_PIterator myDSIt; + TopoDS_Shape myCompositeShape; + NMTDS_PInterfPool myIP; + NMTTools_DataMapOfIntegerFaceInfo myFaceInfo; -}; -// other Inline functions and methods (like "C++: function call" methods) + // private: +}; #endif diff --git a/src/NMTTools/NMTTools_PaveFiller.ixx b/src/NMTTools/NMTTools_PaveFiller.ixx deleted file mode 100644 index a3c6ce1b7..000000000 --- a/src/NMTTools/NMTTools_PaveFiller.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTTools/NMTTools_PaveFiller.jxx b/src/NMTTools/NMTTools_PaveFiller.jxx deleted file mode 100644 index da6145fe0..000000000 --- a/src/NMTTools/NMTTools_PaveFiller.jxx +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _TopoDS_Shape_HeaderFile -#include -#endif -#ifndef _BOPTools_Pave_HeaderFile -#include -#endif -#ifndef _IntTools_ShrunkRange_HeaderFile -#include -#endif -#ifndef _IntTools_Context_HeaderFile -#include -#endif -#ifndef _BOPTools_PavePool_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlockPool_HeaderFile -#include -#endif -#ifndef _BOPTools_SplitShapesPool_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_CommonBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_IDMapOfPaveBlockIMapOfPaveBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_IDMapOfPaveBlockIMapOfInteger_HeaderFile -#include -#endif -#ifndef _BooleanOperations_IndexedDataMapOfShapeInteger_HeaderFile -#include -#endif -#ifndef _TColStd_ListOfInteger_HeaderFile -#include -#endif -#ifndef _BOPTools_ListOfPaveBlock_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveSet_HeaderFile -#include -#endif -#ifndef _BOPTools_Curve_HeaderFile -#include -#endif -#ifndef _BOPTools_SSInterference_HeaderFile -#include -#endif -#ifndef _gp_Pnt_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopTools_DataMapOfShapeShape_HeaderFile -#include -#endif -#ifndef _TColStd_MapOfInteger_HeaderFile -#include -#endif -#ifndef _NMTTools_PaveFiller_HeaderFile -#include -#endif diff --git a/src/NMTTools/NMTTools_PaveFiller_0.cxx b/src/NMTTools/NMTTools_PaveFiller_0.cxx index 87dbeef85..832b0b0f0 100644 --- a/src/NMTTools/NMTTools_PaveFiller_0.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_0.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,7 +25,7 @@ // Author: Peter KURNEV // // -#include +#include #include #include @@ -36,7 +36,7 @@ //======================================================================= // function:IsSuccesstorsComputed -// purpose: +// purpose: //======================================================================= Standard_Boolean NMTTools_PaveFiller::IsSuccessorsComputed(const Standard_Integer aN1, const Standard_Integer aN2)const @@ -59,7 +59,7 @@ aNbS=aMSuc.Extent(); for (i=1; i<=aNbS; ++i) { nSuc=aMSuc(i); - bComputed=myIP->Contains(n1, nSuc); + bComputed=myIP->Contains(n1, nSuc); if (bComputed) { break; } @@ -69,13 +69,13 @@ /* //======================================================================= // function: ExpectedPoolLength -// purpose: +// purpose: //======================================================================= Standard_Integer NMTTools_PaveFiller::ExpectedPoolLength()const { Standard_Integer aNbIIs; Standard_Real aCfPredict=.5; - // Modified Thu Sep 14 14:35:18 2006 + // Modified Thu Sep 14 14:35:18 2006 // Contribution of Samtech www.samcef.com BEGIN //const BOPTools_ListOfCoupleOfInteger& aLC=myDSIt.ListOfCouple(); //aNbIIs=aLC.Extent(); @@ -87,18 +87,18 @@ } // aNbIIs=(Standard_Integer) (aCfPredict*(Standard_Real)aNbIIs); - + return aNbIIs; } */ /* //======================================================================= //function : SortTypes -//purpose : +//purpose : //======================================================================= void NMTTools_PaveFiller::SortTypes(Standard_Integer& theWhat, - Standard_Integer& theWith)const -{ + Standard_Integer& theWith)const +{ Standard_Integer aWhat, aWith; Standard_Boolean aReverseFlag; TopAbs_ShapeEnum aType1, aType2; @@ -114,7 +114,7 @@ if (aType1==TopAbs_EDGE && aType2==TopAbs_FACE) { aReverseFlag=Standard_False; } - if (aType1==TopAbs_VERTEX && + if (aType1==TopAbs_VERTEX && (aType2==TopAbs_FACE || aType2==TopAbs_EDGE)) { aReverseFlag=Standard_False; } diff --git a/src/NMTTools/NMTTools_PaveFiller_1.cxx b/src/NMTTools/NMTTools_PaveFiller_1.cxx index 031f3abff..0f566f218 100644 --- a/src/NMTTools/NMTTools_PaveFiller_1.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_1.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,7 +25,7 @@ // Author: Peter KURNEV // // -#include +#include #include #include @@ -51,9 +51,9 @@ //======================================================================= // function: PerformVV -// purpose: +// purpose: //======================================================================= - void NMTTools_PaveFiller::PerformVV() + void NMTTools_PaveFiller::PerformVV() { myIsDone=Standard_False; // @@ -131,7 +131,7 @@ // BOPTools_VVInterference aVV(n1, n2); aVV.SetNewShape(nVnew); - aVVs.Append(aVV); + aVVs.Append(aVV); } } } @@ -140,7 +140,7 @@ } //======================================================================= // function: FindSDVertex -// purpose: +// purpose: //======================================================================= Standard_Integer NMTTools_PaveFiller::FindSDVertex(const Standard_Integer nV)const { @@ -155,9 +155,9 @@ /* //======================================================================= // function: PerformNewVertices -// purpose: +// purpose: //======================================================================= - void NMTTools_PaveFiller::PerformNewVertices() + void NMTTools_PaveFiller::PerformNewVertices() { } */ diff --git a/src/NMTTools/NMTTools_PaveFiller_2.cxx b/src/NMTTools/NMTTools_PaveFiller_2.cxx index d7ebc4732..be0cbe728 100644 --- a/src/NMTTools/NMTTools_PaveFiller_2.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_2.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // 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: NMTTools_PaveFiller_2.cxx // Created: Mon Dec 8 12:02:56 2003 @@ -25,7 +26,7 @@ #include -#include +#include #include @@ -56,16 +57,16 @@ #include #include -// Modified Thu Sep 14 14:35:18 2006 -// Contribution of Samtech www.samcef.com BEGIN + #include #include #include +#include + static Standard_Boolean Contains(const TopoDS_Edge& aE, const TopoDS_Vertex& aV); -// Contribution of Samtech www.samcef.com END //======================================================================= // function: PerformVE @@ -154,14 +155,11 @@ void NMTTools_PaveFiller::PerformVE() } // //modified by NIZNHY-PKV Mon Dec 28 08:58:05 2009f -#if OCC_VERSION_LARGE > 0x06050200 - // In OCCT6.5.3 class IntTools_Context become a handle - aFlag = myContext->ComputeVE (aV1, aE2, aT, bToUpdateVertex, aDist); -#elif OCC_VERSION_LARGE > 0x06030008 +#if OCC_VERSION_LARGE > 0x06030008 // In OCCT6.3.0sp9 is changed a signature of IntTools_Context::ComputeVE() method - aFlag = myContext.ComputeVE (aV1, aE2, aT, bToUpdateVertex, aDist); + aFlag = myContext->ComputeVE (aV1, aE2, aT, bToUpdateVertex, aDist); #else - aFlag = myContext.ComputeVE (aV1, aE2, aT); + aFlag = myContext->ComputeVE (aV1, aE2, aT); #endif //modified by NIZNHY-PKV Mon Dec 28 08:58:13 2009t // diff --git a/src/NMTTools/NMTTools_PaveFiller_3.cxx b/src/NMTTools/NMTTools_PaveFiller_3.cxx index bf387e4a2..e1061d1e3 100644 --- a/src/NMTTools/NMTTools_PaveFiller_3.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_3.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,14 +18,14 @@ // 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: NMTTools_PaveFiller_3.cxx // Created: Mon Dec 8 16:06:56 2003 // Author: Peter KURNEV - -#include - -#include +// +// +#include #include #include @@ -40,20 +40,18 @@ #include #include #include +#include -// Modified Thu Sep 14 14:35:18 2006 -// Contribution of Samtech www.samcef.com BEGIN static Standard_Boolean Contains(const TopoDS_Face& aF, const TopoDS_Vertex& aV); -// Contribution of Samtech www.samcef.com END //======================================================================= // function: PerformVF -// purpose: +// purpose: //======================================================================= - void NMTTools_PaveFiller::PerformVF() + void NMTTools_PaveFiller::PerformVF() { myIsDone=Standard_False; // @@ -65,7 +63,7 @@ static // BOPTools_CArray1OfVSInterference& aVSs=myIP->VSInterferences(); // - // V/E Interferences + // V/E Interferences myDSIt->Initialize(TopAbs_VERTEX, TopAbs_FACE); // // BlockLength correction @@ -100,18 +98,14 @@ static // aF2=TopoDS::Face(myDS->Shape(aWith)); // - // Modified Thu Sep 14 14:35:18 2006 + // Modified Thu Sep 14 14:35:18 2006 // Contribution of Samtech www.samcef.com BEGIN if (Contains(aF2, aV1)) { continue; } // Contribution of Samtech www.samcef.com END // -#if OCC_VERSION_LARGE > 0x06050200 aFlag=myContext->ComputeVS (aV1, aF2, aU, aV); -#else - aFlag=myContext.ComputeVS (aV1, aF2, aU, aV); -#endif // if (!aFlag) { // @@ -135,11 +129,11 @@ static } myIsDone=Standard_True; } -// Modified Thu Sep 14 14:35:18 2006 +// Modified Thu Sep 14 14:35:18 2006 // Contribution of Samtech www.samcef.com BEGIN //======================================================================= //function : Contains -//purpose : +//purpose : //======================================================================= Standard_Boolean Contains(const TopoDS_Face& aF, const TopoDS_Vertex& aV) diff --git a/src/NMTTools/NMTTools_PaveFiller_4.cxx b/src/NMTTools/NMTTools_PaveFiller_4.cxx index 7711f2701..188676c70 100644 --- a/src/NMTTools/NMTTools_PaveFiller_4.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_4.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -23,9 +23,7 @@ // Created: Mon Dec 8 17:08:58 2003 // Author: Peter KURNEV -#include - -#include +#include #include #include @@ -67,6 +65,7 @@ #include #include #include +#include #include #include @@ -481,11 +480,7 @@ void NMTTools_PaveFiller::TreatPaveBlocks (NMTTools_ListOfCommonBlock& theLCB) // Append Pave of nV to rhe edge nE const TopoDS_Edge& aE=*(TopoDS_Edge*)(&myDS->Shape(nE)); const TopoDS_Vertex& aV= *(TopoDS_Vertex*)(&myDS->Shape(nV)); -#if OCC_VERSION_LARGE > 0x06050200 iFlag=myContext->ComputeVE (aV, aE, aT); -#else - iFlag=myContext.ComputeVE (aV, aE, aT); -#endif if (!iFlag) { BOPTools_Pave aPave; // @@ -575,11 +570,7 @@ void NMTTools_PaveFiller::EENewVertices (const BooleanOperations_IndexedDataMapO for (j=0; j<2; ++j) { if (aMFence.Add(nE[j])) { aE=TopoDS::Edge(myDS->Shape(nE[j])); -#if OCC_VERSION_LARGE > 0x06050200 iFlag=myContext->ComputeVE (aVnew, aE, aT); -#else - iFlag=myContext.ComputeVE (aVnew, aE, aT); -#endif if (!iFlag) { aPave.SetInterference(-1); aPave.SetType (BooleanOperations_EdgeEdge); @@ -1201,7 +1192,7 @@ void NMTTools_PaveFiller::SplitCommonBlocks(const NMTTools_ListOfCommonBlock& aL // anIt.Initialize(aLCBE); for (; anIt.More(); anIt.Next()) { - NMTTools_CommonBlock& aCBE=anIt.Value(); + NMTTools_CommonBlock& aCBE=anIt.ChangeValue(); const BOPTools_ListOfPaveBlock& aLPBE=aCBE.PaveBlocks(); // aTolMax=-1.; @@ -1563,11 +1554,7 @@ void ProcessBlock(const BOPTools_PaveBlock& aPB, } // anIndexIn=0; -#if OCC_VERSION_LARGE > 0x06050200 aFlag=myContext->ComputeVS (aVnew, aF, aU, aV); -#else - aFlag=myContext.ComputeVS (aVnew, aF, aU, aV); -#endif if (!aFlag) { BOPTools_VSInterference anInterf (nNewShape, nF, aU, aV); // @@ -1606,11 +1593,7 @@ Standard_Boolean NMTTools_PaveFiller::CheckCoincidence(const BOPTools_PaveBlock& nE2=aPB2.OriginalEdge(); const TopoDS_Edge& aE2=(*(TopoDS_Edge*)(&myDS->Shape(nE2))); // -#if OCC_VERSION_LARGE > 0x06050200 GeomAPI_ProjectPointOnCurve& aPPC=myContext->ProjPC(aE2); -#else - GeomAPI_ProjectPointOnCurve& aPPC=myContext.ProjPC(aE2); -#endif aPPC.Perform(aP1m); aNbPoints=aPPC.NbPoints(); if (aNbPoints) { diff --git a/src/NMTTools/NMTTools_PaveFiller_5.cxx b/src/NMTTools/NMTTools_PaveFiller_5.cxx index 96ab2796d..a00a435d6 100644 --- a/src/NMTTools/NMTTools_PaveFiller_5.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_5.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,9 +25,7 @@ // Author: Peter KURNEV // // -#include - -#include +#include #include @@ -51,12 +49,10 @@ #include #include #include -#if OCC_VERSION_LARGE <= 0x06050200 -#include -#endif #include #include #include +#include #include #include @@ -100,9 +96,9 @@ static // //======================================================================= // function: PerformEF -// purpose: +// purpose: //======================================================================= - void NMTTools_PaveFiller::PerformEF() + void NMTTools_PaveFiller::PerformEF() { Standard_Boolean bJustAdd; Standard_Integer n1, n2, anIndexIn, nE, nF, aNbEFs, aBlockLength; @@ -136,10 +132,10 @@ static // anIndexIn = 0; // - nE=n1; + nE=n1; nF=n2; if (myDS->GetShapeType(n2)==TopAbs_EDGE) { - nE=n2; + nE=n2; nF=n1; } // @@ -165,8 +161,8 @@ static // aTolF=BRep_Tool::Tolerance(aF); aTolE=BRep_Tool::Tolerance(aE); - - const Bnd_Box& aBBF=myDS->GetBoundingBox(nF); + + const Bnd_Box& aBBF=myDS->GetBoundingBox(nF); // // Process each PaveBlock on edge nE BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); @@ -185,7 +181,7 @@ static if (aBBF.IsOut (aBBE)) { continue; } - // + // // EF IntTools_EdgeFace aEF; aEF.SetEdge (aE); @@ -194,16 +190,12 @@ static aEF.SetTolF (aTolF); aEF.SetDiscretize (aDiscretize); aEF.SetDeflection (aDeflection); - // -#if OCC_VERSION_LARGE > 0x06050200 + // aEF.SetContext(myContext); -#else - aEF.SetContext((IntTools_PContext)&myContext); -#endif - // + // IntTools_Range anewSR = aSR; - // - // Correction of the Shrunk Range + // + // Correction of the Shrunk Range BOPTools_Tools::CorrectRange(aE, aF, aSR, anewSR); aEF.SetRange (anewSR); // @@ -228,7 +220,7 @@ static case TopAbs_VERTEX: { Standard_Boolean bIsOnPave1, bIsOnPave2; Standard_Integer nVF; - Standard_Real aT, aTolToDecide; + Standard_Real aT, aTolToDecide; TopoDS_Vertex aNewVertex; // const IntTools_Range& aR=aCPart.Range1(); @@ -239,8 +231,8 @@ static // //decide to add pave or not aTolToDecide=5.e-8; - bIsOnPave1=IsOnPave(anewSR.First(), aR, aTolToDecide); - bIsOnPave2=IsOnPave(anewSR.Last() , aR, aTolToDecide); + bIsOnPave1=IsOnPave(anewSR.First(), aR, aTolToDecide); + bIsOnPave2=IsOnPave(anewSR.Last() , aR, aTolToDecide); // if (!bIsOnPave1 && !bIsOnPave2) { nVF=CheckFacePaves(aNewVertex, nF); @@ -257,7 +249,7 @@ static myIP->Add(nE, nF, Standard_True, NMTDS_TI_EF); // }// if (!nVF) - }// if (!bIsOnPave1 && !bIsOnPave2) + }// if (!bIsOnPave1 && !bIsOnPave2) // //modified by NIZNHY-PKV Fri Apr 18 10:55:38 2008f else { @@ -295,16 +287,16 @@ static default: break; - } // switch (aType) - } // for (i=1; i<=aNbCPrts; i++) + } // switch (aType) + } // for (i=1; i<=aNbCPrts; i++) } //if (aEF.IsDone()) - } // for (; anIt.More(); anIt.Next()) - }// for (; myDSIt.More(); myDSIt.Next()) + } // for (; anIt.More(); anIt.Next()) + }// for (; myDSIt.More(); myDSIt.Next()) // // Treat New vertices EFNewVertices(aMapVI); // - // Add draft Common Blocks of EF type + // Add draft Common Blocks of EF type EFCommonBlocks(aMapCB); // // Collect all CB we suspected to split by new vertices @@ -341,7 +333,7 @@ static } //======================================================================= // function:EFCommonBlocks -// purpose: +// purpose: //======================================================================= void NMTTools_PaveFiller::EFCommonBlocks (const BOPTools_IDMapOfPaveBlockIMapOfInteger& aMapCB) @@ -380,10 +372,10 @@ static } //======================================================================= // function:EFNewVertices -// purpose: +// purpose: //======================================================================= - void NMTTools_PaveFiller::EFNewVertices - (const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) + void NMTTools_PaveFiller::EFNewVertices + (const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) { Standard_Integer i, j, aNb, aNewShape, aFlag, iX, aNbVV, aNbSimple; Standard_Integer aWhat, aWith, nE, nF, nV, aNbIEF, aNbEdges, iTmp; @@ -397,7 +389,7 @@ static TopTools_IndexedMapOfShape aMNVComplex, aMNVSimple; // aNb=aMapVI.Extent(); - if (!aNb) { // no new vertices, no new problems + if (!aNb) { // no new vertices, no new problems return; } // @@ -417,7 +409,7 @@ static aBB.Add(aCompound, aV); } // - // 2. VV intersection between these vertices + // 2. VV intersection between these vertices // using the auxiliary Filler NMTTools_PaveFiller tPF; // @@ -455,7 +447,7 @@ static EFNewVertices(aV, aMapVI); } // - // 3. Fill Maps : NewVertex-edges (aMNVE) + // 3. Fill Maps : NewVertex-edges (aMNVE) // NewVertex-interferences (aMNVIEE) aNb=aVVInterfs.Extent(); for (i=1; i<=aNb; ++i) { @@ -527,19 +519,15 @@ static BOPTools_ESInterference& aEF=aEFs(iX); aEF.SetNewShape(aNewShape); } - // - // Update Paves on all edges + // + // Update Paves on all edges const TColStd_IndexedMapOfInteger& aME=aMNVE(i); aNbEdges=aME.Extent(); for (j=1; j<=aNbEdges; ++j) { nE=aME(j); const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));//mpv // -#if OCC_VERSION_LARGE > 0x06050200 aFlag=myContext->ComputeVE (aNewVertex, aE, aT); -#else - aFlag=myContext.ComputeVE (aNewVertex, aE, aT); -#endif // if (!aFlag) { aPave.SetInterference(-1); @@ -555,11 +543,11 @@ static } //======================================================================= // function:EFNewVertices -// purpose: +// purpose: //======================================================================= - void NMTTools_PaveFiller::EFNewVertices + void NMTTools_PaveFiller::EFNewVertices (const TopoDS_Vertex& aNewVertex, - const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) + const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) { Standard_Integer i, aNewShape, nE, nF; Standard_Real aT; @@ -597,9 +585,9 @@ static } //======================================================================= // function: CheckFacePaves -// purpose: +// purpose: //======================================================================= - Standard_Integer NMTTools_PaveFiller::CheckFacePaves + Standard_Integer NMTTools_PaveFiller::CheckFacePaves (const TopoDS_Vertex& aNewVertex, const Standard_Integer nF) { @@ -607,7 +595,7 @@ static BOPTools_ListIteratorOfListOfPave anIt; TColStd_IndexedMapOfInteger aMVF; // - iRet=0; + iRet=0; // BooleanOperations_OnceExplorer aExp(*myDS); aExp.Init(nF, TopAbs_EDGE); @@ -637,7 +625,7 @@ static // //======================================================================= // function: VertexParameter -// purpose: +// purpose: //======================================================================= void VertexParameter(const IntTools_CommonPrt& aCPart, Standard_Real& aT) @@ -651,7 +639,7 @@ void VertexParameter(const IntTools_CommonPrt& aCPart, } //======================================================================= // function: IsOnPave -// purpose: +// purpose: //======================================================================= Standard_Boolean IsOnPave(const Standard_Real& aTR, const IntTools_Range& aCPRange, @@ -667,7 +655,7 @@ Standard_Boolean IsOnPave(const Standard_Real& aTR, return bIsOnPave; } // - dT1=Abs(aTR-aT1); + dT1=Abs(aTR-aT1); dT2=Abs(aTR-aT2); bIsOnPave=(dT1<=aTolerance || dT2<=aTolerance); return bIsOnPave; diff --git a/src/NMTTools/NMTTools_PaveFiller_6.cxx b/src/NMTTools/NMTTools_PaveFiller_6.cxx index 43ab91e0f..3f897dedd 100644 --- a/src/NMTTools/NMTTools_PaveFiller_6.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_6.cxx @@ -1,29 +1,29 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&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) 2003-2007 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 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: NMTTools_PaveFiller_6.cxx // Created: Fri Dec 19 10:27:31 2003 // Author: Peter KURNEV -#include +#include #include @@ -37,6 +37,7 @@ #include #include + #include #include #include @@ -91,6 +92,7 @@ #include #include #include +#include #include #include @@ -112,11 +114,7 @@ static Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE, -#if OCC_VERSION_LARGE > 0x06050200 const Handle(IntTools_Context)& aCtx); -#else - IntTools_Context& aCtx); -#endif //======================================================================= // function: PerformFF @@ -245,7 +243,7 @@ void NMTTools_PaveFiller::MakeBlocks() // BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences(); // - + // // 1. Make Section Edges from intersection curves // between each pair of faces @@ -417,11 +415,7 @@ void NMTTools_PaveFiller::MakeBlocks() // // Checking of validity in 2D // -#if OCC_VERSION_LARGE > 0x06050200 bIsValidIn2D=myContext->IsValidBlockForFaces(aT1, aT2, aIC, aF1, aF2, aTol2D); -#else - bIsValidIn2D=myContext.IsValidBlockForFaces(aT1, aT2, aIC, aF1, aF2, aTol2D); -#endif if (!bIsValidIn2D) { continue; } @@ -436,18 +430,10 @@ void NMTTools_PaveFiller::MakeBlocks() { Standard_Real aT; // -#if OCC_VERSION_LARGE > 0x06050200 myContext->IsVertexOnLine(aV1, aIC, aTolR3D, aT); -#else - myContext.IsVertexOnLine(aV1, aIC, aTolR3D, aT); -#endif BOPTools_Tools::UpdateVertex (aIC, aT, aV1); // -#if OCC_VERSION_LARGE > 0x06050200 myContext->IsVertexOnLine(aV2, aIC, aTolR3D, aT); -#else - myContext.IsVertexOnLine(aV2, aIC, aTolR3D, aT); -#endif BOPTools_Tools::UpdateVertex (aIC, aT, aV2); } // @@ -945,11 +931,7 @@ Standard_Integer NMTTools_PaveFiller::CheckIntermediatePoint(const BOPTools_Pave // aBB.MakeVertex (aVM, aPM, aTolC); // -#if OCC_VERSION_LARGE > 0x06050200 iVM=myContext->ComputeVE(aVM, aE2, aTmp); -#else - iVM=myContext.ComputeVE(aVM, aE2, aTmp); -#endif // return iVM; } @@ -982,20 +964,12 @@ void NMTTools_PaveFiller::PutBoundPaveOnCurve(BOPTools_Curve& aBC, const TopoDS_Face aF1=TopoDS::Face(myDS->GetShape(nF1));//mpv const TopoDS_Face aF2=TopoDS::Face(myDS->GetShape(nF2));//mpv // -#if OCC_VERSION_LARGE > 0x06050200 bVF=myContext->IsValidPointForFaces (aP1, aF1, aF2, aTolR3D); -#else - bVF=myContext.IsValidPointForFaces (aP1, aF1, aF2, aTolR3D); -#endif if (bVF) { PutBoundPaveOnCurve (aP1, aT1, aBC, aFFi); } // -#if OCC_VERSION_LARGE > 0x06050200 bVF=myContext->IsValidPointForFaces (aP2, aF1, aF2, aTolR3D); -#else - bVF=myContext.IsValidPointForFaces (aP2, aF1, aF2, aTolR3D); -#endif if (bVF) { PutBoundPaveOnCurve (aP2, aT2, aBC, aFFi); } @@ -1187,11 +1161,7 @@ Standard_Boolean NMTTools_PaveFiller::CheckCoincidence(const BOPTools_PaveBlock& } // VE if (!iV) { -#if OCC_VERSION_LARGE > 0x06050200 iVE=myContext->ComputeVE (aV11, aE2, aTE); -#else - iVE=myContext.ComputeVE (aV11, aE2, aTE); -#endif if (!iVE) { iCount++; if (iCount>iCountExt) { @@ -1220,11 +1190,7 @@ Standard_Boolean NMTTools_PaveFiller::CheckCoincidence(const BOPTools_PaveBlock& } // VE if (!iV) { -#if OCC_VERSION_LARGE > 0x06050200 iVE=myContext->ComputeVE (aV12, aE2, aTE); -#else - iVE=myContext.ComputeVE (aV12, aE2, aTE); -#endif if (!iVE) { iCount++; if (iCount>iCountExt) { @@ -1242,11 +1208,7 @@ Standard_Boolean NMTTools_PaveFiller::CheckCoincidence(const BOPTools_PaveBlock& //purpose : //======================================================================= Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE, -#if OCC_VERSION_LARGE > 0x06050200 const Handle(IntTools_Context)& aCtx) -#else - IntTools_Context& aCtx) -#endif { Standard_Boolean bRet; Standard_Integer iErr; @@ -1313,11 +1275,7 @@ void NMTTools_PaveFiller::PutPaveOnCurve(const BOPTools_PaveSet& aPaveSet, continue; } // -#if OCC_VERSION_LARGE > 0x06050200 bIsVertexOnLine=myContext->IsVertexOnLine(aV, aC, aTolR3D, aT); -#else - bIsVertexOnLine=myContext.IsVertexOnLine(aV, aC, aTolR3D, aT); -#endif // // if (bIsVertexOnLine) { @@ -1331,14 +1289,14 @@ void NMTTools_PaveFiller::PutPaveOnCurve(const BOPTools_PaveSet& aPaveSet, // //======================================================================= //function : FillFaceInfo -//purpose : +//purpose : //======================================================================= void NMTTools_PaveFiller::FillFaceInfo() { Standard_Integer i, aNbS, aNbFFs, nF, aNbVFs, aNbEFs, j, n1, n2, nX, aNbF; TopAbs_ShapeEnum aType; TopoDS_Shape aS; - TColStd_ListIteratorOfListOfInteger aItF; + TColStd_ListIteratorOfListOfInteger aItF; BOPTools_ListIteratorOfListOfPaveBlock anItPB; NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo aItMFI; NMTTools_ListIteratorOfListOfCommonBlock aItCB; @@ -1479,19 +1437,19 @@ void NMTTools_PaveFiller::FillFaceInfo() //======================================================================= //function : CorrectTolR3D //purpose : Attempt to correct the value of tolerance aTolR3D for -// the intersection curve in order to +// the intersection curve in order to // compel it to pass through the sticks. -// Prerequisites: +// Prerequisites: // 2. The are based on B-Spline surfaces; // 1. There is at least the one intersection curve; // 2. The faces have stick vertices to catch the curve; // 3. The intersection angle is rather small (0.7-7 deg) -// +// //======================================================================= void NMTTools_PaveFiller::CorrectTolR3D(const BOPTools_SSInterference& aFF, const TColStd_MapOfInteger& aMVStick, Standard_Real& aTolR3D) - + { Standard_Boolean bHasBounds; Standard_Integer i, nF[2], nV, aNbCurves; @@ -1546,11 +1504,7 @@ void NMTTools_PaveFiller::CorrectTolR3D(const BOPTools_SSInterference& aFF, aC3D->D0(aT, aP); // for (i=0; i<2; ++i) { -#if OCC_VERSION_LARGE > 0x06050200 GeomAPI_ProjectPointOnSurf& aPPS=myContext->ProjPS(aF[i]); -#else - GeomAPI_ProjectPointOnSurf& aPPS=myContext.ProjPS(aF[i]); -#endif aPPS.Perform(aP); aPPS.LowerDistanceParameters(aU, aV); BOPTools_Tools3D::GetNormalToSurface(aS[i], aU, aV, aDN[i]); @@ -1577,7 +1531,7 @@ void NMTTools_PaveFiller::CorrectTolR3D(const BOPTools_SSInterference& aFF, } } // - + aTolR=aTolVmax/aA; if (aTolR - -#include +#include #include #include @@ -59,10 +58,11 @@ #include #include - +// #include #include #include +#include #include @@ -81,6 +81,7 @@ #include #include +#include #include #include @@ -214,7 +215,7 @@ void NMTTools_PaveFiller::UpdateCommonBlocks(const Standard_Integer) for (; aItLCB.More(); aItLCB.Next()) { NMTTools_CommonBlock aCBx; // - NMTTools_CommonBlock& aCB=aItLCB.Value(); + NMTTools_CommonBlock& aCB=aItLCB.ChangeValue(); const BOPTools_ListOfPaveBlock &aLPB=aCB.PaveBlocks(); aItLPB.Initialize(aLPB); for (; aItLPB.More(); aItLPB.Next()) { @@ -245,14 +246,14 @@ void NMTTools_PaveFiller::UpdateCommonBlocks(const Standard_Integer) // aItLCB.Initialize(aLCBx); for (; aItLCB.More(); aItLCB.Next()) { - NMTTools_CommonBlock& aCBx=aItLCB.Value(); + NMTTools_CommonBlock& aCBx=aItLCB.ChangeValue(); aLCB.Append(aCBx); } //modified by NIZNHY-PKV Thu Jan 19 09:03:30 2012t // 1 aItLCB.Initialize(aLCB); for (; aItLCB.More(); aItLCB.Next()) { - NMTTools_CommonBlock& aCB=aItLCB.Value(); + NMTTools_CommonBlock& aCB=aItLCB.ChangeValue(); // BOPTools_PaveBlock aPBMax; aTolExMax=-1.; @@ -295,11 +296,7 @@ void NMTTools_PaveFiller::UpdateCommonBlocks(const Standard_Integer) } // const TopoDS_Edge& aEx=*((TopoDS_Edge*)&myDS->Shape(nEx)); -#if OCC_VERSION_LARGE > 0x06050200 GeomAPI_ProjectPointOnCurve& aPPCx=myContext->ProjPC(aEx); -#else - GeomAPI_ProjectPointOnCurve& aPPCx=myContext.ProjPC(aEx); -#endif // for (j=0; j<2; ++j) { aPPCx.Perform(aPMax[j]); @@ -383,7 +380,7 @@ void NMTTools_PaveFiller::UpdateCommonBlocks() // aCBIt.Initialize(aLCB); for (; aCBIt.More(); aCBIt.Next()) { - NMTTools_CommonBlock& aCB=aCBIt.Value(); + NMTTools_CommonBlock& aCB=aCBIt.ChangeValue(); // // Among all PBs of aCB the first PB will be one // that have max tolerance value diff --git a/src/NMTTools/NMTTools_PaveFiller_8.cxx b/src/NMTTools/NMTTools_PaveFiller_8.cxx index b4c21b10e..305f04ca1 100644 --- a/src/NMTTools/NMTTools_PaveFiller_8.cxx +++ b/src/NMTTools/NMTTools_PaveFiller_8.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,12 +25,14 @@ // Author: Peter KURNEV // // -#include +#include #include #include #include +#include + #include #include @@ -46,7 +48,7 @@ #include -// Modified to add new method Thu Sep 14 14:35:18 2006 +// Modified to add new method Thu Sep 14 14:35:18 2006 // Contribution of Samtech www.samcef.com BEGIN //======================================================================= // function: SharedEdges @@ -68,7 +70,7 @@ nE1=aExp.Current(); aM1.Add(nE1); } - + aExp.Init(nF2, TopAbs_EDGE); for (; aExp.More(); aExp.Next()) { nE2=aExp.Current(); @@ -101,7 +103,7 @@ if (aCBAPI.IsCommonBlock(aPB)) { NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB); // - aIsCommonBlock=1; + aIsCommonBlock=1; // const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); aItPBx.Initialize(aLPBx); @@ -254,7 +256,7 @@ // anItCB.Initialize(aLCB); for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); + NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1); const BOPTools_PaveBlock& aPB1R=RealPaveBlock(aPB1); @@ -285,7 +287,7 @@ anItCB.Initialize(aLCB); for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); + NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1); const BOPTools_PaveBlock& aPB1R=RealPaveBlock(aPB1); // @@ -424,7 +426,7 @@ // anItCB.Initialize(aLCB); for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); + NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1); const TColStd_ListOfInteger& aLFCB=aCB.Faces(); @@ -463,7 +465,7 @@ anItCB.Initialize(aLCB); for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.Value(); + NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1);//XXX // const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); @@ -688,13 +690,13 @@ return 0; //Ok } //modified by NIZNHY-PKV Mon Oct 17 12:07:48 2011f -static +static void SortPaveBlocks(BOPTools_ListOfPaveBlock &); static - void SortShell(const Standard_Integer, + void SortShell(const Standard_Integer, BOPTools_PaveBlock *); static - Standard_Boolean Less(const BOPTools_PaveBlock &, + Standard_Boolean Less(const BOPTools_PaveBlock &, const BOPTools_PaveBlock &); //======================================================================= @@ -705,7 +707,7 @@ static BOPTools_ListOfPaveBlock& aLPBIn) { Standard_Integer j, aNbCBP, nSpIn; - TColStd_MapOfInteger aMFence; + TColStd_MapOfInteger aMFence; BOPTools_ListOfPaveBlock aLPB; BOPTools_ListIteratorOfListOfPaveBlock aItPB; NMTTools_ListIteratorOfListOfCommonBlock aItCB; @@ -717,7 +719,7 @@ static NMTTools_ListOfCommonBlock& aLCB=aCBP(j); aItCB.Initialize(aLCB); for (; aItCB.More(); aItCB.Next()) { - NMTTools_CommonBlock& aCB=aItCB.Value(); + NMTTools_CommonBlock& aCB=aItCB.ChangeValue(); if (aCB.IsPaveBlockOnFace(nF)) { const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(); nSpIn=aPB1.Edge(); @@ -770,10 +772,10 @@ void SortPaveBlocks(BOPTools_ListOfPaveBlock &aLPBIn) } //======================================================================= //function : SortShell -//purpose : +//purpose : //======================================================================= -void SortShell(const Standard_Integer n, - BOPTools_PaveBlock *a) +void SortShell(const Standard_Integer n, + BOPTools_PaveBlock *a) { Standard_Integer nd, i, j, l, d=1; BOPTools_PaveBlock x; @@ -798,15 +800,15 @@ void SortShell(const Standard_Integer n, j-=d; if (j > -1) goto m30; }//if (a[l] < a[j]){ - }//for (i=0; i // -#include +#include #include @@ -56,9 +56,9 @@ //======================================================================= // function: PrepareFace -// purpose: +// purpose: //======================================================================= - void NMTTools_PaveFiller::PrepareFace(const Standard_Integer nF, + void NMTTools_PaveFiller::PrepareFace(const Standard_Integer nF, TopoDS_Face& newFace) { Standard_Boolean bToReverse, bIsDegenerated; diff --git a/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock.hxx b/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock.hxx deleted file mode 100644 index d03619469..000000000 --- a/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock.hxx +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile -#define _NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile - -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile -#include -#endif - -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _TCollection_MapNode_HeaderFile -#include -#endif -#ifndef _TCollection_MapNodePtr_HeaderFile -#include -#endif -class BOPTools_PaveBlock; -class BOPTools_PaveBlockMapHasher; -class NMTTools_MapOfPaveBlock; -class NMTTools_MapIteratorOfMapOfPaveBlock; - - - -class NMTTools_StdMapNodeOfMapOfPaveBlock : public TCollection_MapNode { - -public: - // Methods PUBLIC - // - -NMTTools_StdMapNodeOfMapOfPaveBlock(const BOPTools_PaveBlock& K,const TCollection_MapNodePtr& n); - - BOPTools_PaveBlock& Key() const; -//Standard_EXPORT ~NMTTools_StdMapNodeOfMapOfPaveBlock(); - - - - - // Type management - // - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -BOPTools_PaveBlock myKey; - - -}; - -#define TheKey BOPTools_PaveBlock -#define TheKey_hxx -#define Hasher BOPTools_PaveBlockMapHasher -#define Hasher_hxx -#define TCollection_StdMapNode NMTTools_StdMapNodeOfMapOfPaveBlock -#define TCollection_StdMapNode_hxx -#define TCollection_MapIterator NMTTools_MapIteratorOfMapOfPaveBlock -#define TCollection_MapIterator_hxx -#define Handle_TCollection_StdMapNode Handle_NMTTools_StdMapNodeOfMapOfPaveBlock -#define TCollection_StdMapNode_Type_() NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() -#define TCollection_Map NMTTools_MapOfPaveBlock -#define TCollection_Map_hxx - -#include - -#undef TheKey -#undef TheKey_hxx -#undef Hasher -#undef Hasher_hxx -#undef TCollection_StdMapNode -#undef TCollection_StdMapNode_hxx -#undef TCollection_MapIterator -#undef TCollection_MapIterator_hxx -#undef Handle_TCollection_StdMapNode -#undef TCollection_StdMapNode_Type_ -#undef TCollection_Map -#undef TCollection_Map_hxx - - -// other Inline functions and methods (like "C++: function call" methods) -// - - -#endif diff --git a/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx deleted file mode 100644 index 7ef908aeb..000000000 --- a/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - -#ifndef _Standard_TypeMismatch_HeaderFile -#include -#endif - -#ifndef _BOPTools_PaveBlock_HeaderFile -#include -#endif -#ifndef _BOPTools_PaveBlockMapHasher_HeaderFile -#include -#endif -#ifndef _NMTTools_MapOfPaveBlock_HeaderFile -#include -#endif -#ifndef _NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile -#include -#endif -//NMTTools_StdMapNodeOfMapOfPaveBlock::~NMTTools_StdMapNodeOfMapOfPaveBlock() {} - - - -Standard_EXPORT Handle_Standard_Type& NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() -{ - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("NMTTools_StdMapNodeOfMapOfPaveBlock", - sizeof(NMTTools_StdMapNodeOfMapOfPaveBlock), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - - -// DownCast method -// allow safe downcasting -// -const Handle(NMTTools_StdMapNodeOfMapOfPaveBlock) Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(NMTTools_StdMapNodeOfMapOfPaveBlock) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(NMTTools_StdMapNodeOfMapOfPaveBlock))) { - _anOtherObject = Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)((Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)&)AnObject); - } - } - - return _anOtherObject ; -} -const Handle(Standard_Type)& NMTTools_StdMapNodeOfMapOfPaveBlock::DynamicType() const -{ - return STANDARD_TYPE(NMTTools_StdMapNodeOfMapOfPaveBlock) ; -} -//Standard_Boolean NMTTools_StdMapNodeOfMapOfPaveBlock::IsKind(const Handle(Standard_Type)& AType) const -//{ -// return (STANDARD_TYPE(NMTTools_StdMapNodeOfMapOfPaveBlock) == AType || TCollection_MapNode::IsKind(AType)); -//} -//Handle_NMTTools_StdMapNodeOfMapOfPaveBlock::~Handle_NMTTools_StdMapNodeOfMapOfPaveBlock() {} -#define TheKey BOPTools_PaveBlock -#define TheKey_hxx -#define Hasher BOPTools_PaveBlockMapHasher -#define Hasher_hxx -#define TCollection_StdMapNode NMTTools_StdMapNodeOfMapOfPaveBlock -#define TCollection_StdMapNode_hxx -#define TCollection_MapIterator NMTTools_MapIteratorOfMapOfPaveBlock -#define TCollection_MapIterator_hxx -#define Handle_TCollection_StdMapNode Handle_NMTTools_StdMapNodeOfMapOfPaveBlock -#define TCollection_StdMapNode_Type_() NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() -#define TCollection_Map NMTTools_MapOfPaveBlock -#define TCollection_Map_hxx -#include - diff --git a/src/NMTTools/NMTTools_Tools.cdl b/src/NMTTools/NMTTools_Tools.cdl deleted file mode 100644 index 2d8df63a7..000000000 --- a/src/NMTTools/NMTTools_Tools.cdl +++ /dev/null @@ -1,95 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTTools_Tools.cdl --- Created: Mon Dec 8 10:32:34 2003 --- Author: Peter KURNEV --- --- -class Tools from NMTTools - - ---Purpose: - -uses - Vertex from TopoDS, - Edge from TopoDS, - Face from TopoDS, - Context from IntTools, - Curve from Geom2d, - - ListOfShape from TopTools, - IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd, - CArray1OfVVInterference from BOPTools, - CArray1OfSSInterference from BOPTools, - ListOfCoupleOfShape from NMTTools, - IndexedDataMapOfShapeIndexedMapOfShape from NMTTools - ---raises - -is - MakeNewVertex (myclass; - aLV : ListOfShape from TopTools; - aNewVertex: out Vertex from TopoDS); - FindChains(myclass; - aVVs:CArray1OfVVInterference from BOPTools; - aMCX: out IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd); - - FindChains(myclass; - aVVs:CArray1OfSSInterference from BOPTools; - aMCX: out IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd); - - FindChains(myclass; - aMCV: IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd; - aMCX: out IndexedDataMapOfIntegerIndexedMapOfInteger from BOPTColStd); - - - IsSplitInOnFace(myclass; - aE : Edge from TopoDS; - aF : Face from TopoDS; - aCtx: Context from IntTools) - returns Boolean from Standard; - - AreFacesSameDomain(myclass; - aF1 : Face from TopoDS; - aF2 : Face from TopoDS; - aCtx : Context from IntTools) - returns Boolean from Standard; - - FindChains(myclass; - aLCS:ListOfCoupleOfShape from NMTTools; - aM :out IndexedDataMapOfShapeIndexedMapOfShape from NMTTools); - - FindChains(myclass; - aM1: IndexedDataMapOfShapeIndexedMapOfShape from NMTTools; - aM2:out IndexedDataMapOfShapeIndexedMapOfShape from NMTTools); - - MakePCurve(myclass; - aE : Edge from TopoDS; - aF : Face from TopoDS; - aC2D : Curve from Geom2d); - - UpdateEdge(myclass; - aE : Edge from TopoDS; - aTol : Real from Standard); ---fields - -end Tools; diff --git a/src/NMTTools/NMTTools_Tools.cxx b/src/NMTTools/NMTTools_Tools.cxx index cdbcc5f06..7d06d68c1 100644 --- a/src/NMTTools/NMTTools_Tools.cxx +++ b/src/NMTTools/NMTTools_Tools.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,58 +18,61 @@ // 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: NMTTools_Tools.cxx // Created: Mon Dec 8 10:35:15 2003 // Author: Peter KURNEV +// +// +#include -#include +#include -#include +#include +#include +#include -#include -#include -#include +#include +#include #include #include #include #include -#include #include -#include -#include -#include -#include #include +#include #include #include #include -#include #include #include #include #include + #include -#include #include - +#include +#include +#include +#include +#include #include #include -#include -#include -#include - -#include - -#include -#include -#include +#include +#include +#include +#include +// +#include +#include +#include static void ProcessBlock(const Standard_Integer iV, @@ -114,6 +117,7 @@ static void NMTTools_Tools::MakePCurve(const TopoDS_Edge& aE, const TopoDS_Face& aF, const Handle(Geom2d_Curve)& aC2Dx1) + { Standard_Real aTolE, aT1, aT2, aOutFirst, aOutLast, aOutTol; Handle(Geom2d_Curve) aC2D, aC2DA; @@ -211,11 +215,7 @@ static //======================================================================= Standard_Boolean NMTTools_Tools::IsSplitInOnFace(const TopoDS_Edge& aE, const TopoDS_Face& aF, -#if OCC_VERSION_LARGE > 0x06050200 const Handle(IntTools_Context)& aContext) -#else - IntTools_Context& aContext) -#endif { Standard_Boolean bFlag; Standard_Real aT, aTolE, aTolF, aTol, aDist, aU, aV; @@ -226,11 +226,7 @@ static aTolF=BRep_Tool::Tolerance(aF); aTol=aTolE+aTolF; // -#if OCC_VERSION_LARGE > 0x06050200 GeomAPI_ProjectPointOnSurf& aProjector=aContext->ProjPS(aF); -#else - GeomAPI_ProjectPointOnSurf& aProjector=aContext.ProjPS(aF); -#endif // aT=BOPTools_Tools2D::IntermediatePoint(aE); BOPTools_Tools::PointOnEdge(aE, aT, aP); @@ -249,11 +245,7 @@ static // aProjector.LowerDistanceParameters(aU, aV); aP2D.SetCoord(aU, aV); -#if OCC_VERSION_LARGE > 0x06050200 bFlag=aContext->IsPointInOnFace (aF, aP2D); -#else - bFlag=aContext.IsPointInOnFace (aF, aP2D); -#endif return bFlag; } //======================================================================= @@ -449,11 +441,7 @@ void ProcessBlock(const Standard_Integer iV, //======================================================================= Standard_Boolean NMTTools_Tools::AreFacesSameDomain(const TopoDS_Face& aF1x, const TopoDS_Face& aF2y, -#if OCC_VERSION_LARGE > 0x06050200 const Handle(IntTools_Context)& aCtx) -#else - IntTools_Context& aCtx) -#endif { Standard_Boolean bFlag; // Modified Thu Sep 14 14:35:18 2006 @@ -520,11 +508,7 @@ void ProcessBlock(const Standard_Integer iV, for (; aIt.More(); aIt.Next()) { const TopoDS_Edge& aE=TopoDS::Edge(aIt.Key()); BOPTools_Tools3D::PointNearEdge(aE, aF1, aP2D, aP); -#if OCC_VERSION_LARGE > 0x06050200 bFlag=aCtx->IsValidPointForFace(aP, aF2, aTol); -#else - bFlag=aCtx.IsValidPointForFace(aP, aF2, aTol); -#endif break; } // diff --git a/src/NMTTools/NMTTools_Tools.hxx b/src/NMTTools/NMTTools_Tools.hxx index ad75e9298..6be0cc1a8 100644 --- a/src/NMTTools/NMTTools_Tools.hxx +++ b/src/NMTTools/NMTTools_Tools.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,101 +18,82 @@ // 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: NMTTools_Tools.hxx +// Created: Mon Dec 8 10:35:15 2003 +// Author: Peter KURNEV +// #ifndef _NMTTools_Tools_HeaderFile #define _NMTTools_Tools_HeaderFile -#ifndef _Standard_HeaderFile #include -#endif -#ifndef _Standard_Macro_HeaderFile #include -#endif - -#include - -#ifndef _Standard_Boolean_HeaderFile #include -#endif -#ifndef _Handle_Geom2d_Curve_HeaderFile +#include #include -#endif -#ifndef _Standard_Real_HeaderFile #include -#endif - -#if OCC_VERSION_LARGE > 0x06050200 -#include -#else -class IntTools_Context; -#endif - -class TopTools_ListOfShape; -class TopoDS_Vertex; -class BOPTools_CArray1OfVVInterference; -class BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger; -class BOPTools_CArray1OfSSInterference; -class TopoDS_Edge; -class TopoDS_Face; -class NMTTools_ListOfCoupleOfShape; -class NMTTools_IndexedDataMapOfShapeIndexedMapOfShape; -class Geom2d_Curve; - +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//function : NMTTools_Tools +//purpose : +//======================================================================= class NMTTools_Tools { -public: - - void* operator new(size_t,void* anAddress) - { - return anAddress; - } - void* operator new(size_t size) - { - return Standard::Allocate(size); - } - void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } - - - Standard_EXPORT static void MakeNewVertex(const TopTools_ListOfShape& aLV,TopoDS_Vertex& aNewVertex) ; - - Standard_EXPORT static void FindChains(const BOPTools_CArray1OfVVInterference& aVVs,BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; - - Standard_EXPORT static void FindChains(const BOPTools_CArray1OfSSInterference& aVVs,BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; - - Standard_EXPORT static void FindChains(const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV,BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; - - Standard_EXPORT static Standard_Boolean IsSplitInOnFace (const TopoDS_Edge& aE, - const TopoDS_Face& aF, -#if OCC_VERSION_LARGE > 0x06050200 - const Handle(IntTools_Context)& aCtx); -#else - IntTools_Context& aCtx); -#endif - - Standard_EXPORT static Standard_Boolean AreFacesSameDomain (const TopoDS_Face& aF1, - const TopoDS_Face& aF2, -#if OCC_VERSION_LARGE > 0x06050200 - const Handle(IntTools_Context)& aCtx); -#else - IntTools_Context& aCtx); -#endif - - Standard_EXPORT static void FindChains(const NMTTools_ListOfCoupleOfShape& aLCS,NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM) ; - - Standard_EXPORT static void FindChains(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM1,NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM2) ; - - Standard_EXPORT static void MakePCurve(const TopoDS_Edge& aE,const TopoDS_Face& aF,const Handle(Geom2d_Curve)& aC2D) ; - - Standard_EXPORT static void UpdateEdge(const TopoDS_Edge& aE,const Standard_Real aTol) ; - -protected: - -private: + public: + Standard_EXPORT + static void MakeNewVertex(const TopTools_ListOfShape& aLV, + TopoDS_Vertex& aNewVertex) ; + + Standard_EXPORT + static void FindChains(const BOPTools_CArray1OfVVInterference& aVVs, + BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; + + Standard_EXPORT + static void FindChains(const BOPTools_CArray1OfSSInterference& aVVs, + BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; + + Standard_EXPORT + static void FindChains(const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV, + BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; + + Standard_EXPORT + static Standard_Boolean IsSplitInOnFace(const TopoDS_Edge& aE, + const TopoDS_Face& aF, + const Handle(IntTools_Context)& aCtx) ; + + Standard_EXPORT + static Standard_Boolean AreFacesSameDomain(const TopoDS_Face& aF1, + const TopoDS_Face& aF2, + const Handle(IntTools_Context)& aCtx) ; + + Standard_EXPORT + static void FindChains(const NMTTools_ListOfCoupleOfShape& aLCS, + NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM) ; + + Standard_EXPORT + static void FindChains(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM1, + NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM2) ; + + Standard_EXPORT + static void MakePCurve(const TopoDS_Edge& aE, + const TopoDS_Face& aF, + const Handle(Geom2d_Curve)& aC2D) ; + + Standard_EXPORT + static void UpdateEdge(const TopoDS_Edge& aE, + const Standard_Real aTol) ; }; - -// other Inline functions and methods (like "C++: function call" methods) - #endif diff --git a/src/NMTTools/NMTTools_Tools.ixx b/src/NMTTools/NMTTools_Tools.ixx deleted file mode 100644 index 062184f06..000000000 --- a/src/NMTTools/NMTTools_Tools.ixx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#include - - - - diff --git a/src/NMTTools/NMTTools_Tools.jxx b/src/NMTTools/NMTTools_Tools.jxx deleted file mode 100644 index 6ac8a846e..000000000 --- a/src/NMTTools/NMTTools_Tools.jxx +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopoDS_Vertex_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfVVInterference_HeaderFile -#include -#endif -#ifndef _BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger_HeaderFile -#include -#endif -#ifndef _BOPTools_CArray1OfSSInterference_HeaderFile -#include -#endif -#ifndef _TopoDS_Edge_HeaderFile -#include -#endif -#ifndef _TopoDS_Face_HeaderFile -#include -#endif -#ifndef _IntTools_Context_HeaderFile -#include -#endif -#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile -#include -#endif -#ifndef _NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _Geom2d_Curve_HeaderFile -#include -#endif -#ifndef _NMTTools_Tools_HeaderFile -#include -#endif diff --git a/src/NMTTools_NEW/Makefile.am b/src/NMTTools_NEW/Makefile.am deleted file mode 100644 index 221c2c9bf..000000000 --- a/src/NMTTools_NEW/Makefile.am +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright (C) 2007-2011 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 - -# GEOM NMTTools : partition algorithm -# File : Makefile.in -# Author : Julia DOROVSKIKH -# Modified by : Alexander BORODIN (OCN) - autotools usage -# Module : GEOM - -include $(top_srcdir)/adm_local/unix/make_common_starter.am - -# header files -salomeinclude_HEADERS = \ - NMTTools_CheckerSI.hxx \ - NMTTools_CommonBlockAPI.hxx \ - NMTTools_CommonBlock.hxx \ - NMTTools_CommonBlockPool.hxx \ - NMTTools_CoupleOfShape.hxx \ - NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx \ - NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx \ - NMTTools_DataMapOfIntegerFaceInfo.hxx \ - NMTTools_DataMapOfIntegerListOfPaveBlock.hxx \ - NMTTools_DEProcessor.hxx \ - NMTTools_FaceInfo.hxx \ - NMTTools_FaceInfo.lxx \ - NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx \ - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx \ - NMTTools_IndexedDataMapOfShapePaveBlock.hxx \ - NMTTools_ListIteratorOfListOfCommonBlock.hxx \ - NMTTools_ListIteratorOfListOfCoupleOfShape.hxx \ - NMTTools_ListOfCommonBlock.hxx \ - NMTTools_ListOfCoupleOfShape.hxx \ - NMTTools_MapIteratorOfMapOfPaveBlock.hxx \ - NMTTools_MapOfPaveBlock.hxx \ - NMTTools_PaveFiller.hxx \ - NMTTools_PPaveFiller.hxx \ - NMTTools_Tools.hxx - -# Libraries targets -lib_LTLIBRARIES = libNMTTools.la - -dist_libNMTTools_la_SOURCES = \ - NMTTools_CheckerSI.cxx \ - NMTTools_CheckerSI_1.cxx \ - NMTTools_CommonBlockAPI.cxx \ - NMTTools_CommonBlock.cxx \ - NMTTools_CommonBlockPool.cxx \ - NMTTools_CoupleOfShape.cxx \ - NMTTools_DEProcessor.cxx \ - NMTTools_FaceInfo.cxx \ - NMTTools_PaveFiller_0.cxx \ - NMTTools_PaveFiller_1.cxx \ - NMTTools_PaveFiller_2.cxx \ - NMTTools_PaveFiller_3.cxx \ - NMTTools_PaveFiller_4.cxx \ - NMTTools_PaveFiller_5.cxx \ - NMTTools_PaveFiller_6.cxx \ - NMTTools_PaveFiller_7.cxx \ - NMTTools_PaveFiller_8.cxx \ - NMTTools_PaveFiller_9.cxx \ - NMTTools_PaveFiller.cxx \ - NMTTools_Tools.cxx - -# additional information to compile and link file - -libNMTTools_la_CPPFLAGS = \ - $(CAS_CPPFLAGS) \ - $(KERNEL_CXXFLAGS) \ - -I$(srcdir)/../$(NMTDS_VAR) - -libNMTTools_la_LDFLAGS = \ - ../$(NMTDS_VAR)/libNMTDS.la \ - $(STDLIB) \ - $(CAS_LDPATH) -lTKBool -lTKBO \ - $(KERNEL_LDFLAGS) - -CDL_FILES = \ - NMTTools.cdl - -EXTRA_DIST += \ - $(CDL_FILES) \ - FILES diff --git a/src/NMTTools_NEW/NMTTools.cdl b/src/NMTTools_NEW/NMTTools.cdl deleted file mode 100644 index 82a03105b..000000000 --- a/src/NMTTools_NEW/NMTTools.cdl +++ /dev/null @@ -1,129 +0,0 @@ --- Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE --- --- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, --- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- You should have received a copy of the GNU Lesser General Public --- License along with this library; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --- --- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --- - --- File: NMTTools.cdl --- Created: Thu Dec 4 16:55:49 2003 --- Author: Peter KURNEV --- --- -package NMTTools - - ---Purpose: - -uses - - TCollection, - TColStd, - gp, - TopAbs, - TopoDS, - TopTools, - Geom2d, - BooleanOperations, - BOPTColStd, - IntTools, - BOPTools, - NMTDS - -is - imported CoupleOfShape from NMTTools; - imported CommonBlock from NMTTools; - imported CommonBlockAPI from NMTTools; - imported FaceInfo from NMTTools; - imported Tools from NMTTools; - imported PaveFiller from NMTTools; - imported PPaveFiller from NMTTools; - imported DEProcessor from NMTTools; - imported CheckerSI from NMTTools; - -- - imported ListOfCommonBlock from NMTTools; - imported ListIteratorOfListOfCommonBlock from NMTTools; - - imported ListOfCoupleOfShape from NMTTools; - imported ListIteratorOfListOfCoupleOfShape from NMTTools; - - imported MapOfPaveBlock from NMTTools; - imported MapIteratorOfMapOfPaveBlock from NMTTools; - - imported IndexedDataMapOfIndexedMapOfInteger from NMTTools; - imported IndexedDataMapOfShapePaveBlock from NMTTools; - imported IndexedDataMapOfShapeIndexedMapOfShape from NMTTools; - - imported DataMapOfIntegerListOfPaveBlock from NMTTools; - imported DataMapIteratorOfDataMapOfIntegerListOfPaveBlock from NMTTools; - - imported DataMapOfIntegerFaceInfo from NMTTools; - imported DataMapIteratorOfDataMapOfIntegerFaceInfo from NMTTools; - - imported CommonBlockPool from NMTTools; - - -- - --class PaveFiller; - --class Tools; - --class CommonBlock; - --class CommonBlockAPI; - --class FaceInfo; - --class CoupleOfShape; - --class CheckerSI; - --class DEProcessor; - --pointer PPaveFiller to PaveFiller from NMTTools; - -- - --class ListOfCommonBlock instantiates - -- List from TCollection(CommonBlock from NMTTools); - - --class ListOfCoupleOfShape instantiates - -- List from TCollection(CoupleOfShape from NMTTools); --- - --class MapOfPaveBlock instantiates - -- Map from TCollection (PaveBlock from BOPTools, - -- PaveBlockMapHasher from BOPTools); --- - --class IndexedDataMapOfIndexedMapOfInteger instantiates - -- IndexedDataMap from TCollection (Integer from Standard, - -- IndexedMapOfInteger from TColStd, - -- MapIntegerHasher from TColStd); - - --class IndexedDataMapOfShapePaveBlock instantiates - -- IndexedDataMap from TCollection (Shape from TopoDS, - -- PaveBlock from BOPTools, - -- ShapeMapHasher from TopTools); - - --class IndexedDataMapOfShapeIndexedMapOfShape instantiates - -- IndexedDataMap from TCollection (Shape from TopoDS, - -- IndexedMapOfShape from TopTools, - -- ShapeMapHasher from TopTools); - --- - --class DataMapOfIntegerListOfPaveBlock instantiates - -- DataMap from TCollection(Integer from Standard, - -- ListOfPaveBlock from BOPTools, - -- MapIntegerHasher from TColStd); - - --class DataMapOfIntegerFaceInfo instantiates - -- DataMap from TCollection(Integer from Standard, - -- FaceInfo from NMTTools, - -- MapIntegerHasher from TColStd); --- - --class CommonBlockPool instantiates - -- CArray1 from BOPTColStd (ListOfCommonBlock from NMTTools); --- -end NMTTools; diff --git a/src/NMTTools_NEW/NMTTools_CheckerSI.cxx b/src/NMTTools_NEW/NMTTools_CheckerSI.cxx deleted file mode 100644 index 037445e16..000000000 --- a/src/NMTTools_NEW/NMTTools_CheckerSI.cxx +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_CheckerSI.cxx -// Created: Mon Feb 19 11:32:08 2007 -// Author: Peter KURNEV -// -#include - -#include -#include -#include -#include -#include - -//======================================================================= -//function : -//purpose : -//======================================================================= - NMTTools_CheckerSI::NMTTools_CheckerSI() -: - NMTTools_PaveFiller() -{ - myStopStatus=0; -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= - NMTTools_CheckerSI::~NMTTools_CheckerSI() -{ -} -//======================================================================= -//function : Clear -//purpose : -//======================================================================= - void NMTTools_CheckerSI::Clear() -{ - NMTTools_PaveFiller::Clear(); -} -//======================================================================= -//function : StopStatus -//purpose : -//======================================================================= - Standard_Integer NMTTools_CheckerSI::StopStatus()const -{ - return myStopStatus; -} -//======================================================================= -//function : Init -//purpose : -//======================================================================= - void NMTTools_CheckerSI::Init() -{ - myIsDone=Standard_False; - if (myCompositeShape.IsNull()) { - return; - } - // - Clear(); - // 1. - myDS=new NMTDS_ShapesDataStructure; - myDS->SetCompositeShape(myCompositeShape); - myDS->Init(); - // - // 2. - myDSIt=new NMTDS_IteratorCheckerSI; - myDSIt->SetDS(myDS); - myDSIt->Prepare(); - // - // 3. - myNbSources=myDS->NumberOfShapesOfTheObject()+ - myDS->NumberOfShapesOfTheTool(); - myNbEdges=myDS->NbEdges(); - // 4 - myIP=new NMTDS_InterfPool; - // - // 5 - myContext=new IntTools_Context; -} -//======================================================================= -//function : Perform -//purpose : -//======================================================================= - void NMTTools_CheckerSI::Perform() -{ - myIsDone=Standard_False; - myStopStatus=0; - // - Init(); - //1.VV - // - PerformVV(); - // - // 2.VE - myPavePool.Resize (myNbEdges); - - PrepareEdges(); - // - PerformVE(); - // - // 3.VF - PerformVF(); - // - // 4.EE - myCommonBlockPool.Resize (myNbEdges); - mySplitShapesPool.Resize (myNbEdges); - myPavePoolNew .Resize (myNbEdges); - // - PreparePaveBlocks(TopAbs_VERTEX, TopAbs_EDGE); - if (myStopStatus) { - return; - } - PreparePaveBlocks(TopAbs_EDGE, TopAbs_EDGE); - if (myStopStatus) { - return; - } - // - PerformEE(); - // - RefinePavePool (); - if (myStopStatus) { - return; - } - // - myPavePoolNew.Destroy(); - myPavePoolNew.Resize (myNbEdges); - // - // 5.EF - PreparePaveBlocks(TopAbs_EDGE, TopAbs_FACE); - if (myStopStatus) { - return; - } - // - PerformEF(); - // - RefinePavePool(); - if (myStopStatus) { - return; - } - // - myPavePoolNew.Destroy(); - // - MakeSplitEdges(); - // - UpdateCommonBlocks(); - // - // 6. FF - PerformFF (); - // - MakeBlocks(); - // - MakePCurves(); - // - // 7. Postprocessing - UpdatePaveBlocks(); - // - NMTTools_DEProcessor aDEP(*this); - aDEP.Do(); - // - MakeAloneVertices(); - // - myIsDone=Standard_True; -} diff --git a/src/NMTTools_NEW/NMTTools_CheckerSI.hxx b/src/NMTTools_NEW/NMTTools_CheckerSI.hxx deleted file mode 100644 index 27ec729d4..000000000 --- a/src/NMTTools_NEW/NMTTools_CheckerSI.hxx +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_CheckerSI.hxx -// Created: Mon Feb 19 11:32:08 2007 -// Author: Peter KURNEV -// -#ifndef _NMTTools_CheckerSI_HeaderFile -#define _NMTTools_CheckerSI_HeaderFile - -#include -#include -#include -#include -#include - -//======================================================================= -//class : NMTTools_CheckerSI -//purpose : -//======================================================================= -class NMTTools_CheckerSI : public NMTTools_PaveFiller -{ - public: - Standard_EXPORT - NMTTools_CheckerSI(); - - Standard_EXPORT - virtual ~NMTTools_CheckerSI(); - - Standard_EXPORT - virtual void Perform() ; - - Standard_EXPORT - Standard_Integer StopStatus() const; - - protected: - Standard_EXPORT - virtual void Init() ; - - Standard_EXPORT - virtual void Clear() ; - - Standard_EXPORT - virtual void PreparePaveBlocks(const Standard_Integer nE) ; - - Standard_EXPORT - virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1, - const TopAbs_ShapeEnum aType2) ; - - - Standard_Integer myStopStatus; -}; -#endif diff --git a/src/NMTTools_NEW/NMTTools_CheckerSI_1.cxx b/src/NMTTools_NEW/NMTTools_CheckerSI_1.cxx deleted file mode 100644 index 6cc796ac9..000000000 --- a/src/NMTTools_NEW/NMTTools_CheckerSI_1.cxx +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_CheckerSI.cxx -// Created: Mon Feb 19 11:32:08 2007 -// Author: Peter KURNEV -// -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - -static - Standard_Boolean IsValid(const TopoDS_Edge& aE, - const TopoDS_Vertex& aV, - const Standard_Real aTV1, - const Standard_Real aTV2); - -//======================================================================= -// function: PreparePaveBlocks -// purpose: -//======================================================================= - void NMTTools_CheckerSI::PreparePaveBlocks(const TopAbs_ShapeEnum aType1, - const TopAbs_ShapeEnum aType2) -{ - NMTTools_PaveFiller::PreparePaveBlocks(aType1, aType2); -} -//======================================================================= -// function: PreparePaveBlocks -// purpose: -//======================================================================= - void NMTTools_CheckerSI::PreparePaveBlocks(const Standard_Integer nE) -{ - myIsDone=Standard_False; - // - // char buf[32]={"SR"}; - Standard_Boolean bIsValid; - Standard_Integer nV1, nV2, iErr; - Standard_Real aT1, aT2; - TopoDS_Edge aE; - TopoDS_Vertex aV1, aV2; - // - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - // Edge - aE=TopoDS::Edge(myDS->Shape(nE)); - if (BRep_Tool::Degenerated(aE)) { - myIsDone=Standard_True; - return; - } - // - BOPTools_PaveSet& aPS=myPavePool(myDS->RefEdge(nE)); - - BOPTools_PaveBlockIterator aPBIt(nE, aPS); - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPB=aPBIt.Value(); - const IntTools_Range& aRange=aPB.Range(); - // - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - aV1=TopoDS::Vertex(myDS->Shape(nV1)); - aT1=aPave1.Param(); - // - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - aV2=TopoDS::Vertex(myDS->Shape(nV2)); - aT2=aPave2.Param(); - // - bIsValid=Standard_True; - if (nV1==nV2) { - bIsValid=IsValid(aE, aV1, aT1, aT2); - if (!bIsValid) { - //printf(" pb SR: nV nE: %d nV1:( %d %15.10lf ) nV2:( %d %15.10lf )\n", nE, nV1, aT1, nV2, aT2); - myStopStatus=1; - } - } - // - IntTools_ShrunkRange aSR (aE, aV1, aV2, aRange, myContext); - iErr=aSR.ErrorStatus(); - if (!aSR.IsDone()) { - //printf(" pb SR: Done nE: %d nV1:( %d %15.10lf ) nV2:( %d %15.10lf )\n", nE, nV1, aT1, nV2, aT2); - aSR.SetShrunkRange(aRange); - //throw BOPTColStd_Failure(buf) ; - } - else if (iErr!=6) { - CorrectShrunkRanges (0, aPave1, aSR); - CorrectShrunkRanges (1, aPave2, aSR); - } - aPB.SetShrunkRange(aSR); - aLPB.Append(aPB); - } //for (; aPBIt.More(); aPBIt.Next()) - myIsDone=Standard_True; -} - -//======================================================================= -//function : IsValid -//purpose : -//======================================================================= -Standard_Boolean IsValid(const TopoDS_Edge& aE, - const TopoDS_Vertex& aV, - const Standard_Real aTV1, - const Standard_Real aTV2) -{ - Standard_Boolean bRet; - Standard_Integer i, aNbP, aNbP1; - Standard_Real aTolV2, aTC1, aTC2, dT, aTC, aD2; - Handle(Geom_Curve) aC; - gp_Pnt aPV, aPC; - // - bRet=Standard_False; - aTolV2=BRep_Tool::Tolerance(aV); - aTolV2=aTolV2*aTolV2; - aPV=BRep_Tool::Pnt(aV); - aC=BRep_Tool::Curve(aE, aTC1, aTC2); - aNbP=7; - aNbP1=aNbP-1; - dT=(aTV2-aTV1)/aNbP1; - // - for (i=1; iD0(aTC, aPC); - aD2=aPV.SquareDistance(aPC); - bRet=aD2>aTolV2; - } - return bRet; -} diff --git a/src/NMTTools_NEW/NMTTools_CommonBlock.cxx b/src/NMTTools_NEW/NMTTools_CommonBlock.cxx deleted file mode 100644 index 6324342d9..000000000 --- a/src/NMTTools_NEW/NMTTools_CommonBlock.cxx +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_CommonBlock.cxx -// Created: Tue Dec 9 12:23:29 2003 -// Author: Peter KURNEV -// -// -#include - -#include -#include - -//======================================================================= -// function: NMTTools_CommonBlock::NMTTools_CommonBlock() -// purpose: -//======================================================================= - NMTTools_CommonBlock::NMTTools_CommonBlock() -{ -} -//======================================================================= -// function: AddPaveBlock -// purpose: -//======================================================================= - void NMTTools_CommonBlock::AddPaveBlock(const BOPTools_PaveBlock& aPB) -{ - myPaveBlocks.Append(aPB); -} -//======================================================================= -// function: AddFace -// purpose: -//======================================================================= - void NMTTools_CommonBlock::AddFace(const Standard_Integer aF) -{ - myFaces.Append(aF); -} -//======================================================================= -// function: AddFaces -// purpose: -//======================================================================= - void NMTTools_CommonBlock::AddFaces(const TColStd_ListOfInteger& aLF) -{ - TColStd_ListIteratorOfListOfInteger aIt(aLF); - // - for (; aIt.More(); aIt.Next()) { - myFaces.Append(aIt.Value()); - } -} -//======================================================================= -// function: PaveBlocks -// purpose: -//======================================================================= - const BOPTools_ListOfPaveBlock& NMTTools_CommonBlock::PaveBlocks()const -{ - return myPaveBlocks; -} -//======================================================================= -// function: Faces -// purpose: -//======================================================================= - const TColStd_ListOfInteger& NMTTools_CommonBlock::Faces()const -{ - return myFaces; -} -//======================================================================= -// function: PaveBlock1 -// purpose: -//======================================================================= - const BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlock1()const -{ - return myPaveBlocks.First(); -} -//======================================================================= -// function: PaveBlock1 -// purpose: -//======================================================================= - BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlock1(const Standard_Integer aIx) -{ - return PaveBlockOnEdge(aIx); -} -//======================================================================= -// function: PaveBlockOnEdge -// purpose: -//======================================================================= - BOPTools_PaveBlock& NMTTools_CommonBlock::PaveBlockOnEdge(const Standard_Integer aIx) -{ - static BOPTools_PaveBlock aPBs; - Standard_Integer aIOr; - BOPTools_ListIteratorOfListOfPaveBlock anIt(myPaveBlocks); - // - for (; anIt.More(); anIt.Next()) { - BOPTools_PaveBlock& aPB=anIt.Value(); - aIOr=aPB.OriginalEdge(); - if (aIOr==aIx){ - return aPB; - } - } - return aPBs; -} -//======================================================================= -// function: IsPaveBlockOnFace -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlock::IsPaveBlockOnFace(const Standard_Integer aIx)const -{ - Standard_Boolean bFound=Standard_False; - Standard_Integer nF; - TColStd_ListIteratorOfListOfInteger anIt(myFaces); - // - for (; anIt.More(); anIt.Next()) { - nF=anIt.Value(); - if (nF==aIx){ - return !bFound; - } - } - return bFound; -} -//======================================================================= -// function: IsPaveBlockOnEdge -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlock::IsPaveBlockOnEdge(const Standard_Integer aIx)const -{ - Standard_Boolean bFound=Standard_False; - Standard_Integer aIOr; - BOPTools_ListIteratorOfListOfPaveBlock anIt(myPaveBlocks); - // - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - aIOr=aPB.OriginalEdge(); - if (aIOr==aIx){ - return !bFound; - } - } - return bFound; -} -//======================================================================= -// function: IsEqual -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlock::IsEqual(const NMTTools_CommonBlock& aOther)const -{ - Standard_Boolean bFound=Standard_True; - Standard_Integer aNb1, aNb2; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - aNb1=myPaveBlocks.Extent(); - aNb2=aOther.myPaveBlocks.Extent(); - // - if (!aNb1 && !aNb2) { - return bFound; - } - if (!aNb1) { - return !bFound; - } - if (!aNb2) { - return !bFound; - } - // - const BOPTools_PaveBlock& aPB=PaveBlock1(); - // - anIt.Initialize(aOther.myPaveBlocks); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBOther=anIt.Value(); - if (aPB.IsEqual(aPBOther)){ - return bFound; - } - } - return !bFound; -} -//======================================================================= -// function: Contains -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlock::Contains(const BOPTools_PaveBlock& aPBx)const -{ - Standard_Boolean bFound=Standard_False; - Standard_Integer aNb1; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - aNb1=myPaveBlocks.Extent(); - // - if (!aNb1) { - return bFound; - } - // - anIt.Initialize(myPaveBlocks); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - if (aPB.IsEqual(aPBx)) { - return !bFound; - } - } - return bFound; -} -/* -//======================================================================= -// function: SetEdge -// purpose: -//======================================================================= - void NMTTools_CommonBlock::SetEdge(const Standard_Integer anEdge) -{ - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - anIt.Initialize(myPaveBlocks); - for (; anIt.More(); anIt.Next()) { - BOPTools_PaveBlock& aPB=anIt.Value(); - aPB.SetEdge(anEdge); - } -} -//======================================================================= -// function: Edge -// purpose: -//======================================================================= - Standard_Integer NMTTools_CommonBlock::Edge()const -{ - Standard_Integer aNb; - // - aNb=myPaveBlocks.Extent(); - // - if (!aNb) { - return aNb; - } - // - const BOPTools_PaveBlock& aPB=PaveBlock1(); - aNb=aPB.Edge(); - return aNb; -} -*/ diff --git a/src/NMTTools_NEW/NMTTools_CommonBlock.hxx b/src/NMTTools_NEW/NMTTools_CommonBlock.hxx deleted file mode 100644 index 8fabb1143..000000000 --- a/src/NMTTools_NEW/NMTTools_CommonBlock.hxx +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_CommonBlock.hxx -// Created: Tue Dec 9 12:23:29 2003 -// Author: Peter KURNEV -// -// - -#ifndef _NMTTools_CommonBlock_HeaderFile -#define _NMTTools_CommonBlock_HeaderFile - -#include -#include -#include -#include -#include -#include -#include - - -//======================================================================= -//function : NMTTools_CommonBlock -//purpose : -//======================================================================= -class NMTTools_CommonBlock { - public: - Standard_EXPORT - NMTTools_CommonBlock(); - - Standard_EXPORT - void AddPaveBlock(const BOPTools_PaveBlock& aPB) ; - - Standard_EXPORT - void AddFace(const Standard_Integer aF) ; - - Standard_EXPORT - void AddFaces(const TColStd_ListOfInteger& aLF) ; - - Standard_EXPORT - const BOPTools_ListOfPaveBlock& PaveBlocks() const; - - Standard_EXPORT - const TColStd_ListOfInteger& Faces() const; - - Standard_EXPORT - const BOPTools_PaveBlock& PaveBlock1() const; - - Standard_EXPORT - BOPTools_PaveBlock& PaveBlock1(const Standard_Integer anIx) ; - - Standard_EXPORT - BOPTools_PaveBlock& PaveBlockOnEdge(const Standard_Integer anIndex) ; - - Standard_EXPORT - Standard_Boolean IsPaveBlockOnFace(const Standard_Integer anIndex) const; - - Standard_EXPORT - Standard_Boolean IsPaveBlockOnEdge(const Standard_Integer anIndex) const; - - Standard_EXPORT - Standard_Boolean IsEqual(const NMTTools_CommonBlock& aCB) const; - - Standard_EXPORT - Standard_Boolean Contains(const BOPTools_PaveBlock& aPB) const; - - protected: - BOPTools_ListOfPaveBlock myPaveBlocks; - TColStd_ListOfInteger myFaces; -}; - -#endif diff --git a/src/NMTTools_NEW/NMTTools_CommonBlockAPI.cxx b/src/NMTTools_NEW/NMTTools_CommonBlockAPI.cxx deleted file mode 100644 index daaa5795e..000000000 --- a/src/NMTTools_NEW/NMTTools_CommonBlockAPI.cxx +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_CommonBlockAPI.cxx -// Created: Mon Dec 15 11:38:04 2003 -// Author: Peter KURNEV -// -// -#include - -#include -#include -#include - -#include -#include -#include - -//======================================================================= -// function: NMTTools_CommonBlockAPI::NMTTools_CommonBlockAPI -// purpose: -//======================================================================= - NMTTools_CommonBlockAPI::NMTTools_CommonBlockAPI (const NMTTools_ListOfCommonBlock& aLCB) -{ - myListOfCommonBlock=(void *)&aLCB; -} -//======================================================================= -// function: List -// purpose: -//======================================================================= - const NMTTools_ListOfCommonBlock& NMTTools_CommonBlockAPI::List () const -{ - NMTTools_ListOfCommonBlock* pListOfCommonBlock=(NMTTools_ListOfCommonBlock*)myListOfCommonBlock; - return *pListOfCommonBlock; -} -//======================================================================= -// function: CommonPaveBlocks -// purpose: get all CommonPaveBlocks -//======================================================================= - const BOPTools_ListOfPaveBlock& NMTTools_CommonBlockAPI::CommonPaveBlocks(const Standard_Integer anE) const -{ - Standard_Integer anECurrent; - BOPTools_ListIteratorOfListOfPaveBlock anItPB; - // - BOPTools_ListOfPaveBlock* pmyListOfPaveBlock=(BOPTools_ListOfPaveBlock*) &myListOfPaveBlock; - pmyListOfPaveBlock->Clear(); - - NMTTools_ListOfCommonBlock* pListOfCommonBlock=(NMTTools_ListOfCommonBlock*)myListOfCommonBlock; - - NMTTools_ListIteratorOfListOfCommonBlock anIt(*pListOfCommonBlock); - for (; anIt.More(); anIt.Next()) { - const NMTTools_CommonBlock& aCB=anIt.Value(); - // - const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); - anItPB.Initialize(aLPB); - for (; anItPB.More(); anItPB.Next()) { - const BOPTools_PaveBlock& aPB=anItPB.Value(); - anECurrent=aPB.OriginalEdge(); - if (anECurrent==anE) { - pmyListOfPaveBlock->Append(aPB); - break; - } - } - } - return myListOfPaveBlock; -} -//======================================================================= -// function: IsCommonBlock -// purpose: -//======================================================================= - Standard_Boolean NMTTools_CommonBlockAPI::IsCommonBlock(const BOPTools_PaveBlock& aPB) const -{ - Standard_Integer anE; - // - anE=aPB.OriginalEdge(); - // - CommonPaveBlocks(anE); - // - BOPTools_ListIteratorOfListOfPaveBlock anIt(myListOfPaveBlock); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB1=anIt.Value(); - if (aPB1.IsEqual(aPB)) { - return Standard_True; - } - } - return Standard_False; -} - -//======================================================================= -// function: CommonBlock -// purpose: -//======================================================================= - NMTTools_CommonBlock& NMTTools_CommonBlockAPI::CommonBlock(const BOPTools_PaveBlock& aPB)const -{ - static NMTTools_CommonBlock aCBTMP; - // - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - BOPTools_ListIteratorOfListOfPaveBlock anItPB; - // - NMTTools_ListOfCommonBlock* pLCB=(NMTTools_ListOfCommonBlock*)myListOfCommonBlock; - // - anItCB.Initialize(*pLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); - // - const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); - anItPB.Initialize(aLPB); - for (; anItPB.More(); anItPB.Next()) { - const BOPTools_PaveBlock& aPBx=anItPB.Value(); - if (aPBx.IsEqual(aPB)) { - return aCB; - } - } - } - return aCBTMP; -} diff --git a/src/NMTTools_NEW/NMTTools_CommonBlockAPI.hxx b/src/NMTTools_NEW/NMTTools_CommonBlockAPI.hxx deleted file mode 100644 index def2c49e9..000000000 --- a/src/NMTTools_NEW/NMTTools_CommonBlockAPI.hxx +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_CommonBlockAPI.hxx -// Created: Mon Dec 15 11:38:04 2003 -// Author: Peter KURNEV -// -// -#ifndef _NMTTools_CommonBlockAPI_HeaderFile -#define _NMTTools_CommonBlockAPI_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//class : NMTTools_CommonBlockAPI -//purpose : -//======================================================================= -class NMTTools_CommonBlockAPI -{ - public: - Standard_EXPORT - NMTTools_CommonBlockAPI(const NMTTools_ListOfCommonBlock& aList); - -//! Selector
        - Standard_EXPORT - const NMTTools_ListOfCommonBlock& List() const; - -//! Returns all PaveBlock-s (from the list) that are
        -//! common for the given edge with DS-index
        - Standard_EXPORT - const BOPTools_ListOfPaveBlock& CommonPaveBlocks(const Standard_Integer anE) const; - -//! Returns TRUE if given PaveBlock is
        -//! common for the Blocks from the list
        - Standard_EXPORT - Standard_Boolean IsCommonBlock(const BOPTools_PaveBlock& aPB) const; - - Standard_EXPORT - NMTTools_CommonBlock& CommonBlock(const BOPTools_PaveBlock& aPB) const; -protected: -//private: - -Standard_Address myListOfCommonBlock; -BOPTools_ListOfPaveBlock myListOfPaveBlock; -}; -#endif diff --git a/src/NMTTools_NEW/NMTTools_CommonBlockPool.hxx b/src/NMTTools_NEW/NMTTools_CommonBlockPool.hxx deleted file mode 100644 index f50c4471d..000000000 --- a/src/NMTTools_NEW/NMTTools_CommonBlockPool.hxx +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_CommonBlockPool.hxx -// Created: -// Author: Peter KURNEV -// -// - -#ifndef _NMTTools_CommonBlockPool_HeaderFile -#define _NMTTools_CommonBlockPool_HeaderFile - -#include -#include -#include -#include -#include -#include - -class Standard_OutOfRange; -class Standard_OutOfMemory; - - - -//======================================================================= -//class : NMTTools_CommonBlockPool -//purpose : -//======================================================================= -class NMTTools_CommonBlockPool -{ - public: - Standard_EXPORT - NMTTools_CommonBlockPool(const Standard_Integer Length = 0,const Standard_Integer BlockLength = 5); - - Standard_EXPORT - void Resize(const Standard_Integer theNewLength) ; - - Standard_EXPORT - void Destroy() ; - - ~NMTTools_CommonBlockPool() { - Destroy(); - } - - Standard_EXPORT - Standard_Integer Length() const; - - Standard_EXPORT - Standard_Integer Extent() const; - - Standard_EXPORT - Standard_Integer FactLength() const; - - Standard_EXPORT - Standard_Integer Append(const NMTTools_ListOfCommonBlock& Value) ; - - Standard_EXPORT - void Remove(const Standard_Integer Index) ; - - Standard_EXPORT - const NMTTools_ListOfCommonBlock& Value(const Standard_Integer Index) const; - - const NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) const { - return Value(Index); - } - - Standard_EXPORT - NMTTools_ListOfCommonBlock& ChangeValue(const Standard_Integer Index) ; - - NMTTools_ListOfCommonBlock& operator ()(const Standard_Integer Index) { - return ChangeValue(Index); - } - - Standard_EXPORT - void SetBlockLength(const Standard_Integer aBL) ; - - Standard_EXPORT - Standard_Integer BlockLength() const; - - Standard_EXPORT - void Purge() ; - -protected: - -private: - Standard_EXPORT - NMTTools_CommonBlockPool(const NMTTools_CommonBlockPool& AnArray); - - Standard_EXPORT - NMTTools_CommonBlockPool& Assign(const NMTTools_CommonBlockPool& Other) ; - - NMTTools_CommonBlockPool& operator =(const NMTTools_CommonBlockPool& Other) { - return Assign(Other); - } - - Standard_EXPORT - Standard_Boolean IsInvalidIndex(const Standard_Integer Index) const; - - - Standard_Address myStart; - Standard_Integer myLength; - Standard_Integer myFactLength; - Standard_Integer myBlockLength; - Standard_Boolean myIsAllocated; -}; -#endif diff --git a/src/NMTTools_NEW/NMTTools_CoupleOfShape.cxx b/src/NMTTools_NEW/NMTTools_CoupleOfShape.cxx deleted file mode 100644 index 958b953e1..000000000 --- a/src/NMTTools_NEW/NMTTools_CoupleOfShape.cxx +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_CoupleOfShape.cxx -// Created: Wed Jan 28 15:06:11 2004 -// Author: Peter KURNEV -// -// -#include - -//======================================================================= -// function: NMTTools_CoupleOfShape::NMTTools_CoupleOfShape -// purpose: -//======================================================================= - NMTTools_CoupleOfShape::NMTTools_CoupleOfShape() -{} -//======================================================================= -// function: SetShape1 -// purpose: -//======================================================================= - void NMTTools_CoupleOfShape::SetShape1(const TopoDS_Shape& aS) -{ - myShape1=aS; -} -//======================================================================= -// function: SetShape2 -// purpose: -//======================================================================= - void NMTTools_CoupleOfShape::SetShape2(const TopoDS_Shape& aS) -{ - myShape2=aS; -} -//======================================================================= -// function: Shape1 -// purpose: -//======================================================================= - const TopoDS_Shape& NMTTools_CoupleOfShape::Shape1()const -{ - return myShape1; -} -//======================================================================= -// function: Shape2 -// purpose: -//======================================================================= - const TopoDS_Shape& NMTTools_CoupleOfShape::Shape2()const -{ - return myShape2; -} diff --git a/src/NMTTools_NEW/NMTTools_CoupleOfShape.hxx b/src/NMTTools_NEW/NMTTools_CoupleOfShape.hxx deleted file mode 100644 index 6129512b4..000000000 --- a/src/NMTTools_NEW/NMTTools_CoupleOfShape.hxx +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_CoupleOfShape.hxx -// Created: Wed Jan 28 15:06:11 2004 -// Author: Peter KURNEV -// -// -#ifndef _NMTTools_CoupleOfShape_HeaderFile -#define _NMTTools_CoupleOfShape_HeaderFile - -#include -#include -#include - -//======================================================================= -//class : NMTTools_CoupleOfShape -//purpose : -//======================================================================= -class NMTTools_CoupleOfShape -{ - public: - Standard_EXPORT - NMTTools_CoupleOfShape(); - - Standard_EXPORT - void SetShape1(const TopoDS_Shape& aS) ; - - Standard_EXPORT - void SetShape2(const TopoDS_Shape& aS) ; - - Standard_EXPORT - const TopoDS_Shape& Shape1() const; - - Standard_EXPORT - const TopoDS_Shape& Shape2() const; - - protected: - TopoDS_Shape myShape1; - TopoDS_Shape myShape2; -}; -#endif diff --git a/src/NMTTools_NEW/NMTTools_DEProcessor.cxx b/src/NMTTools_NEW/NMTTools_DEProcessor.cxx deleted file mode 100644 index 2b701f0c2..000000000 --- a/src/NMTTools_NEW/NMTTools_DEProcessor.cxx +++ /dev/null @@ -1,568 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_DEProcessor.cxx -// Created: Wed Sep 12 12:10:52 2001 -// Author: Peter KURNEV -// -// -#include - -#include - -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -//======================================================================= -// function: -// purpose: -//======================================================================= - NMTTools_DEProcessor::NMTTools_DEProcessor(NMTTools_PaveFiller& aPaveFiller) -: - myIsDone(Standard_False) -{ - myFiller=(NMTTools_PaveFiller*) &aPaveFiller; - myDS=myFiller->DS(); -} -//======================================================================= -// function: IsDone -// purpose: -//======================================================================= - Standard_Boolean NMTTools_DEProcessor::IsDone() const -{ - return myIsDone; -} -//======================================================================= -// function: Do -// purpose: -//======================================================================= - void NMTTools_DEProcessor::Do() -{ - Standard_Integer aNbE; - // - myIsDone=Standard_False; - // - FindDegeneratedEdges(); - // - aNbE=myDEMap.Extent(); - if (!aNbE) { - myIsDone=!myIsDone; - return; - } - // - DoPaves(); -} -//======================================================================= -// function: FindDegeneratedEdges -// purpose: -//======================================================================= - void NMTTools_DEProcessor::FindDegeneratedEdges() -{ - Standard_Integer i, aNb, nV, nF, nVx, ip, iRankE; - TopoDS_Vertex aV; - TopTools_IndexedDataMapOfShapeListOfShape aMEF; - // - aNb=myDS->NumberOfShapesOfTheObject(); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape aF=myDS->Shape(i); - if (aF.ShapeType()==TopAbs_FACE) { - TopExp::MapShapesAndAncestors (aF, TopAbs_EDGE, TopAbs_FACE, aMEF); - } - } - // - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape aS=myDS->Shape(i); - if (aS.ShapeType()==TopAbs_EDGE) { - const TopoDS_Edge& aE=TopoDS::Edge(aS); - - if (BRep_Tool::Degenerated(aE)) { - iRankE=myDS->Rank(i); - aV=TopExp::FirstVertex(aE); - nVx=myDS->ShapeIndex(aV, iRankE); - // - nV=nVx; - ip=myFiller->FindSDVertex(nV); - if (ip) { - nV=ip; - } - // - TColStd_ListOfInteger aLFn; - const TopTools_ListOfShape& aLF=aMEF.FindFromKey(aE); - TopTools_ListIteratorOfListOfShape anIt(aLF); - for (; anIt.More(); anIt.Next()) { - const TopoDS_Shape& aF=anIt.Value(); - nF=myDS->ShapeIndex(aF, iRankE); - aLFn.Append(nF); - } - BOPTools_DEInfo aDEInfo; - aDEInfo.SetVertex(nV); - aDEInfo.SetFaces(aLFn); - - myDEMap.Add (i, aDEInfo); - } - } - } -} -//======================================================================= -// function: DoPaves -// purpose: -//======================================================================= - void NMTTools_DEProcessor::DoPaves() -{ - - Standard_Integer i, aNbE, nED, nVD, aNbLPB, nFD; - // - nFD=0; - aNbE=myDEMap.Extent(); - for (i=1; i<=aNbE; ++i) { - nED=myDEMap.FindKey(i); - // - const BOPTools_DEInfo& aDEInfo=myDEMap(i); - nVD=aDEInfo.Vertex(); - // - // Fill PaveSet for the edge nED - const TColStd_ListOfInteger& nLF=aDEInfo.Faces(); - TColStd_ListIteratorOfListOfInteger anIt(nLF); - for (; anIt.More(); anIt.Next()) { - nFD=anIt.Value(); - - BOPTools_ListOfPaveBlock aLPB; - FindPaveBlocks(nED, nVD, nFD, aLPB); - // - aNbLPB=aLPB.Extent(); - if (!aNbLPB) { - continue; - } - // - FillPaveSet (nED, nVD, nFD, aLPB); - } - // - // Fill aSplitEdges for the edge nED - FillSplitEdgesPool(nED); - // - // MakeSplitEdges - MakeSplitEdges(nED, nFD); - // - }// next nED -} -//======================================================================= -// function: FindPaveBlocks -// purpose: -//======================================================================= - void NMTTools_DEProcessor::FindPaveBlocks(const Standard_Integer , - const Standard_Integer nVD, - const Standard_Integer nFD, - BOPTools_ListOfPaveBlock& aLPBOut) -{ - BOPTools_ListIteratorOfListOfPaveBlock anIt; - Standard_Integer i, aNb, nF2, nV; - // - BOPTools_CArray1OfSSInterference& aFFs=(myFiller->IP())->SSInterferences(); - // - aNb=aFFs.Extent(); - for (i=1; i<=aNb; ++i) { - BOPTools_SSInterference& aFF=aFFs(i); - // - nF2=aFF.OppositeIndex(nFD); - if (!nF2) { - continue; - } - // - // Split Parts - const BOPTools_ListOfPaveBlock& aLPBSplits=aFF.PaveBlocks(); - anIt.Initialize(aLPBSplits); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBSp=anIt.Value(); - // - const BOPTools_Pave& aPave1=aPBSp.Pave1(); - nV=aPave1.Index(); - if (nV==nVD) { - aLPBOut.Append(aPBSp); - continue; - } - // - const BOPTools_Pave& aPave2=aPBSp.Pave2(); - nV=aPave2.Index(); - if (nV==nVD) { - aLPBOut.Append(aPBSp); - continue; - } - } - // - // Section Parts - Standard_Integer j, aNbCurves; - // - BOPTools_SequenceOfCurves& aSC=aFF.Curves(); - aNbCurves=aSC.Length(); - for (j=1; j<=aNbCurves; ++j) { - const BOPTools_Curve& aBC=aSC(j); - const BOPTools_ListOfPaveBlock& aLPBSe=aBC.NewPaveBlocks(); - // - anIt.Initialize(aLPBSe); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBSe=anIt.Value(); - // - const BOPTools_Pave& aPv1=aPBSe.Pave1(); - nV=aPv1.Index(); - if (nV==nVD) { - aLPBOut.Append(aPBSe); - continue; - } - // - const BOPTools_Pave& aPv2=aPBSe.Pave2(); - nV=aPv2.Index(); - if (nV==nVD) { - aLPBOut.Append(aPBSe); - continue; - } - } - } - } -} -//======================================================================= -// function: FillPaveSet -// purpose: -//======================================================================= - void NMTTools_DEProcessor::FillPaveSet (const Standard_Integer nED, - const Standard_Integer nVD, - const Standard_Integer nFD, - const BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Boolean bIsDone, bXDir, bRejectFlag; - Standard_Integer nE, aNbPoints, j; - Standard_Real aTD1, aTD2, aT1, aT2, aTolInter, aX, aDT, aXx; - gp_Pnt2d aP2d1, aP2d2, aP2D; - gp_Lin2d aLDE; - // - aDT=Precision::PConfusion(); - // - BOPTools_PaveSet& aPaveSet= - (myFiller->ChangePavePool()).ChangeValue(myDS->RefEdge(nED)); - // - // Clear aPaveSet, aSplitEdges - aPaveSet.ChangeSet().Clear(); - // - const TopoDS_Edge aDE=TopoDS::Edge(myDS->Shape(nED)); - const TopoDS_Face aDF=TopoDS::Face(myDS->Shape(nFD)); - // - // 2D Curve of degenerated edge on the face aDF - Handle(Geom2d_Curve) aC2DDE1=BRep_Tool::CurveOnSurface(aDE, aDF, aTD1, aTD2); - Handle(Geom2d_TrimmedCurve)aC2DDE=new Geom2d_TrimmedCurve(aC2DDE1, aTD1, aTD2); - // - // Choose direction for degenerated edge - aC2DDE->D0(aTD1, aP2d1); - aC2DDE->D0(aTD2, aP2d2); - - bXDir=Standard_False; - if (fabs(aP2d1.Y()-aP2d2.Y()) < aDT){ - bXDir=!bXDir; - } - // - // Prepare bounding Paves - BOPTools_Pave aPave1 (nVD, aTD1, BooleanOperations_UnknownInterference); - aPaveSet.Append(aPave1); - BOPTools_Pave aPave2 (nVD, aTD2, BooleanOperations_UnknownInterference); - aPaveSet.Append(aPave2); - // - // Fill other paves - BOPTools_ListIteratorOfListOfPaveBlock anIt(aLPB); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - nE=aPB.Edge(); - const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE)); - - Handle(Geom2d_Curve) aC2D=BRep_Tool::CurveOnSurface(aE, aDF, aT1, aT2); - // - // Intersection - Geom2dAdaptor_Curve aGAC1, aGAC2; - // - aGAC1.Load(aC2DDE, aTD1, aTD2); - Handle(Geom2d_Line) aL2D= Handle(Geom2d_Line)::DownCast(aC2D); - if (!aL2D.IsNull()) { - aGAC2.Load(aC2D); - } - else { - aGAC2.Load(aC2D, aT1, aT2); - } - // - aTolInter=0.001; - Geom2dInt_GInter aGInter(aGAC1, aGAC2, aTolInter, aTolInter); - bIsDone=aGInter.IsDone(); - if(bIsDone) { - aNbPoints=aGInter.NbPoints(); - if (aNbPoints) { - for (j=1; j<=aNbPoints; ++j) { - aP2D=aGInter.Point(j).Value(); - Handle(Geom2d_Line) aCLDE; - // - //modified by NIZNHY-PKV Thu Mar 20 17:37:32 2008f - Handle(Geom2d_TrimmedCurve) aCLDET1= - Handle(Geom2d_TrimmedCurve)::DownCast(aC2DDE1); - if (aCLDET1.IsNull()) { - aCLDE=Handle(Geom2d_Line)::DownCast(aC2DDE1); - } - else { - Handle(Geom2d_Curve) aBasisCurve=aCLDET1->BasisCurve(); - aCLDE=Handle(Geom2d_Line)::DownCast(aBasisCurve); - } - //aCLDE=Handle(Geom2d_Line)::DownCast(aC2DDE1); - //modified by NIZNHY-PKV Thu Mar 20 17:37:37 2008t - - if (aCLDE.IsNull()) { - continue; - } - - aLDE=aCLDE->Lin2d(); - aX=ElCLib::Parameter(aLDE, aP2D); - // - if (fabs (aX-aTD1) < aDT || fabs (aX-aTD2) < aDT) { - continue; - } - if (aX < aTD1 || aX > aTD2) { - continue; - } - // - bRejectFlag=Standard_False; - const BOPTools_ListOfPave& aListOfPave=aPaveSet.Set(); - BOPTools_ListIteratorOfListOfPave aPaveIt(aListOfPave); - for (; aPaveIt.More(); aPaveIt.Next()) { - const BOPTools_Pave& aPavex=aPaveIt.Value(); - aXx=aPavex.Param(); - if (fabs (aX-aXx) < aDT) { - bRejectFlag=Standard_True; - break; - } - } - if (bRejectFlag) { - continue; - } - // - BOPTools_Pave aPave(nVD, aX, BooleanOperations_UnknownInterference); - aPaveSet.Append(aPave); - } - } - } - } -} -//======================================================================= -// function: FillSplitEdgesPool -// purpose: -//======================================================================= - void NMTTools_DEProcessor::FillSplitEdgesPool (const Standard_Integer nED) -{ - BOPTools_SplitShapesPool& aSplitShapesPool= - myFiller->ChangeSplitShapesPool(); - BOPTools_ListOfPaveBlock& aSplitEdges= - aSplitShapesPool.ChangeValue(myDS->RefEdge(nED)); - // - aSplitEdges.Clear(); - // - const BOPTools_PavePool& aPavePool=myFiller->PavePool(); - BOPTools_PavePool* pPavePool=(BOPTools_PavePool*) &aPavePool; - BOPTools_PaveSet& aPaveSet= pPavePool->ChangeValue(myDS->RefEdge(nED)); - - BOPTools_PaveBlockIterator aPBIt(nED, aPaveSet); - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPB=aPBIt.Value(); - aSplitEdges.Append(aPB); - } -} -//======================================================================= -// function: MakeSplitEdges -// purpose: -//======================================================================= - void NMTTools_DEProcessor::MakeSplitEdges (const Standard_Integer nED, - const Standard_Integer nFD) -{ - const BOPTools_SplitShapesPool& aSplitShapesPool=myFiller->SplitShapesPool(); - const BOPTools_ListOfPaveBlock& aSplitEdges=aSplitShapesPool(myDS->RefEdge(nED)); - - Standard_Integer nV1, nV2, aNbPB, aNewShapeIndex; - Standard_Real t1, t2; - TopoDS_Edge aE, aESplit; - TopoDS_Vertex aV1, aV2; - BOPTools_ListIteratorOfListOfPaveBlock aPBIt; - // - const TopoDS_Edge aDE=TopoDS::Edge(myDS->Shape(nED)); - const TopoDS_Face aDF=TopoDS::Face(myDS->Shape(nFD)); - // - //modified by NIZNHY-PKV Wed Oct 20 13:20:37 2010f - aNbPB=aSplitEdges.Extent(); - if (aNbPB==1) { - Standard_Real aT1, aT2, dT1, dT2, aDT; - Handle(Geom2d_Curve) aC2D; - // - BOPTools_PaveBlock& aPB=aSplitEdges.First(); - // - const BOPTools_Pave& aPave1=aPB.Pave1(); - t1=aPave1.Param(); - const BOPTools_Pave& aPave2=aPB.Pave2(); - t2=aPave2.Param(); - //// - nV1=aPave1.Index(); - aV1=*((TopoDS_Vertex*)&myDS->GetShape(nV1)); - // - aV2=TopExp::FirstVertex(aDE); - if (aV2.IsSame(aV1)) { - aC2D=BRep_Tool::CurveOnSurface(aDE, aDF, aT1, aT2); - dT1=aT1-t1; - if (dT1<0.) { - dT1=-dT1; - } - // - dT2=aT2-t2; - if (dT2<0.) { - dT2=-dT2; - } - aDT=Precision::PConfusion(); - if(dT1Clear(); - return; - } - } - } - //modified by NIZNHY-PKV Wed Oct 20 13:20:39 2010t - // - aPBIt.Initialize(aSplitEdges); - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPB=aPBIt.Value(); - - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - t1=aPave1.Param(); - aV1=TopoDS::Vertex(myDS->GetShape(nV1)); - aV1.Orientation(TopAbs_FORWARD); - - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - t2=aPave2.Param(); - aV2=TopoDS::Vertex(myDS->GetShape(nV2)); - aV2.Orientation(TopAbs_REVERSED); - - MakeSplitEdge(aDE, aDF, aV1, t1, aV2, t2, aESplit); - // - // Add Split Part of the Original Edge to the DS - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - - anASSeq.SetNewSuccessor(nV1); - anASSeq.SetNewOrientation(aV1.Orientation()); - - anASSeq.SetNewSuccessor(nV2); - anASSeq.SetNewOrientation(aV2.Orientation()); - - myDS->InsertShapeAndAncestorsSuccessors(aESplit, anASSeq); - aNewShapeIndex=myDS->NumberOfInsertedShapes(); - myDS->SetState(aNewShapeIndex, BooleanOperations_UNKNOWN); - // - // Fill Split Set for the Original Edge - aPB.SetEdge(aNewShapeIndex); - // - } -} -//======================================================================= -// function: MakeSplitEdge -// purpose: -//======================================================================= - void NMTTools_DEProcessor::MakeSplitEdge (const TopoDS_Edge& aE, - const TopoDS_Face& aF, - const TopoDS_Vertex& aV1, - const Standard_Real aP1, - const TopoDS_Vertex& aV2, - const Standard_Real aP2, - TopoDS_Edge& aNewEdge) -{ - Standard_Real aTol=1.e-7; - - TopoDS_Edge E=aE; - - E.EmptyCopy(); - BRep_Builder BB; - BB.Add (E, aV1); - BB.Add (E, aV2); - - BB.Range(E, aF, aP1, aP2); - - BB.Degenerated(E, Standard_True); - - BB.UpdateEdge(E, aTol); - aNewEdge=E; -} - diff --git a/src/NMTTools_NEW/NMTTools_DEProcessor.hxx b/src/NMTTools_NEW/NMTTools_DEProcessor.hxx deleted file mode 100644 index 147792f59..000000000 --- a/src/NMTTools_NEW/NMTTools_DEProcessor.hxx +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_DEProcessor.hxx -// Created: Wed Sep 12 12:10:52 2001 -// Author: Peter KURNEV -// - -#ifndef _NMTTools_DEProcessor_HeaderFile -#define _NMTTools_DEProcessor_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -//!
        -//! The Algorithm to compute and store in interferences' pool
        -//! and in the Data Structure the following values
        -//! for degenerated edges
        -//! 1. Paves/Pave set(s)
        -//! 2. Split parts
        -//! 3. States (3D) for split parts
        -//!
        -//======================================================================= -//class : NMTTools_DEProcessor -//purpose : -//======================================================================= -class NMTTools_DEProcessor { -public: - - - -//! Constructor
        -//!
        -//! Constructor
        -//!
        - Standard_EXPORT - NMTTools_DEProcessor(NMTTools_PaveFiller& aFiller); - -//! Launches the processor
        - Standard_EXPORT - void Do() ; - -//! Returns TRUE if it is Ok
        - Standard_EXPORT - Standard_Boolean IsDone() const; - - - -protected: - Standard_EXPORT - void FindDegeneratedEdges() ; - - Standard_EXPORT - void DoPaves() ; - - Standard_EXPORT - void FindPaveBlocks(const Standard_Integer nED, - const Standard_Integer nVD, - const Standard_Integer nFD, - BOPTools_ListOfPaveBlock& aLPB) ; - - Standard_EXPORT - void FillPaveSet(const Standard_Integer nED, - const Standard_Integer nVD, - const Standard_Integer nFD, - const BOPTools_ListOfPaveBlock& aLPB) ; - - Standard_EXPORT - void FillSplitEdgesPool(const Standard_Integer nED) ; - - Standard_EXPORT - void MakeSplitEdges(const Standard_Integer nED, - const Standard_Integer nFD) ; - - Standard_EXPORT - void MakeSplitEdge(const TopoDS_Edge& aS1, - const TopoDS_Face& aF, - const TopoDS_Vertex& aV1, - const Standard_Real aP1, - const TopoDS_Vertex& aV2, - const Standard_Real aP2, - TopoDS_Edge& aNewEdge) ; - - - NMTTools_PPaveFiller myFiller; - NMTDS_PShapesDataStructure myDS; - Standard_Boolean myIsDone; - BOPTools_IndexedDataMapOfIntegerDEInfo myDEMap; -}; -#endif diff --git a/src/NMTTools_NEW/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx b/src/NMTTools_NEW/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx deleted file mode 100644 index 8e071554d..000000000 --- a/src/NMTTools_NEW/NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo.hxx -// Created: Mon Feb 20 12:24:47 2012 -// Author: -// - - -#ifndef NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_HeaderFile -#define NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo_HeaderFile - -#ifndef NMTTools_DataMapOfIntegerFaceInfo_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTTools_NEW/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools_NEW/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx deleted file mode 100644 index 82fa67266..000000000 --- a/src/NMTTools_NEW/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx +++ /dev/null @@ -1,14 +0,0 @@ -// File: NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx -// Created: Mon Feb 20 12:04:52 2012 -// Author: -// - - -#ifndef NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile -#define NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile - -#ifndef NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTTools_NEW/NMTTools_DataMapOfIntegerFaceInfo.hxx b/src/NMTTools_NEW/NMTTools_DataMapOfIntegerFaceInfo.hxx deleted file mode 100644 index 99efe576c..000000000 --- a/src/NMTTools_NEW/NMTTools_DataMapOfIntegerFaceInfo.hxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_DataMapOfIntegerFaceInfo.hxx -// Created: Mon Feb 20 12:21:55 2012 -// Author: -// - - -#ifndef NMTTools_DataMapOfIntegerFaceInfo_HeaderFile -#define NMTTools_DataMapOfIntegerFaceInfo_HeaderFile - -#include -#include - -#define _NCollection_MapHasher -#include - -typedef NCollection_DataMap NMTTools_DataMapOfIntegerFaceInfo; -typedef NMTTools_DataMapOfIntegerFaceInfo::Iterator NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo; - -#undef _NCollection_MapHasher - - -#endif diff --git a/src/NMTTools_NEW/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools_NEW/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx deleted file mode 100644 index 7a3e80549..000000000 --- a/src/NMTTools_NEW/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_DataMapOfIntegerListOfPaveBlock.hxx -// Created: Mon Feb 20 09:27:40 2012 -// Author: -// - - -#ifndef NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile -#define NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile - - -#include -#include - -#define _NCollection_MapHasher -#include - -typedef NCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock; -typedef NMTTools_DataMapOfIntegerListOfPaveBlock::Iterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock; - -#undef _NCollection_MapHasher - - -#endif diff --git a/src/NMTTools_NEW/NMTTools_FaceInfo.cxx b/src/NMTTools_NEW/NMTTools_FaceInfo.cxx deleted file mode 100644 index 6cd717aa1..000000000 --- a/src/NMTTools_NEW/NMTTools_FaceInfo.cxx +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_FaceInfo.cxx -// Created: Tue Dec 9 12:23:29 2003 -// Author: Peter KURNEV -// -// -#include diff --git a/src/NMTTools_NEW/NMTTools_FaceInfo.hxx b/src/NMTTools_NEW/NMTTools_FaceInfo.hxx deleted file mode 100644 index 3d6218ae2..000000000 --- a/src/NMTTools_NEW/NMTTools_FaceInfo.hxx +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_FaceInfo.hxx -// Created: Tue Dec 9 12:23:29 2003 -// Author: Peter KURNEV -// -// -#ifndef _NMTTools_FaceInfo_HeaderFile -#define _NMTTools_FaceInfo_HeaderFile - -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//class : NMTTools_FaceInfo -//purpose : -//======================================================================= -class NMTTools_FaceInfo { - public: - - //! Empty contructor
        - //!
        - NMTTools_FaceInfo(); - - virtual ~NMTTools_FaceInfo(); - - //! Clears the contents
        - Standard_EXPORT void Clear() ; - - //! Modifier
        - //! Sets the index of the face
        - void SetIndex(const Standard_Integer theI) ; - - //! Selector
        - //! Returns the index of the face
        - //!
        - //! In
        - //!
        - Standard_Integer Index() const; - - //! Selector
        - //! Returns the pave blocks of the face
        - //! that have state In
        - const NMTTools_MapOfPaveBlock& PaveBlocksIn() const; - -//! Selector/Modifier
        - //! Returns the pave blocks
        - //! of the face
        - //! that have state In
        - NMTTools_MapOfPaveBlock& ChangePaveBlocksIn() ; - - //! Selector
        - //! Returns the list of indices for vertices
        - //! of the face
        - //! that have state In
        - const TColStd_MapOfInteger& VerticesIn() const; - - //! Selector/Modifier
        - //! Returns the list of indices for vertices
        - //! of the face
        - //! that have state In
        - //!
        - //! On
        - //!
        - TColStd_MapOfInteger& ChangeVerticesIn() ; - - //! Selector
        - //! Returns the pave blocks of the face
        - //! that have state On
        - const NMTTools_MapOfPaveBlock& PaveBlocksOn() const; - - //! Selector/Modifier
        - //! Returns the pave blocks
        - //! of the face
        - //! that have state On
        - NMTTools_MapOfPaveBlock& ChangePaveBlocksOn() ; - - //! Selector
        - //! Returns the list of indices for vertices
        - //! of the face
        - //! that have state On
        - const TColStd_MapOfInteger& VerticesOn() const; - - //! Selector/Modifier
        - //! Returns the list of indices for vertices
        - //! of the face
        - //! that have state On
        - TColStd_MapOfInteger& ChangeVerticesOn() ; - - protected: - Standard_Integer myIndex; - NMTTools_MapOfPaveBlock myPaveBlocksIn; - TColStd_MapOfInteger myVerticesIn; - NMTTools_MapOfPaveBlock myPaveBlocksOn; - TColStd_MapOfInteger myVerticesOn; -}; - -#include -#endif diff --git a/src/NMTTools_NEW/NMTTools_FaceInfo.lxx b/src/NMTTools_NEW/NMTTools_FaceInfo.lxx deleted file mode 100644 index b92bca7b1..000000000 --- a/src/NMTTools_NEW/NMTTools_FaceInfo.lxx +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File: NMTTools_FaceInfo.lxx -// Created: Tue Dec 9 12:23:29 2003 -// Author: Peter KURNEV -// -// - -//======================================================================= -//function : -//purpose : -//======================================================================= -inline NMTTools_FaceInfo::NMTTools_FaceInfo() -: - myIndex(-1) -{ -} -//======================================================================= -//function : ~ -//purpose : -//======================================================================= -inline NMTTools_FaceInfo::~NMTTools_FaceInfo() -{ - Clear(); -} -//======================================================================= -//function : Clear -//purpose : -//======================================================================= -inline void NMTTools_FaceInfo::Clear() -{ - myIndex=-1; - myPaveBlocksIn.Clear(); - myVerticesIn.Clear(); - myPaveBlocksOn.Clear(); - myVerticesOn.Clear(); -} -//======================================================================= -//function : SetIndex -//purpose : -//======================================================================= - inline void NMTTools_FaceInfo::SetIndex(const Standard_Integer theI) -{ - myIndex=theI; -} -//======================================================================= -//function : Index -//purpose : -//======================================================================= - inline Standard_Integer NMTTools_FaceInfo::Index()const -{ - return myIndex; -} -//======================================================================= -//function : PaveBlockIn -//purpose : -//======================================================================= - inline const NMTTools_MapOfPaveBlock& NMTTools_FaceInfo::PaveBlocksIn()const -{ - return myPaveBlocksIn; -} -//======================================================================= -//function : ChangePaveBlocksIn -//purpose : -//======================================================================= - inline NMTTools_MapOfPaveBlock& NMTTools_FaceInfo::ChangePaveBlocksIn() -{ - return myPaveBlocksIn; -} -//======================================================================= -//function : VerticesIn -//purpose : -//======================================================================= - inline const TColStd_MapOfInteger& NMTTools_FaceInfo::VerticesIn()const -{ - return myVerticesIn; -} -//======================================================================= -//function : ChangeVerticesIn -//purpose : -//======================================================================= - inline TColStd_MapOfInteger& NMTTools_FaceInfo::ChangeVerticesIn() -{ - return myVerticesIn; -} -//======================================================================= -//function : PaveBlockOn -//purpose : -//======================================================================= - inline const NMTTools_MapOfPaveBlock& NMTTools_FaceInfo::PaveBlocksOn()const -{ - return myPaveBlocksOn; -} -//======================================================================= -//function : ChangePaveBlocksOn -//purpose : -//======================================================================= - inline NMTTools_MapOfPaveBlock& NMTTools_FaceInfo::ChangePaveBlocksOn() -{ - return myPaveBlocksOn; -} -//======================================================================= -//function : VerticesOn -//purpose : -//======================================================================= - inline const TColStd_MapOfInteger& NMTTools_FaceInfo::VerticesOn()const -{ - return myVerticesOn; -} -//======================================================================= -//function : ChangeVerticesOn -//purpose : -//======================================================================= - inline TColStd_MapOfInteger& NMTTools_FaceInfo::ChangeVerticesOn() -{ - return myVerticesOn; -} diff --git a/src/NMTTools_NEW/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx b/src/NMTTools_NEW/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx deleted file mode 100644 index 7d3822488..000000000 --- a/src/NMTTools_NEW/NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx -// Created: Mon Feb 20 09:20:07 2012 -// Author: -// - - -#ifndef NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile -#define NMTTools_IndexedDataMapOfIndexedMapOfInteger_HeaderFile - - -#include -#include -#include - -#define _NCollection_MapHasher -#include - -typedef NCollection_IndexedDataMap NMTTools_IndexedDataMapOfIndexedMapOfInteger; - -#undef _NCollection_MapHasher - - - -#endif diff --git a/src/NMTTools_NEW/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/NMTTools_NEW/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx deleted file mode 100644 index ef50fa54d..000000000 --- a/src/NMTTools_NEW/NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx -// Created: Mon Feb 20 09:20:07 2012 -// Author: -// -// File: NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx -// Created: Mon Feb 20 11:59:23 2012 -// Author: -// - - -#ifndef NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile -#define NMTTools_IndexedDataMapOfShapeIndexedMapOfShape_HeaderFile - - -#include -#include -#include - -#define _NCollection_MapHasher -#include - - -typedef NCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapeIndexedMapOfShape; - -#undef _NCollection_MapHasher - - -#endif - diff --git a/src/NMTTools_NEW/NMTTools_IndexedDataMapOfShapePaveBlock.hxx b/src/NMTTools_NEW/NMTTools_IndexedDataMapOfShapePaveBlock.hxx deleted file mode 100644 index 1e96e62bd..000000000 --- a/src/NMTTools_NEW/NMTTools_IndexedDataMapOfShapePaveBlock.hxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_IndexedDataMapOfShapePaveBlock.hxx -// Created: Mon Feb 20 11:55:34 2012 -// Author: -// - - -#ifndef NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile -#define NMTTools_IndexedDataMapOfShapePaveBlock_HeaderFile - -#include -#include -#include - -#define _NCollection_MapHasher -#include - -typedef NCollection_IndexedDataMap NMTTools_IndexedDataMapOfShapePaveBlock; - -#undef _NCollection_MapHasher - - -#endif diff --git a/src/NMTTools_NEW/NMTTools_ListIteratorOfListOfCommonBlock.hxx b/src/NMTTools_NEW/NMTTools_ListIteratorOfListOfCommonBlock.hxx deleted file mode 100644 index de43fb7e3..000000000 --- a/src/NMTTools_NEW/NMTTools_ListIteratorOfListOfCommonBlock.hxx +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListIteratorOfListOfCommonBlock.hxx -// Created: Mon Feb 20 11:25:23 2012 -// Author: -// - -#ifndef NMTDS_ListIteratorOfListOfCommonBlock_HeaderFile -#define NMTDS_ListIteratorOfListOfCommonBlock_HeaderFile - -#ifndef NMTTools_ListOfCommonBlock_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTTools_NEW/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx b/src/NMTTools_NEW/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx deleted file mode 100644 index 61dc585b7..000000000 --- a/src/NMTTools_NEW/NMTTools_ListIteratorOfListOfCoupleOfShape.hxx +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTDS_ListIteratorOfListOfCoupleOfShape.hxx -// Created: Mon Feb 20 11:25:23 2012 -// Author: -// - -#ifndef NMTDS_ListIteratorOfListOfCoupleOfShape_HeaderFile -#define NMTDS_ListIteratorOfListOfCoupleOfShape_HeaderFile - -#ifndef NMTTools_ListOfCoupleOfShape_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTTools_NEW/NMTTools_ListOfCommonBlock.hxx b/src/NMTTools_NEW/NMTTools_ListOfCommonBlock.hxx deleted file mode 100644 index 02654de6b..000000000 --- a/src/NMTTools_NEW/NMTTools_ListOfCommonBlock.hxx +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_ListOfCommonBlock.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - -#ifndef NMTTools_ListOfCommonBlock_HeaderFile -#define NMTTools_ListOfCommonBlock_HeaderFile - -#include -#include - -typedef NCollection_List NMTTools_ListOfCommonBlock; -typedef NMTTools_ListOfCommonBlock::Iterator NMTTools_ListIteratorOfListOfCommonBlock; - -#endif diff --git a/src/NMTTools_NEW/NMTTools_ListOfCoupleOfShape.hxx b/src/NMTTools_NEW/NMTTools_ListOfCoupleOfShape.hxx deleted file mode 100644 index f3e6ae3fb..000000000 --- a/src/NMTTools_NEW/NMTTools_ListOfCoupleOfShape.hxx +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_ListOfCoupleOfShape.hxx -// Created: Mon Feb 20 07:27:34 2012 -// Author: -// - -#ifndef NMTTools_ListOfCoupleOfShape_HeaderFile -#define NMTTools_ListOfCoupleOfShape_HeaderFile - -#include -#include - -typedef NCollection_List NMTTools_ListOfCoupleOfShape; -typedef NMTTools_ListOfCoupleOfShape::Iterator NMTTools_ListIteratorOfListOfCoupleOfShape; - -#endif diff --git a/src/NMTTools_NEW/NMTTools_MapIteratorOfMapOfPaveBlock.hxx b/src/NMTTools_NEW/NMTTools_MapIteratorOfMapOfPaveBlock.hxx deleted file mode 100644 index 6d62fd75a..000000000 --- a/src/NMTTools_NEW/NMTTools_MapIteratorOfMapOfPaveBlock.hxx +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_MapIteratorOfMapOfPaveBlock.hxx -// Created: Mon Feb 20 11:47:30 2012 -// Author: -// - - -#ifndef NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile -#define NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile - -#ifndef NMTTools_MapOfPaveBlock_HeaderFile -#include -#endif - -#endif diff --git a/src/NMTTools_NEW/NMTTools_MapOfPaveBlock.hxx b/src/NMTTools_NEW/NMTTools_MapOfPaveBlock.hxx deleted file mode 100644 index 7f97d9942..000000000 --- a/src/NMTTools_NEW/NMTTools_MapOfPaveBlock.hxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2007-2011 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: NMTTools_MapOfPaveBlock.hxx -// Created: Mon Feb 20 08:19:07 2012 -// Author: -// - - -#ifndef NMTTools_MapOfPaveBlock_HeaderFile -#define NMTTools_MapOfPaveBlock_HeaderFile - -#include -#include - -#define _NCollection_MapHasher -#include - -typedef NCollection_Map NMTTools_MapOfPaveBlock; -typedef NMTTools_MapOfPaveBlock::Iterator NMTTools_MapIteratorOfMapOfPaveBlock; - -#undef _NCollection_MapHasher - -#endif diff --git a/src/NMTTools_NEW/NMTTools_PPaveFiller.hxx b/src/NMTTools_NEW/NMTTools_PPaveFiller.hxx deleted file mode 100644 index f1b7cc0b7..000000000 --- a/src/NMTTools_NEW/NMTTools_PPaveFiller.hxx +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_PPaveFiller.hxx -// Created: Tue Dec 9 12:23:29 2003 -// Author: Peter KURNEV -// -// -#ifndef _NMTTools_PPaveFiller_HeaderFile -#define _NMTTools_PPaveFiller_HeaderFile - -class NMTTools_PaveFiller; - -typedef NMTTools_PaveFiller* NMTTools_PPaveFiller; - -#endif diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller.cxx b/src/NMTTools_NEW/NMTTools_PaveFiller.cxx deleted file mode 100644 index 3a9155b10..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller.cxx +++ /dev/null @@ -1,303 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_PaveFiller.cxx -// Created: Fri Dec 5 14:58:54 2003 -// Author: Peter KURNEV -// -// -#include -// -#include -#include -#include -#include -#include -#include - -//======================================================================= -// function: NMTTools_PaveFiller::NMTTools_PaveFiller -// purpose: -//======================================================================= - NMTTools_PaveFiller::NMTTools_PaveFiller() -{ - myDS=NULL; - myDSIt=NULL; - myIsDone=Standard_False; - myNbSources=0; - myNbEdges=0; - myIP=NULL; -} -//======================================================================= -// function: ~ -// purpose: -//======================================================================= - NMTTools_PaveFiller::~NMTTools_PaveFiller() -{ - Clear(); -} -//======================================================================= -// function: Clear -// purpose: -//======================================================================= - void NMTTools_PaveFiller::Clear() -{ - if (myDSIt) { - delete myDSIt; - } - if (myDS) { - delete myDS; - } - myDSIt=NULL; - myDS=NULL; - - if (myIP) { - delete myIP; - } - myIP=NULL; -} -//======================================================================= -// function: SetCompositeShape -// purpose: -//======================================================================= - void NMTTools_PaveFiller::SetCompositeShape(const TopoDS_Shape& aS) -{ - myCompositeShape=aS; -} -//======================================================================= -// function: CompositeShape -// purpose: -//======================================================================= - const TopoDS_Shape& NMTTools_PaveFiller::CompositeShape()const -{ - return myCompositeShape; -} -//======================================================================= -// function: DS -// purpose: -//======================================================================= - NMTDS_PShapesDataStructure NMTTools_PaveFiller::DS() -{ - return myDS; -} -//======================================================================= -// function: DSIt -// purpose: -//======================================================================= - NMTDS_PIterator NMTTools_PaveFiller::DSIt() -{ - return myDSIt; -} -//======================================================================= -// function: IP -// purpose: -//======================================================================= - NMTDS_PInterfPool NMTTools_PaveFiller::IP() -{ - return myIP; -} -//======================================================================= -// function:IsDone -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PaveFiller::IsDone() const -{ - return myIsDone; -} -//======================================================================= -// function: Context -// purpose: -//======================================================================= - const Handle(IntTools_Context)& NMTTools_PaveFiller::Context() const -{ - return myContext; -} -//======================================================================= -// function: PavePool -// purpose: -//======================================================================= - const BOPTools_PavePool& NMTTools_PaveFiller::PavePool() const -{ - return myPavePool; -} -//======================================================================= -// function: ChangePavePool -// purpose: -//======================================================================= - BOPTools_PavePool& NMTTools_PaveFiller::ChangePavePool() -{ - return myPavePool; -} -//======================================================================= -// function: ChangePavePoolNew -// purpose: -//======================================================================= - BOPTools_PavePool& NMTTools_PaveFiller::ChangePavePoolNew() -{ - return myPavePoolNew; -} -//======================================================================= -// function: CommonBlockPool -// purpose: -//======================================================================= - const NMTTools_CommonBlockPool& NMTTools_PaveFiller::CommonBlockPool() const -{ - return myCommonBlockPool; -} -//======================================================================= -// function: ChangeCommonBlockPool -// purpose: -//======================================================================= - NMTTools_CommonBlockPool& NMTTools_PaveFiller::ChangeCommonBlockPool() -{ - return myCommonBlockPool; -} -//======================================================================= -// function: SplitShapesPool -// purpose: -//======================================================================= - const BOPTools_SplitShapesPool& NMTTools_PaveFiller::SplitShapesPool() const -{ - return mySplitShapesPool; -} -//======================================================================= -// function: ChangeSplitShapesPool -// purpose: -//======================================================================= - BOPTools_SplitShapesPool& NMTTools_PaveFiller::ChangeSplitShapesPool() -{ - return mySplitShapesPool; -} -//======================================================================= -// function: Init -// purpose: -//======================================================================= - void NMTTools_PaveFiller::Init() -{ - myIsDone=Standard_False; - if (myCompositeShape.IsNull()) { - return; - } - // - Clear(); - // 1. - myDS=new NMTDS_ShapesDataStructure; - myDS->SetCompositeShape(myCompositeShape); - myDS->Init(); - // - // 2. - myDSIt=new NMTDS_Iterator; - myDSIt->SetDS(myDS); - myDSIt->Prepare(); - // - // 3. - myNbSources=myDS->NumberOfShapesOfTheObject()+ - myDS->NumberOfShapesOfTheTool(); - myNbEdges=myDS->NbEdges(); - // - // 4 - myIP=new NMTDS_InterfPool; - // - // 5 - myContext=new IntTools_Context; -} - -//======================================================================= -// function: Perform -// purpose: -//======================================================================= - void NMTTools_PaveFiller::Perform() -{ - myIsDone=Standard_False; - // - //---------------- - try { - // 0. - Init(); - //1.VV - // - PerformVV(); - // - // 2.VE - myPavePool.Resize (myNbEdges); - - PrepareEdges(); - - PerformVE(); - // - // 3.VF - PerformVF(); - // - // 4.EE - myCommonBlockPool.Resize (myNbEdges); - mySplitShapesPool.Resize (myNbEdges); - myPavePoolNew .Resize (myNbEdges); - - PreparePaveBlocks(TopAbs_VERTEX, TopAbs_EDGE); - PreparePaveBlocks(TopAbs_EDGE, TopAbs_EDGE); - // - PerformEE(); - // - RefinePavePool (); - // - myPavePoolNew.Destroy(); - myPavePoolNew.Resize (myNbEdges); - // - //modified by NIZNHY-PKV Mon Dec 12 09:13:53 2011f - UpdateCommonBlocks(0); - //modified by NIZNHY-PKV Mon Dec 12 09:13:56 2011t - // - // 5.EF - PreparePaveBlocks(TopAbs_EDGE, TopAbs_FACE); - PerformEF(); - // - RefinePavePool(); - // - myPavePoolNew.Destroy(); - - MakeSplitEdges(); - - UpdateCommonBlocks(); - // - // 6. FF - PerformFF (); - // - MakeBlocks(); - // - MakePCurves(); - // - // 7.Postprocessing - UpdatePaveBlocks(); - // - NMTTools_DEProcessor aDEP(*this); - aDEP.Do(); - // - MakeAloneVertices(); - // - //modified by NIZNHY-PKV Mon Dec 12 09:14:23 2011f - myIP->Purge(); - //modified by NIZNHY-PKV Mon Dec 12 09:14:27 2011t - myIsDone=Standard_True; - } - catch (BOPTColStd_Failure& ) { - } -} diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller.hxx b/src/NMTTools_NEW/NMTTools_PaveFiller.hxx deleted file mode 100644 index 34ce90f9c..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller.hxx +++ /dev/null @@ -1,500 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_PaveFiller.hxx -// Created: Fri Dec 5 14:58:54 2003 -// Author: Peter KURNEV -// -// -#ifndef _NMTTools_PaveFiller_HeaderFile -#define _NMTTools_PaveFiller_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -/* -class TopoDS_Shape; -class BOPTools_Pave; -class IntTools_ShrunkRange; -class BOPTools_PavePool; -class NMTTools_CommonBlockPool; -class BOPTools_SplitShapesPool; -class BOPTools_PaveBlock; -class TopoDS_Vertex; -class NMTTools_ListOfCommonBlock; -class BOPTools_IDMapOfPaveBlockIMapOfPaveBlock; -class BOPTools_IDMapOfPaveBlockIMapOfInteger; -class BooleanOperations_IndexedDataMapOfShapeInteger; -class TColStd_ListOfInteger; -class BOPTools_ListOfPaveBlock; -class TopoDS_Face; -class BOPTools_PaveSet; -class BOPTools_Curve; -class BOPTools_SSInterference; -class gp_Pnt; -class NMTTools_IndexedDataMapOfIndexedMapOfInteger; -class TopTools_ListOfShape; -class TopoDS_Edge; -class TopTools_DataMapOfShapeShape; -class TCoLSTD_MapOfInteger; -*/ - - -//======================================================================= -//function : NMTTools_PaveFiller -//purpose : -//======================================================================= -class NMTTools_PaveFiller { - public: - Standard_EXPORT - NMTTools_PaveFiller(); - - Standard_EXPORT - virtual ~NMTTools_PaveFiller(); - - Standard_EXPORT - void SetCompositeShape(const TopoDS_Shape& aS) ; - - Standard_EXPORT - const TopoDS_Shape& CompositeShape() const; - - Standard_EXPORT - NMTDS_PShapesDataStructure DS() ; - - Standard_EXPORT - NMTDS_PIterator DSIt() ; - - Standard_EXPORT - NMTDS_PInterfPool IP() ; - - Standard_EXPORT - virtual void Perform() ; - - Standard_EXPORT - Standard_Boolean IsDone() const; - - Standard_EXPORT - const Handle_IntTools_Context& Context() const; - - Standard_EXPORT - const BOPTools_PavePool& PavePool() const; - - Standard_EXPORT - BOPTools_PavePool& ChangePavePool() ; - - Standard_EXPORT - const NMTTools_CommonBlockPool& CommonBlockPool() const; - - Standard_EXPORT - NMTTools_CommonBlockPool& ChangeCommonBlockPool() ; - - Standard_EXPORT - const BOPTools_SplitShapesPool& SplitShapesPool() const; - - Standard_EXPORT - BOPTools_SplitShapesPool& ChangeSplitShapesPool() ; - - Standard_EXPORT - Standard_Integer FindSDVertex(const Standard_Integer nV) const; - - Standard_EXPORT - Standard_Integer SplitsInFace(const Standard_Integer aBid, - const Standard_Integer nF1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsInFace(const Standard_Integer nE1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsOnEdge(const Standard_Integer nE1, - const Standard_Integer nE2, - TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsOnFace(const Standard_Integer nE1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsOnFace(const Standard_Integer aBid, - const Standard_Integer nF1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsInFace(const Standard_Integer aBid, - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsInFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsOnEdge(const Standard_Integer nE1, - const Standard_Integer nE2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsOnFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsOnFace(const Standard_Integer aBid, - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsFace(const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - Standard_Integer SplitsFace(const Standard_Integer nF2, - TColStd_ListOfInteger& aLs) ; - - Standard_EXPORT - Standard_Integer CommonBlocksFace(const Standard_Integer nF, - NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT - void PrepareFace(const Standard_Integer nF, - TopoDS_Face& aF) ; - - Standard_EXPORT - const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB) ; - - Standard_EXPORT - const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB, - TColStd_ListOfInteger& aLB, - Standard_Integer& aIsCommonBlock) ; - - Standard_EXPORT - void RealSplitsFace(const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - Standard_Boolean HasRealSplitsInOnFace(const Standard_Integer nF1, - const Standard_Integer nF2) ; - - Standard_EXPORT - void RealSplitsInFace(const Standard_Integer aBid, - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - void RealSplitsInFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - void RealSplitsInFace(const Standard_Integer nF1, - BOPTools_ListOfPaveBlock& aLPB) ; - - Standard_EXPORT - void RealSplitsOnEdge(const Standard_Integer nE1, - const Standard_Integer nE2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - void RealSplitsOnFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - void RealSplitsOnFace(const Standard_Integer aBid, - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLs) ; - - Standard_EXPORT - void PrepareSetForFace(const Standard_Integer nF1, - const Standard_Integer nF2, - const BOPTools_ListOfPaveBlock& aLPB, - BOPTools_PaveSet& aPSF) ; - - Standard_EXPORT - void PutPaveOnCurve(const BOPTools_PaveSet& aPSF, - const Standard_Real aTol, - BOPTools_Curve& aBC) ; - - Standard_EXPORT - void PutBoundPaveOnCurve(BOPTools_Curve& aBC, - BOPTools_SSInterference& aFF) ; - - Standard_EXPORT - void PutBoundPaveOnCurve(const gp_Pnt& aP, - const Standard_Real aT, - BOPTools_Curve& aBC, - BOPTools_SSInterference& aFF) ; - - Standard_EXPORT - Standard_Boolean FindPave(const gp_Pnt& aP, - const Standard_Real aTpV, - const BOPTools_PaveSet& aPS, - BOPTools_Pave& aPV) ; - - Standard_EXPORT - Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB, - const BOPTools_PaveBlock& aPBR, - const Standard_Real aTol) ; - - Standard_EXPORT - Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB, - const BOPTools_ListOfPaveBlock& aLPB, - const Standard_Real aTol) ; - - Standard_EXPORT - void MakePCurves() ; - - Standard_EXPORT - const NMTTools_IndexedDataMapOfIndexedMapOfInteger& AloneVertices() const; - - Standard_EXPORT - Standard_Boolean IsExistingPaveBlock(const BOPTools_PaveBlock& aPB, - const TopTools_ListOfShape& aLPB, - const Standard_Real aTol) ; - - Standard_EXPORT - Standard_Boolean CheckCoincidence(const BOPTools_PaveBlock& aPB, - const BOPTools_ListOfPaveBlock& aLPB) ; - - Standard_EXPORT - Standard_Integer CheckIntermediatePoint(const BOPTools_PaveBlock& aPB, - const TopoDS_Edge& aE, - const Standard_Real aTol) ; - - Standard_EXPORT - void SharedEdges(const Standard_Integer nF1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aLNE, - TopTools_ListOfShape& aLSE) ; - - Standard_EXPORT - void FuseVertices(const TopoDS_Shape& aC, - TopTools_DataMapOfShapeShape& aDMVV) const; - - Standard_EXPORT - void TreatPaveBlocks(NMTTools_ListOfCommonBlock& theLCB) ; - - Standard_EXPORT - BOPTools_PavePool& ChangePavePoolNew() ; - - Standard_EXPORT - Standard_Boolean CheckCoincidence(const BOPTools_PaveBlock& aPB1, - const BOPTools_PaveBlock& aPB2) ; - - Standard_EXPORT - void PutClosingPaveOnCurve(BOPTools_Curve& aBC, - BOPTools_SSInterference& aFF) ; - - protected: - Standard_EXPORT - virtual void Init() ; - - Standard_EXPORT - virtual void Clear() ; - - Standard_EXPORT - virtual void PerformVV() ; - - Standard_EXPORT - virtual void PerformVE() ; - - Standard_EXPORT - virtual void PerformVF() ; - - Standard_EXPORT - virtual void PerformEE() ; - - Standard_EXPORT - virtual void PerformEF() ; - - Standard_EXPORT - virtual void PerformFF() ; - - Standard_EXPORT - void MakeSplitEdges() ; - - Standard_EXPORT - virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1, - const TopAbs_ShapeEnum aType2) ; - - Standard_EXPORT - void CorrectShrunkRanges(const Standard_Integer aSide, - const BOPTools_Pave& aPave, - IntTools_ShrunkRange& aSR) ; - - Standard_EXPORT - virtual void PreparePaveBlocks(const Standard_Integer anE) ; - - Standard_EXPORT - virtual void PrepareEdges() ; - - Standard_EXPORT - Standard_Boolean IsSuccessorsComputed(const Standard_Integer iF1, - const Standard_Integer iF2) const; - - Standard_EXPORT - Standard_Boolean IsBlocksCoinside(const BOPTools_PaveBlock& aPB1, - const BOPTools_PaveBlock& aPB2) const; - - Standard_EXPORT - void RefinePavePool() ; - - Standard_EXPORT - Standard_Integer CheckFacePaves(const TopoDS_Vertex& aV, - const Standard_Integer nF) ; - - Standard_EXPORT - void ReplaceCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT - void RemoveCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT - void SplitCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT - void SplitCommonBlock(const NMTTools_CommonBlock& aCB,NMTTools_ListOfCommonBlock& aLCB) ; - - Standard_EXPORT - void EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aM) ; - - Standard_EXPORT - void EFCommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfInteger& aMapCB) ; - - Standard_EXPORT - void EENewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT - void EENewVertices(const TopoDS_Vertex& aV, - const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT - void EFNewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT - void EFNewVertices(const TopoDS_Vertex& aV, - const BooleanOperations_IndexedDataMapOfShapeInteger& aM) ; - - Standard_EXPORT - void UpdateCommonBlocks() ; - - Standard_EXPORT - void UpdateCommonBlocks(const Standard_Integer aI) ; - - Standard_EXPORT - void UpdatePaveBlocks() ; - - Standard_EXPORT - Standard_Integer SplitIndex(const BOPTools_PaveBlock& aPB) const; - - Standard_EXPORT - void MakeBlocks() ; - - Standard_EXPORT - void PerformVF1() ; - - Standard_EXPORT - void MakeAloneVertices() ; - - Standard_EXPORT - void FillFaceInfo() ; - - Standard_EXPORT - void CorrectTolR3D(const BOPTools_SSInterference& aFF, - const TColStd_MapOfInteger& aMVStick, - Standard_Real& aTolR3D) ; - - - NMTDS_PShapesDataStructure myDS; - Standard_Boolean myIsDone; - Standard_Integer myNbSources; - Standard_Integer myNbEdges; - BOPTools_PavePool myPavePool; - BOPTools_PavePool myPavePoolNew; - NMTTools_CommonBlockPool myCommonBlockPool; - BOPTools_SplitShapesPool mySplitShapesPool; - Handle_IntTools_Context myContext; - BOPTools_SSIntersectionAttribute mySectionAttribute; - NMTTools_IndexedDataMapOfIndexedMapOfInteger myAloneVertices; - TColStd_DataMapOfIntegerInteger myVSD; - NMTDS_PIterator myDSIt; - TopoDS_Shape myCompositeShape; - NMTDS_PInterfPool myIP; - NMTTools_DataMapOfIntegerFaceInfo myFaceInfo; - - - // private: - -}; -#endif diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller_0.cxx b/src/NMTTools_NEW/NMTTools_PaveFiller_0.cxx deleted file mode 100644 index 7d7834334..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller_0.cxx +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_PaveFiller_0.cxx -// Created: Mon Dec 8 11:45:51 2003 -// Author: Peter KURNEV -// -// -#include - -#include -#include - -#include -#include -#include - -//======================================================================= -// function:IsSuccesstorsComputed -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PaveFiller::IsSuccessorsComputed(const Standard_Integer aN1, - const Standard_Integer aN2)const -{ - Standard_Boolean bComputed; - Standard_Integer i, nSuc, n1, n2, ntmp, aNbS; - TopAbs_ShapeEnum aType; - TColStd_IndexedMapOfInteger aMSuc; - // - n1=aN1; - n2=aN2; - aType=myDS->GetShapeType(aN1); - if (aType!=TopAbs_VERTEX) { - ntmp=n1; - n1=n2; - n2=ntmp; - } - // - myDS->GetAllSuccessors(n2, aMSuc); - aNbS=aMSuc.Extent(); - for (i=1; i<=aNbS; ++i) { - nSuc=aMSuc(i); - bComputed=myIP->Contains(n1, nSuc); - if (bComputed) { - break; - } - } - return bComputed; -} -/* -//======================================================================= -// function: ExpectedPoolLength -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::ExpectedPoolLength()const -{ - Standard_Integer aNbIIs; - Standard_Real aCfPredict=.5; - // Modified Thu Sep 14 14:35:18 2006 - // Contribution of Samtech www.samcef.com BEGIN - //const BOPTools_ListOfCoupleOfInteger& aLC=myDSIt.ListOfCouple(); - //aNbIIs=aLC.Extent(); - aNbIIs=myDSIt->ExpectedLength(); - // Contribution of Samtech www.samcef.com END - // - if (aNbIIs==1) { - return aNbIIs; - } - // - aNbIIs=(Standard_Integer) (aCfPredict*(Standard_Real)aNbIIs); - - return aNbIIs; -} -*/ -/* -//======================================================================= -//function : SortTypes -//purpose : -//======================================================================= - void NMTTools_PaveFiller::SortTypes(Standard_Integer& theWhat, - Standard_Integer& theWith)const -{ - Standard_Integer aWhat, aWith; - Standard_Boolean aReverseFlag; - TopAbs_ShapeEnum aType1, aType2; - // - aType1= myDS->GetShapeType(theWhat), - aType2= myDS->GetShapeType(theWith); - // - if (aType1==aType2) { - return; - } - // - aReverseFlag=Standard_True; - if (aType1==TopAbs_EDGE && aType2==TopAbs_FACE) { - aReverseFlag=Standard_False; - } - if (aType1==TopAbs_VERTEX && - (aType2==TopAbs_FACE || aType2==TopAbs_EDGE)) { - aReverseFlag=Standard_False; - } - // - aWhat=(aReverseFlag) ? theWith : theWhat; - aWith=(aReverseFlag) ? theWhat : theWith; - // - theWhat=aWhat; - theWith=aWith; -} -*/ diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller_1.cxx b/src/NMTTools_NEW/NMTTools_PaveFiller_1.cxx deleted file mode 100644 index c0d015fc6..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller_1.cxx +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_PaveFiller_1.cxx -// Created: Mon Dec 8 11:47:55 2003 -// Author: Peter KURNEV -// -// -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include - -//======================================================================= -// function: PerformVV -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformVV() -{ - myIsDone=Standard_False; - // - Standard_Integer aNbVVs, aBL, aNbVSD, nVnew, i, j, n1, n2; - TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aIt1; - TColStd_ListIteratorOfListOfInteger aItX, aItY; - TColStd_ListOfInteger aLIX; - TopTools_ListOfShape aLV; - TopoDS_Vertex aVnew; - // - myVSD.Clear(); - // - const TColStd_DataMapOfIntegerListOfInteger& aMVSD=myDSIt->SDVertices(); - aNbVSD=aMVSD.Extent(); - if (!aNbVSD) { - return; - } - // - BOPTools_CArray1OfVVInterference& aVVs=myIP->VVInterferences(); - // - // BlockLength correction - myDSIt->Initialize(TopAbs_VERTEX, TopAbs_VERTEX); - aNbVVs=myDSIt->BlockLength(); - aBL=aVVs.BlockLength(); - if (aNbVVs > aBL) { - aVVs.SetBlockLength(aNbVVs); - } - // - aIt1.Initialize(aMVSD); - for (; aIt1.More(); aIt1.Next()) { - aLV.Clear(); - // - n1=aIt1.Key(); - const TColStd_ListOfInteger& aLIV=aIt1.Value(); - // - // new vertex - const TopoDS_Shape& aS1=myDS->Shape(n1); - aLV.Append(aS1); - aItX.Initialize(aLIV); - for (; aItX.More(); aItX.Next()) { - n2=aItX.Value(); - const TopoDS_Shape& aS2=myDS->Shape(n2); - aLV.Append(aS2); - } - // - NMTTools_Tools::MakeNewVertex(aLV, aVnew); - // - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - myDS->InsertShapeAndAncestorsSuccessors(aVnew, anASSeq); - nVnew=myDS->NumberOfInsertedShapes(); - myDS->SetState (nVnew, BooleanOperations_ON); - // - // myVSD, aLIX - aLIX.Clear(); - aLIX.Append(n1); - myVSD.Bind(n1, nVnew); - // - aItX.Initialize(aLIV); - for (; aItX.More(); aItX.Next()) { - n2=aItX.Value(); - aLIX.Append(n2); - myVSD.Bind(n2, nVnew); - } - // - // interferences - aItX.Initialize(aLIX); - for (i=0; aItX.More(); aItX.Next(), ++i) { - aItY.Initialize(aLIX); - for (j=0; aItY.More(); aItY.Next(), ++j) { - if (j>i) { - n1=aItX.Value(); - n2=aItY.Value(); - myIP->Add(n1, n2, Standard_True, NMTDS_TI_VV); - // - BOPTools_VVInterference aVV(n1, n2); - aVV.SetNewShape(nVnew); - aVVs.Append(aVV); - } - } - } - }//for (; aIt1.More(); aIt1.Next()) { - myIsDone=Standard_True; -} -//======================================================================= -// function: FindSDVertex -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::FindSDVertex(const Standard_Integer nV)const -{ - Standard_Integer nVSD; - // - nVSD=0; - if (myVSD.IsBound(nV)) { - nVSD=myVSD.Find(nV); - } - return nVSD; -} -/* -//======================================================================= -// function: PerformNewVertices -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformNewVertices() -{ -} -*/ diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller_2.cxx b/src/NMTTools_NEW/NMTTools_PaveFiller_2.cxx deleted file mode 100644 index fb40db6a3..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller_2.cxx +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTTools_PaveFiller_2.cxx -// Created: Mon Dec 8 12:02:56 2003 -// Author: Peter KURNEV - -#include - -#include - -#include - -#include - -#include - -#include - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include -#include - - -#include -#include -#include - -#include - -static - Standard_Boolean Contains(const TopoDS_Edge& aE, - const TopoDS_Vertex& aV); - -//======================================================================= -// function: PerformVE -// purpose: -//======================================================================= -void NMTTools_PaveFiller::PerformVE() -{ - myIsDone=Standard_False; - // - Standard_Boolean bJustAdd; - Standard_Integer n1, n2, anIndexIn, aFlag, aWhat; - Standard_Integer aWith, aNbVEs, aBlockLength, iSDV, nV1; - Standard_Real aT; -#if OCC_VERSION_LARGE > 0x06030008 - // In OCCT6.3.0sp9 is changed a signature of IntTools_Context::ComputeVE() method - Standard_Boolean bToUpdateVertex; - Standard_Real aDist; -#endif - TopoDS_Vertex aV1; - TopoDS_Edge aE2; - BOPTools_IndexedMapOfCoupleOfInteger aSnareMap; - BOPTools_CoupleOfInteger aCouple; - // - BOPTools_CArray1OfVEInterference& aVEs=myIP->VEInterferences(); - // - myDSIt->Initialize (TopAbs_VERTEX, TopAbs_EDGE); - // - // BlockLength correction - aNbVEs=myDSIt->BlockLength(); - aBlockLength=aVEs.BlockLength(); - if (aNbVEs > aBlockLength) { - aVEs.SetBlockLength(aNbVEs); - } - // - for (; myDSIt->More(); myDSIt->Next()) { - myDSIt->Current(n1, n2, bJustAdd); - if (!IsSuccessorsComputed(n1, n2)) { - anIndexIn=0; - aWhat=n1; // Vertex - aWith=n2; // Edge - if (myDS->GetShapeType(n1)==TopAbs_EDGE) { - aWhat=n2; - aWith=n1; - } - // - if(bJustAdd) { - continue; - } - // Edge - aE2=TopoDS::Edge(myDS->Shape(aWith)); - if (BRep_Tool::Degenerated(aE2)){ - continue; - } - // Vertex - nV1=aWhat; - aV1=TopoDS::Vertex(myDS->Shape(aWhat)); - // - iSDV=FindSDVertex(aWhat); - if (iSDV) { - nV1=iSDV; - aV1=TopoDS::Vertex(myDS->Shape(nV1)); - // Modified to find same domain vertex Thu Sep 14 14:35:18 2006 - // Contribution of Samtech www.samcef.com BEGIN - Standard_Integer nVE, iSDVE, iRet; - // - BooleanOperations_OnceExplorer aExp(*myDS); - iRet=0; - aExp.Init(aWith, TopAbs_VERTEX); - for (; aExp.More(); aExp.Next()) { - nVE=aExp.Current(); - iSDVE=FindSDVertex(nVE); - if (iSDVE==iSDV) { - iRet=1; - break; - } - } - if (iRet) { - continue; - } - } - else { - if (Contains(aE2, aV1)) { - continue; - } - // Contribution of Samtech www.samcef.com END - } - // - //modified by NIZNHY-PKV Mon Dec 28 08:58:05 2009f -#if OCC_VERSION_LARGE > 0x06030008 - // In OCCT6.3.0sp9 is changed a signature of IntTools_Context::ComputeVE() method - aFlag = myContext->ComputeVE (aV1, aE2, aT, bToUpdateVertex, aDist); -#else - aFlag = myContext->ComputeVE (aV1, aE2, aT); -#endif - //modified by NIZNHY-PKV Mon Dec 28 08:58:13 2009t - // - if (!aFlag) { - // Add Interference to the Pool - BOPTools_VEInterference anInterf (aWhat, aWith, aT); - anIndexIn=aVEs.Append(anInterf); - // - // Add Pave to the Edge's myPavePool - aCouple.SetCouple(nV1, aWith); - if (!aSnareMap.Contains(aCouple)){ - aSnareMap.Add(aCouple); - // - BOPTools_Pave aPave(nV1, aT, BooleanOperations_VertexEdge); - aPave.SetInterference(anIndexIn); - BOPTools_PaveSet& aPaveSet= myPavePool(myDS->RefEdge(aWith)); - aPaveSet.Append(aPave); - } - // - // State for the Vertex in DS; - myDS->SetState (aWhat, BooleanOperations_ON); - // Insert Vertex in Interference Object - BOPTools_VEInterference& aVE=aVEs(anIndexIn); - aVE.SetNewShape(aWhat); - // - myIP->Add(aWhat, aWith, Standard_True, NMTDS_TI_VE); - // - //modified by NIZNHY-PKV Mon Dec 28 09:00:54 2009f -#if OCC_VERSION_LARGE > 0x06030008 - // In OCCT6.3.0sp9 is changed a signature of IntTools_Context::ComputeVE() method - if (bToUpdateVertex) { - BRep_Builder aBB; - // - aBB.UpdateVertex(aV1, aDist); - } -#endif - //modified by NIZNHY-PKV Mon Dec 28 09:00:57 2009t - // - } //if (!aFlag) { - } - } - myIsDone=Standard_True; -} - -//======================================================================= -// function: PrepareEdges -// purpose: -//======================================================================= -void NMTTools_PaveFiller::PrepareEdges() -{ - Standard_Integer i, nV, ii, aNBSuc, ip, aNbShapesObject; - Standard_Real aT; - TopAbs_Orientation anOr; - TopoDS_Edge aE; - TopoDS_Vertex aV; - // - aNbShapesObject=myDS->NumberOfShapesOfTheObject(); - for (i=1; i<=myNbSources; ++i) { - if (myDS->GetShapeType(i)==TopAbs_EDGE) { - aE=TopoDS::Edge(myDS->Shape(i)); - // - if (BRep_Tool::Degenerated(aE)){ - continue; - } - // - BOPTools_PaveSet& aPaveSet=myPavePool(myDS->RefEdge(i)); - // - // A <- - aNBSuc=myDS->NumberOfSuccessors(i); - for (ii=1; ii <=aNBSuc; ii++) { - nV=myDS->GetSuccessor(i, ii); - anOr=myDS->GetOrientation(i, ii); - aV=TopoDS::Vertex(myDS->Shape(nV)); - aV.Orientation(anOr); - aT=BRep_Tool::Parameter(aV, aE); - // - ip=FindSDVertex(nV); - if (ip) { - aV=TopoDS::Vertex(myDS->Shape(ip)); - aV.Orientation(anOr);// XX ? if the edge is closed it'll be amazing result - nV=ip; - } - // - BOPTools_Pave aPave(nV, aT); - aPaveSet.Append (aPave); - } - } - } -} - -// Modified Thu Sep 14 14:35:18 2006 -// Contribution of Samtech www.samcef.com BEGIN -//======================================================================= -//function : Contains -//purpose : -//======================================================================= -Standard_Boolean Contains(const TopoDS_Edge& aE, - const TopoDS_Vertex& aV) -{ - Standard_Boolean bRet; - TopoDS_Iterator aIt; - // - bRet=Standard_False; - aIt.Initialize(aE); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Shape& aVE=aIt.Value(); - if (aVE.IsSame(aV)) { - bRet=!bRet; - break; - } - } - return bRet; -} -// Contribution of Samtech www.samcef.com END diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller_3.cxx b/src/NMTTools_NEW/NMTTools_PaveFiller_3.cxx deleted file mode 100644 index 460f72442..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller_3.cxx +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_PaveFiller_3.cxx -// Created: Mon Dec 8 16:06:56 2003 -// Author: Peter KURNEV -// -// -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include - - -static - Standard_Boolean Contains(const TopoDS_Face& aF, - const TopoDS_Vertex& aV); - -//======================================================================= -// function: PerformVF -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformVF() -{ - myIsDone=Standard_False; - // - Standard_Boolean aJustAdd; - Standard_Integer n1, n2, anIndexIn, aFlag, aWhat, aWith, aNbVSs, aBlockLength, iSDV; - Standard_Real aU, aV; - TopoDS_Vertex aV1; - TopoDS_Face aF2; - // - BOPTools_CArray1OfVSInterference& aVSs=myIP->VSInterferences(); - // - // V/E Interferences - myDSIt->Initialize(TopAbs_VERTEX, TopAbs_FACE); - // - // BlockLength correction - aNbVSs=myDSIt->BlockLength(); - aBlockLength=aVSs.BlockLength(); - if (aNbVSs > aBlockLength) { - aVSs.SetBlockLength(aNbVSs); - } - // - for (; myDSIt->More(); myDSIt->Next()) { - myDSIt->Current(n1, n2, aJustAdd); - if (! IsSuccessorsComputed(n1, n2)) { - anIndexIn=0; - aWhat=n1; // Vertex - aWith=n2; // Face - if (myDS->GetShapeType(n1)==TopAbs_FACE) { - aWhat=n2; - aWith=n1; - } - // - iSDV=FindSDVertex(aWhat); - // - if(aJustAdd) { - //myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexSurface, anIndexIn); - continue; - } - // - aV1=TopoDS::Vertex(myDS->Shape(aWhat)); - if (iSDV) { - aV1=TopoDS::Vertex(myDS->Shape(iSDV)); - } - // - aF2=TopoDS::Face(myDS->Shape(aWith)); - // - // Modified Thu Sep 14 14:35:18 2006 - // Contribution of Samtech www.samcef.com BEGIN - if (Contains(aF2, aV1)) { - continue; - } - // Contribution of Samtech www.samcef.com END - // - aFlag=myContext->ComputeVS (aV1, aF2, aU, aV); - // - if (!aFlag) { - // - // Add Interference to the Pool - BOPTools_VSInterference anInterf (aWhat, aWith, aU, aV); - anIndexIn=aVSs.Append(anInterf); - // - // SetState for Vertex in DS; - myDS->SetState (aWhat, BooleanOperations_ON); - // Insert Vertex in Interference Object - BOPTools_VSInterference& aVS=aVSs(anIndexIn); - aVS.SetNewShape(aWhat); - // qqf - { - myIP->Add(aWhat, aWith, Standard_True, NMTDS_TI_VF); - } - // qqt - } - //myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexSurface, anIndexIn); - } - } - myIsDone=Standard_True; -} -// Modified Thu Sep 14 14:35:18 2006 -// Contribution of Samtech www.samcef.com BEGIN -//======================================================================= -//function : Contains -//purpose : -//======================================================================= -Standard_Boolean Contains(const TopoDS_Face& aF, - const TopoDS_Vertex& aV) -{ - Standard_Boolean bRet; - TopExp_Explorer aExp; - // - bRet=Standard_False; - aExp.Init(aF, TopAbs_VERTEX); - for (; aExp.More(); aExp.Next()) { - const TopoDS_Shape& aVF=aExp.Current(); - if (aVF.IsSame(aV)) { - bRet=!bRet; - break; - } - } - return bRet; -} -// Contribution of Samtech www.samcef.com END diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller_4.cxx b/src/NMTTools_NEW/NMTTools_PaveFiller_4.cxx deleted file mode 100644 index acfc6efb2..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller_4.cxx +++ /dev/null @@ -1,1613 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File: NMTTools_PaveFiller_4.cxx -// Created: Mon Dec 8 17:08:58 2003 -// Author: Peter KURNEV - -#include - -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -static - void TreatNewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI, - TopTools_DataMapOfShapeListOfShape& myImages, - TopTools_DataMapOfShapeShape& myOrigins); - -static - void MakeNewVertex(const TopTools_ListOfShape& aLV, - TopoDS_Vertex& aNewVertex); - -static - void VertexParameters(const IntTools_CommonPrt& aCPart, - Standard_Real& aT1, - Standard_Real& aT2); - -static - Standard_Boolean IsOnPave(const Standard_Real& aT1, - const IntTools_Range& aRange, - const Standard_Real& aTolerance); - -// static -// void EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB); - -static - void ProcessBlock(const BOPTools_PaveBlock& aPB, - const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB, - BOPTools_IMapOfPaveBlock& aProcessedBlocks, - BOPTools_IMapOfPaveBlock& aChain); - -static - void FindChains(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB, - NMTTools_ListOfCommonBlock& aLCB); - -//======================================================================= -// function: PerformEE -// purpose: -//======================================================================= -void NMTTools_PaveFiller::PerformEE() -{ - myIsDone=Standard_False; - // - Standard_Boolean bJustAdd; - Standard_Integer n1, n2, anIndexIn, nE1, nE2, aNbVEs, aBlockLength; - Standard_Integer aTmp, aWhat, aWith, i, aNbCPrts, aDiscretize=30; - Standard_Integer aNbLPB1, aNbLPB2; - Standard_Real aTolE1, aTolE2, aDeflection=0.01; - BOPTools_ListIteratorOfListOfPaveBlock anIt1, anIt2; - TopoDS_Edge aEWhat, aEWith; - TopoDS_Vertex aNewVertex; - BooleanOperations_IndexedDataMapOfShapeInteger aMapVI; - BOPTools_IDMapOfPaveBlockIMapOfPaveBlock aMapCB; - // - BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences(); - // - myDSIt->Initialize(TopAbs_EDGE, TopAbs_EDGE); - // - // BlockLength correction - aNbVEs=myDSIt->BlockLength(); - aBlockLength=aEEs.BlockLength(); - if (aNbVEs > aBlockLength) { - aEEs.SetBlockLength(aNbVEs); - } - // - for (; myDSIt->More(); myDSIt->Next()) { - myDSIt->Current(n1, n2, bJustAdd); - anIndexIn = 0; - nE1=n1; - nE2=n2; - // - if(bJustAdd) { - continue; - } - // - const TopoDS_Edge aE1=TopoDS::Edge(myDS->Shape(nE1));//mpv - const TopoDS_Edge aE2=TopoDS::Edge(myDS->Shape(nE2));//mpv - // - if (BRep_Tool::Degenerated(aE1) || BRep_Tool::Degenerated(aE2)){ - continue; - } - // - aTolE1=BRep_Tool::Tolerance(aE1); - aTolE2=BRep_Tool::Tolerance(aE2); - // - BOPTools_ListOfPaveBlock& aLPB1=mySplitShapesPool(myDS->RefEdge(nE1)); - BOPTools_ListOfPaveBlock& aLPB2=mySplitShapesPool(myDS->RefEdge(nE2)); - // - // Modified Thu Sep 14 14:35:18 2006 - // Contribution of Samtech www.samcef.com BEGIN - aNbLPB1=aLPB1.Extent(); - aNbLPB2=aLPB2.Extent(); - // - //if (aE1.IsSame(aE2) && aNbLPB1==1 && aNbLPB2==1) { - // continue; - //} - // Contribution of Samtech www.samcef.com END - // - for (anIt1.Initialize(aLPB1); anIt1.More(); anIt1.Next()) { - BOPTools_PaveBlock& aPB1=anIt1.Value(); - const IntTools_ShrunkRange& aShrunkRange1=aPB1.ShrunkRange(); - // - const IntTools_Range& aSR1=aShrunkRange1.ShrunkRange(); - const Bnd_Box& aBB1=aShrunkRange1.BndBox(); - // - for (anIt2.Initialize(aLPB2); anIt2.More(); anIt2.Next()) { - BOPTools_PaveBlock& aPB2=anIt2.Value(); - const IntTools_ShrunkRange& aShrunkRange2=aPB2.ShrunkRange(); - // - const IntTools_Range& aSR2=aShrunkRange2.ShrunkRange(); - const Bnd_Box& aBB2=aShrunkRange2.BndBox(); - // - if (aBB1.IsOut (aBB2)) { - continue; - } - // - // EE - IntTools_EdgeEdge aEE; - aEE.SetEdge1 (aE1); - aEE.SetEdge2 (aE2); - aEE.SetTolerance1 (aTolE1); - aEE.SetTolerance2 (aTolE2); - aEE.SetDiscretize (aDiscretize); - aEE.SetDeflection (aDeflection); - // - IntTools_Range anewSR1 = aSR1; - IntTools_Range anewSR2 = aSR2; - // - BOPTools_Tools::CorrectRange (aE1, aE2, aSR1, anewSR1); - BOPTools_Tools::CorrectRange (aE2, aE1, aSR2, anewSR2); - // - aEE.SetRange1(anewSR1); - aEE.SetRange2(anewSR2); - // - aEE.Perform(); - // - anIndexIn=0; - // - if (aEE.IsDone()) { - // reverse order if it is necessary - aEWhat=aE1; - aEWith=aE2; - aWhat=nE1; - aWith=nE2; - if (aEE.Order()) { - aTmp=aWhat; - aWhat=aWith; - aWith=aTmp; - aEWhat=aE2; - aEWith=aE1; - } - // - const IntTools_SequenceOfCommonPrts& aCPrts=aEE.CommonParts(); - aNbCPrts=aCPrts.Length(); - for (i=1; i<=aNbCPrts; i++) { - const IntTools_CommonPrt& aCPart=aCPrts(i); - const IntTools_SequenceOfRanges& aRanges2=aCPart.Ranges2(); - // - anIndexIn=0; - // - TopAbs_ShapeEnum aType=aCPart.Type(); - switch (aType) { - case TopAbs_VERTEX: { - Standard_Real aT1, aT2, aTol=Precision::PConfusion(); - Standard_Boolean bIsOnPave1, bIsOnPave2; - IntTools_Range aR1, aR2; - // - VertexParameters(aCPart, aT1, aT2); - // - //decide to keep the pave or not - aR1 = (aEE.Order()) ? anewSR2 : anewSR1; - aR2 = (aEE.Order()) ? anewSR1 : anewSR2; - // - aTol=0.8*aTol; - bIsOnPave1=IsOnPave(aT1, aR1, aTol); - bIsOnPave2=IsOnPave(aT2, aR2, aTol); - // - if(bIsOnPave1 || bIsOnPave2) { - continue; - } - // - BOPTools_Tools::MakeNewVertex(aEWhat, aT1, aEWith, aT2, aNewVertex); - // - { - Standard_Integer nV11, nV12, nV21, nV22, nVS[2], k, j, iFound; - Standard_Real aTolVx, aTolVnew, aD2, aDT2; - TColStd_MapOfInteger aMV; - gp_Pnt aPnew, aPx; - // - iFound=0; - j=-1; - nV11=aPB1.Pave1().Index(); - nV12=aPB1.Pave2().Index(); - nV21=aPB2.Pave1().Index(); - nV22=aPB2.Pave2().Index(); - aMV.Add(nV11); - aMV.Add(nV12); - // - if (aMV.Contains(nV21)) { - ++j; - nVS[j]=nV21; - } - if (aMV.Contains(nV22)) { - ++j; - nVS[j]=nV22; - } - // - aTolVnew=BRep_Tool::Tolerance(aNewVertex); - aPnew=BRep_Tool::Pnt(aNewVertex); - // - for (k=0; k<=j; ++k) { - const TopoDS_Vertex& aVx=TopoDS::Vertex(myDS->Shape(nVS[k])); - aTolVx=BRep_Tool::Tolerance(aVx); - aPx=BRep_Tool::Pnt(aVx); - aD2=aPnew.SquareDistance(aPx); - // - aDT2=100.*(aTolVnew+aTolVx)*(aTolVnew+aTolVx); - // - if (aD2Add(aWhat, aWith, Standard_True, NMTDS_TI_EE); - } - // qqt - // - // Collect - aMapVI.Add(aNewVertex, anIndexIn); - } - break; - - case TopAbs_EDGE: { - Standard_Integer aNbComPrt2; - Standard_Boolean aCoinsideFlag; - // - aNbComPrt2=aRanges2.Length(); - aCoinsideFlag=IsBlocksCoinside(aPB1, aPB2); - // - if (aNbComPrt2>1 || !aCoinsideFlag) { - break; - } - // - // Fill aMapCB - if (aMapCB.Contains(aPB1)) { - BOPTools_IMapOfPaveBlock& aMapPB=aMapCB.ChangeFromKey(aPB1); - aMapPB.Add(aPB1); - aMapPB.Add(aPB2); - } - else { - BOPTools_IMapOfPaveBlock aMapPB; - aMapPB.Add(aPB1); - aMapPB.Add(aPB2); - aMapCB.Add(aPB1, aMapPB); - } - // - if (aMapCB.Contains(aPB2)) { - BOPTools_IMapOfPaveBlock& aMapPB=aMapCB.ChangeFromKey(aPB2); - aMapPB.Add(aPB1); - aMapPB.Add(aPB2); - } - else { - BOPTools_IMapOfPaveBlock aMapPB; - aMapPB.Add(aPB1); - aMapPB.Add(aPB2); - aMapCB.Add(aPB2, aMapPB); - } - // qqf - { - myIP->Add(aWhat, aWith, Standard_True, NMTDS_TI_EE); - } - // qqt - } - break; - default: - break; - } // switch (aType) - } // for (i=1; i<=aNbCPrts; i++) - }// if (aEE.IsDone()) - } // for (; anIt2.More(); anIt2.Next()) - } // for (; anIt1.More(); anIt1.Next()) - }// for (; myDSIt.More(); myDSIt.Next()) - // - { - NMTTools_ListOfCommonBlock aLCB; - // - FindChains(aMapCB, aLCB); - EENewVertices (aMapVI); - //TreatPaveBlocks(*this, aLCB); - TreatPaveBlocks(aLCB); - ReplaceCommonBlocks(aLCB); - } - // - PerformVF1(); - // - myIsDone=Standard_True; -} - -//======================================================================= -// function:TreatPaveBlocks -// purpose: -//======================================================================= -void NMTTools_PaveFiller::TreatPaveBlocks (NMTTools_ListOfCommonBlock& theLCB) -{ - Standard_Boolean bFound; - Standard_Integer nE, nV, nVp, iFlag; - Standard_Real aT; - TColStd_MapOfInteger aMI; - TColStd_MapIteratorOfMapOfInteger aItMI; - NMTTools_ListIteratorOfListOfCommonBlock aItLCB; - BOPTools_ListIteratorOfListOfPaveBlock aItLPB; - BOPTools_ListIteratorOfListOfPave aItLP; - // - aItLCB.Initialize(theLCB); - for (; aItLCB.More(); aItLCB.Next()) { - const NMTTools_CommonBlock& aCB=aItLCB.Value(); - // - aMI.Clear(); - const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); - // - // 1 -> aMI - aItLPB.Initialize(aLPB); - for (; aItLPB.More(); aItLPB.Next()) { - const BOPTools_PaveBlock& aPB=aItLPB.Value(); - nE=aPB.OriginalEdge(); - BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE)); - BOPTools_ListOfPave& aLP=aPaveSet.ChangeSet(); - // - aItLP.Initialize(aLP); - for (; aItLP.More(); aItLP.Next()) { - const BOPTools_Pave& aPave=aItLP.Value(); - nV=aPave.Index(); - aMI.Add(nV); - } - }//for (; anItLPB.More(); anItLPB.Next()) { - // - // 2 - aItLPB.Initialize(aLPB); - for (; aItLPB.More(); aItLPB.Next()) { - const BOPTools_PaveBlock& aPB=aItLPB.Value(); - nE=aPB.OriginalEdge(); - BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE)); - BOPTools_ListOfPave& aLP=aPaveSet.ChangeSet(); - // - aItMI.Initialize(aMI); - for (; aItMI.More(); aItMI.Next()) { - nV=aItMI.Key(); - bFound=Standard_False; - aItLP.Initialize(aLP); - for (; aItLP.More(); aItLP.Next()) { - const BOPTools_Pave& aPave=aItLP.Value(); - nVp=aPave.Index(); - if (nVp==nV) { - bFound=!bFound; - break; - } - } - // - if (!bFound) { - // Append Pave of nV to rhe edge nE - const TopoDS_Edge& aE=*(TopoDS_Edge*)(&myDS->Shape(nE)); - const TopoDS_Vertex& aV= *(TopoDS_Vertex*)(&myDS->Shape(nV)); - iFlag=myContext->ComputeVE (aV, aE, aT); - if (!iFlag) { - BOPTools_Pave aPave; - // - aPave.SetInterference(-1); - aPave.SetType (BooleanOperations_EdgeEdge); - aPave.SetIndex(nV); - aPave.SetParam(aT); - aPaveSet.Append(aPave); - } - } - }//for (; aItMI.More(); aItMI.Next()) { - }//for (; anItLPB.More(); anItLPB.Next()) { - } -} - -//======================================================================= -// function:EECommonBlocks -// purpose: -//======================================================================= -void NMTTools_PaveFiller::EECommonBlocks(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB) -{ - NMTTools_ListOfCommonBlock aLCB; - // - FindChains(aMapCB, aLCB); - ReplaceCommonBlocks(aLCB); -} - -//======================================================================= -// function:EENewVertices -// purpose: -//======================================================================= -void NMTTools_PaveFiller::EENewVertices (const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) -{ - Standard_Integer aNb, aNbVSD, nVnew, nIEE, nE[2], j, iFlag; - Standard_Real aT; - TopoDS_Edge aE; - TopTools_DataMapOfShapeListOfShape myImages; - TopTools_DataMapOfShapeShape myOrigins; - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItIm; - TopTools_ListIteratorOfListOfShape aIt; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - TColStd_MapOfInteger aMFence; - BOPTools_Pave aPave; - // - BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences(); - // - aNb=aMapVI.Extent(); - if (!aNb) { // no new vertices, no new problems - return; - } - // - // 0. - if (aNb==1) { - TopoDS_Vertex aV1=TopoDS::Vertex(aMapVI.FindKey(1)); - EENewVertices(aV1, aMapVI); - return; - } - // - // 1. - TreatNewVertices(aMapVI, myImages, myOrigins); - // - aItIm.Initialize(myImages); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Vertex& aVnew=TopoDS::Vertex(aItIm.Key()); - const TopTools_ListOfShape& aLVSD=aItIm.Value(); - // - aNbVSD=aLVSD.Extent(); - if (aNbVSD==1) {// simple case aVnew=aVold - EENewVertices(aVnew, aMapVI); - continue; - } - // - // aNbVSD>1 - myDS->InsertShapeAndAncestorsSuccessors(aVnew, anASSeq); - nVnew=myDS->NumberOfInsertedShapes(); - myDS->SetState(nVnew, BooleanOperations_ON); - // - aMFence.Clear(); - aIt.Initialize(aLVSD); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Vertex& aVold=TopoDS::Vertex(aIt.Value()); - nIEE=aMapVI.FindFromKey(aVold); - BOPTools_EEInterference& aEE=aEEs(nIEE); - aEE.Indices(nE[0], nE[1]); - aEE.SetNewShape(nVnew); - // - for (j=0; j<2; ++j) { - if (aMFence.Add(nE[j])) { - aE=TopoDS::Edge(myDS->Shape(nE[j])); - iFlag=myContext->ComputeVE (aVnew, aE, aT); - if (!iFlag) { - aPave.SetInterference(-1); - aPave.SetType (BooleanOperations_EdgeEdge); - aPave.SetIndex(nVnew); - aPave.SetParam(aT); - // - BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE[j])); - aPaveSet.Append(aPave); - } - }// if (aMFence.Add(nE[j])) { - }// for (j=0; j<2; ++j) { - }//for (; aIt.More(); aIt.Next()) { - }// for (; aItIm.More(); aItIm.Next()) -} -// -// case: use_02 -// completely rewritten -//======================================================================= -//function : TreatNewVertices -//purpose : -//======================================================================= -void TreatNewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI, - TopTools_DataMapOfShapeListOfShape& myImages, - TopTools_DataMapOfShapeShape& myOrigins) -{ - Standard_Integer j, i, aNbV, aNbVSD; - Standard_Real aTol; - TColStd_ListIteratorOfListOfInteger aIt; - TopoDS_Shape aSTmp, aVF; - TopoDS_Vertex aVnew; - TopTools_IndexedMapOfShape aMV, aMVProcessed; - TopTools_ListIteratorOfListOfShape aItS; - TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItIm; - TopTools_DataMapOfShapeListOfShape aMVV; - NMTDS_IndexedDataMapOfIntegerShape aMIS; - NMTDS_IndexedDataMapOfShapeBox aMSB; - // - NMTDS_BoxBndTreeSelector aSelector; - NMTDS_BoxBndTree aBBTree; - NCollection_UBTreeFiller aTreeFiller(aBBTree); - // - myImages.Clear(); - myOrigins.Clear(); - // - aNbV=aMapVI.Extent(); - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMapVI.FindKey(i); - aMV.Add(aV); - } - // - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMV(i); - Bnd_Box aBox; - // - aTol=BRep_Tool::Tolerance(TopoDS::Vertex(aV)); - aBox.SetGap(aTol); - BRepBndLib::Add(aV, aBox); - // - aTreeFiller.Add(i, aBox); - // - aMIS.Add(i, aV); - aMSB.Add(aV, aBox); - } - // - aTreeFiller.Fill(); - // - // Chains - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMV(i); - // - if (aMVProcessed.Contains(aV)) { - continue; - } - // - Standard_Integer aNbIP, aIP, aNbIP1, aIP1; - TopTools_ListOfShape aLVSD; - TColStd_MapOfInteger aMIP, aMIP1, aMIPC; - TColStd_MapIteratorOfMapOfInteger aIt1; - // - aMIP.Add(i); - while(1) { - aNbIP=aMIP.Extent(); - aIt1.Initialize(aMIP); - for(; aIt1.More(); aIt1.Next()) { - aIP=aIt1.Key(); - if (aMIPC.Contains(aIP)) { - continue; - } - // - const TopoDS_Shape& aVP=aMIS.FindFromKey(aIP); - const Bnd_Box& aBoxVP=aMSB.FindFromKey(aVP); - // - aSelector.Clear(); - aSelector.SetBox(aBoxVP); - // - aNbVSD=aBBTree.Select(aSelector); - if (!aNbVSD) { - continue; // it must not be - } - // - const TColStd_ListOfInteger& aLI=aSelector.Indices(); - aIt.Initialize(aLI); - for (; aIt.More(); aIt.Next()) { - aIP1=aIt.Value(); - if (aMIP.Contains(aIP1)) { - continue; - } - aMIP1.Add(aIP1); - } //for (; aIt.More(); aIt.Next()) { - }//for(; aIt1.More(); aIt1.Next()) { - // - aNbIP1=aMIP1.Extent(); - if (!aNbIP1) { - break; // from while(1) - } - // - aIt1.Initialize(aMIP); - for(; aIt1.More(); aIt1.Next()) { - aIP=aIt1.Key(); - aMIPC.Add(aIP); - } - // - aMIP.Clear(); - aIt1.Initialize(aMIP1); - for(; aIt1.More(); aIt1.Next()) { - aIP=aIt1.Key(); - aMIP.Add(aIP); - } - aMIP1.Clear(); - }// while(1) - //... - aNbIP=aMIPC.Extent(); - if (!aNbIP) { - aMIPC.Add(i); - } - // - aIt1.Initialize(aMIPC); - for(j=0; aIt1.More(); aIt1.Next(), ++j) { - aIP=aIt1.Key(); - const TopoDS_Shape& aVP=aMIS.FindFromKey(aIP); - if (!j) { - aVF=aVP; - } - aLVSD.Append(aVP); - aMVProcessed.Add(aVP); - } - myImages.Bind(aVF, aLVSD); - }// for (i=1; i<=aNbV; ++i) { - //------------------------------ - // - // Make new vertices - aMV.Clear(); - aItIm.Initialize(myImages); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Shape& aV=aItIm.Key(); - const TopTools_ListOfShape& aLVSD=aItIm.Value(); - aNbVSD=aLVSD.Extent(); - if (aNbVSD>1) { - aMV.Add(aV); - MakeNewVertex(aLVSD, aVnew); - aMVV.Bind(aVnew, aLVSD); - } - } - // - // UnBind old vertices - aNbV=aMV.Extent(); - for (i=1; i<=aNbV; ++i) { - const TopoDS_Shape& aV=aMV(i); - myImages.UnBind(aV); - } - // - // Bind new vertices - aItIm.Initialize(aMVV); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Shape& aV=aItIm.Key(); - const TopTools_ListOfShape& aLVSD=aItIm.Value(); - myImages.Bind(aV, aLVSD); - } - // - // Origins - aItIm.Initialize(myImages); - for (; aItIm.More(); aItIm.Next()) { - const TopoDS_Shape& aV=aItIm.Key(); - const TopTools_ListOfShape& aLVSD=aItIm.Value(); - // - aItS.Initialize(aLVSD); - for (; aItS.More(); aItS.Next()) { - const TopoDS_Shape& aVSD=aItS.Value(); - if (!myOrigins.IsBound(aVSD)) { - myOrigins.Bind(aVSD, aV); - } - } - } -} - -//======================================================================= -//function : MakeNewVertex -//purpose : -//======================================================================= -void MakeNewVertex(const TopTools_ListOfShape& aLV, - TopoDS_Vertex& aNewVertex) -{ - Standard_Integer aNbV; - Standard_Real aTolV, aD, aDmax; - gp_XYZ aGC; - gp_Pnt aP3D, aPGC; - TopoDS_Vertex aVx; - BRep_Builder aBB; - TopTools_ListIteratorOfListOfShape aIt; - // - aNbV=aLV.Extent(); - if (!aNbV) { - return; - } - // - // center of gravity - aGC.SetCoord(0.,0.,0.); - aIt.Initialize(aLV); - for (; aIt.More(); aIt.Next()) { - aVx=TopoDS::Vertex(aIt.Value()); - aP3D=BRep_Tool::Pnt(aVx); - aGC+=aP3D.XYZ(); - } - aGC/=(Standard_Real)aNbV; - aPGC.SetXYZ(aGC); - // - // tolerance value - aDmax=-1.; - aIt.Initialize(aLV); - for (; aIt.More(); aIt.Next()) { - aVx=TopoDS::Vertex(aIt.Value()); - aP3D=BRep_Tool::Pnt(aVx); - aTolV=BRep_Tool::Tolerance(aVx); - aD=aPGC.Distance(aP3D)+aTolV; - if (aD>aDmax) { - aDmax=aD; - } - } - // - aBB.MakeVertex (aNewVertex, aPGC, aDmax); -} - -//======================================================================= -// function:EENewVertices -// purpose: -//======================================================================= -void NMTTools_PaveFiller::EENewVertices (const TopoDS_Vertex& aNewVertex, - const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) -{ - Standard_Integer i, aNewShape, nE1, nE2; - Standard_Real aT1, aT2; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - BOPTools_Pave aPave; - // - BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences(); - // - // one new vertex case is treated in usual way - // - // Insert New Vertex in DS; - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - aNewShape=myDS->NumberOfInsertedShapes(); - myDS->SetState (aNewShape, BooleanOperations_ON); - // Insert New Vertex in EE Interference - i=aMapVI.FindFromKey(aNewVertex); - BOPTools_EEInterference& aEEInterf= aEEs(i); - aEEInterf.SetNewShape(aNewShape); - // Extact interference info - aEEInterf.Indices(nE1, nE2); - const IntTools_CommonPrt& aCPart=aEEInterf.CommonPrt(); - VertexParameters(aCPart, aT1, aT2); - // - // Add Paves to the myPavePoolNew - aPave.SetInterference(i); - aPave.SetType (BooleanOperations_EdgeEdge); - aPave.SetIndex(aNewShape); - // Pave for edge nE1 - aPave.SetParam(aT1); - BOPTools_PaveSet& aPaveSet1=myPavePoolNew(myDS->RefEdge(nE1)); - aPaveSet1.Append(aPave); - // Pave for edge nE2 - aPave.SetParam(aT2); - BOPTools_PaveSet& aPaveSet2=myPavePoolNew(myDS->RefEdge(nE2)); - aPaveSet2.Append(aPave); -} - -//======================================================================= -// function: RefinePavePool -// purpose: -//======================================================================= -void NMTTools_PaveFiller::RefinePavePool() -{ - Standard_Integer i, aNbNew; - - for (i=1; i<=myNbSources; i++) { - - if ((myDS->GetShape(i)).ShapeType()==TopAbs_EDGE) { - BOPTools_PaveSet& aPS= myPavePool(myDS->RefEdge(i)); - // - BOPTools_PaveSet& aNewPS= myPavePoolNew(myDS->RefEdge(i)); - BOPTools_ListOfPave& aNewLP=aNewPS.ChangeSet(); - // - aNbNew=aNewLP.Extent(); - if (aNbNew) { - BOPTools_ListIteratorOfListOfPave anIt(aNewLP); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPave=anIt.Value(); - aPS.Append(aPave); - } - // Clear the ListOfPaveBlock - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(i)); - aLPB.Clear(); - // Prepare the paveBlocks for that egde again - PreparePaveBlocks(i); - } - aNewLP.Clear(); - } - } -} - -//======================================================================= -// function: PreparePaveBlocks -// purpose: -//======================================================================= -void NMTTools_PaveFiller::PreparePaveBlocks(const TopAbs_ShapeEnum aType1, - const TopAbs_ShapeEnum aType2) -{ - myIsDone=Standard_False; - // - Standard_Boolean bOk1, bOk2, bOk3, bFlag; - Standard_Integer i, aNb, nE[2], n1, n2, aNbSplits; - TColStd_MapOfInteger aMap; - // - bOk1= (aType1==TopAbs_VERTEX) && (aType2==TopAbs_EDGE) ; - bOk2= (aType1==TopAbs_EDGE) && (aType2==TopAbs_EDGE) ; - bOk3= (aType1==TopAbs_EDGE) && (aType2==TopAbs_FACE) ; - if (!bOk1 && !bOk2 && !bOk3) {// error: Type mismatch - return; - } - // - aNb=bOk2 ? 2 : 1; - // - myDSIt->Initialize(aType1, aType2); - for (; myDSIt->More(); myDSIt->Next()) { - myDSIt->Current(n1, n2, bFlag); - // - nE[0]=n1; - nE[1]=n2; - if (myDS->GetShapeType(n1)!=TopAbs_EDGE) { - nE[0]=n2; - nE[1]=n1; - } - // - for (i=0; iRefEdge(nE[i])); - aNbSplits=aLPB.Extent(); - if (!aNbSplits) { - if (aMap.Add(nE[i])) { - PreparePaveBlocks(nE[i]); - if (!myIsDone) { - return; - } - } - } - } - }// for (; myDSIt.More(); myDSIt.Next()) - myIsDone=Standard_True; -} - -//======================================================================= -// function: PreparePaveBlocks -// purpose: -//======================================================================= -void NMTTools_PaveFiller::PreparePaveBlocks(const Standard_Integer nE) -{ - myIsDone=Standard_False; - // - char buf[512]; - Standard_Integer nV1, nV2, iErr; - TopoDS_Edge aE; - TopoDS_Vertex aV1, aV2; - // - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - // Edge - aE=TopoDS::Edge(myDS->Shape(nE)); - if (BRep_Tool::Degenerated(aE)) { - myIsDone=Standard_True; - return; - } - // - BOPTools_PaveSet& aPS=myPavePool(myDS->RefEdge(nE)); - // - BOPTools_PaveBlockIterator aPBIt(nE, aPS); - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPB=aPBIt.Value(); - const IntTools_Range& aRange=aPB.Range(); - // - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - aV1=TopoDS::Vertex(myDS->GetShape(nV1)); - // - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - aV2=TopoDS::Vertex(myDS->GetShape(nV2)); - // - // ShrunkRange - IntTools_ShrunkRange aSR (aE, aV1, aV2, aRange, myContext); - iErr=aSR.ErrorStatus(); - if (!aSR.IsDone()) { - sprintf (buf, "Can not obtain ShrunkRange for Edge %d\n", nE); - BOPTColStd_Dump::PrintMessage(buf); - sprintf (buf, "Can not obtain ShrunkRange for Edge %d", nE); - throw - BOPTColStd_Failure(buf) ; - } - // - if (iErr==6) { - sprintf(buf, - "Warning: [PreparePaveBlocks()] Max.Dummy Shrunk Range for Edge %d\n", nE); - BOPTColStd_Dump::PrintMessage(buf); - } - else { - // Check left paves and correct ShrunkRange if it is necessary - CorrectShrunkRanges (0, aPave1, aSR); - CorrectShrunkRanges (1, aPave2, aSR); - } - // - aPB.SetShrunkRange(aSR); - aLPB.Append(aPB); - } //for (; aPBIt.More(); aPBIt.Next()) - myIsDone=Standard_True; -} - -//======================================================================= -// function: CorrectShrunkRanges -// purpose: -//======================================================================= -void NMTTools_PaveFiller::CorrectShrunkRanges(const Standard_Integer aSide, - const BOPTools_Pave& aPave, - IntTools_ShrunkRange& aShrunkRange) -{ - BooleanOperations_KindOfInterference aType; - Standard_Integer anIndexInterf ; - // - aType=aPave.Type(); - if (aType!=BooleanOperations_EdgeEdge) { - return; - } - // - anIndexInterf=aPave.Interference(); - if (anIndexInterf<0) { - // it can be EE interf between E and (e1,e2,..en) -> vertex - // so we can't decide which aEE.CommonPrt() we should take. - return; - } - - BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences(); - const BOPTools_EEInterference& aEE=aEEs(anIndexInterf); - const IntTools_CommonPrt& aCP=aEE.CommonPrt(); - const TopoDS_Edge& aE1=aCP.Edge1(); - const TopoDS_Edge& aE2=aCP.Edge2(); - - const IntTools_Range& aSR=aShrunkRange.ShrunkRange(); - const TopoDS_Edge& aE=aShrunkRange.Edge(); - - IntTools_Range aNewRange; - IntTools_Range aCPRange; - - if (aE1.IsSame(aE)) { - const IntTools_Range& aR1=aCP.Range1(); - aCPRange=aR1; - } - if (aE2.IsSame(aE)) { - const IntTools_SequenceOfRanges& aSeqR=aCP.Ranges2(); - const IntTools_Range& aR2=aSeqR(1); - aCPRange=aR2; - } - // - Standard_Real aCoeff=1.05, tV, tNV; - tV=aPave.Param(); - if (aSide==0) { // Left - if (aCPRange.Last() > aSR.First()) { - tNV=aCPRange.Last(); - tNV=tV+aCoeff*(tNV-tV); - aNewRange.SetFirst(tNV); - aNewRange.SetLast (aSR.Last()); - if(aNewRange.First() < aNewRange.Last()) { - aShrunkRange.SetShrunkRange(aNewRange); - } - } - } - else { // Right - if (aCPRange.First() < aSR.Last()) { - tNV=aCPRange.First(); - tNV=tV-aCoeff*(tV-tNV); - aNewRange.SetFirst(aSR.First()); - aNewRange.SetLast (tNV); - - if(aNewRange.First() < aNewRange.Last()) { - aShrunkRange.SetShrunkRange(aNewRange); - } - } - } -} - -//======================================================================= -// function: IsBlocksCoinside -// purpose: -//======================================================================= -Standard_Boolean NMTTools_PaveFiller::IsBlocksCoinside(const BOPTools_PaveBlock& aPB1, - const BOPTools_PaveBlock& aPB2) const -{ - Standard_Boolean bRetFlag=Standard_True; - Standard_Real aTolV11, aTolV12, aTolV21, aTolV22; - Standard_Real d1121, d1122, d1222, d1221, aTolSum, aCoeff=1.05; - gp_Pnt aP11, aP12, aP21, aP22; - - const TopoDS_Vertex aV11=TopoDS::Vertex(myDS->Shape(aPB1.Pave1().Index()));//mpv - const TopoDS_Vertex aV12=TopoDS::Vertex(myDS->Shape(aPB1.Pave2().Index()));//mpv - const TopoDS_Vertex aV21=TopoDS::Vertex(myDS->Shape(aPB2.Pave1().Index()));//mpv - const TopoDS_Vertex aV22=TopoDS::Vertex(myDS->Shape(aPB2.Pave2().Index()));//mpv - - aTolV11=BRep_Tool::Tolerance(aV11); - aTolV12=BRep_Tool::Tolerance(aV12); - aTolV21=BRep_Tool::Tolerance(aV21); - aTolV22=BRep_Tool::Tolerance(aV22); - - aP11=BRep_Tool::Pnt(aV11); - aP12=BRep_Tool::Pnt(aV12); - aP21=BRep_Tool::Pnt(aV21); - aP22=BRep_Tool::Pnt(aV22); - - d1121=aP11.Distance(aP21); - aTolSum=aCoeff*(aTolV11+aTolV21); - if (d1121RefEdge(nE)); - aLCBE.Append(aCBx); - } - } - } - // Modified to provide the order of edges - // in common block where the edge with max - // tolerance value will be the first - // Thu Sep 14 14:35:18 2006 - // Contribution of Samtech www.samcef.com BEGIN - Standard_Integer i, iMax, aNb, aNbCB, nSp; - Standard_Real aTolSp, aTolMax; - BOPTools_ListOfPaveBlock *pLPBE; - // - aNb=myDS->NumberOfShapesOfTheObject(); - for (nE=1; nE<=aNb; ++nE) { - const TopoDS_Shape& aE=myDS->Shape(nE); - if (aE.ShapeType()!=TopAbs_EDGE) { - continue; - } - // - NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); - aNbCB=aLCBE.Extent(); - if (!aNbCB) { - continue; - } - // - anIt.Initialize(aLCBE); - for (; anIt.More(); anIt.Next()) { - NMTTools_CommonBlock& aCBE=anIt.ChangeValue(); - const BOPTools_ListOfPaveBlock& aLPBE=aCBE.PaveBlocks(); - // - aTolMax=-1.; - anItLPE.Initialize(aLPBE); - for (i=0; anItLPE.More(); anItLPE.Next(), ++i) { - const BOPTools_PaveBlock& aPB=anItLPE.Value(); - nSp=aPB.OriginalEdge(); - const TopoDS_Edge& aSp=TopoDS::Edge(myDS->Shape(nSp)); - aTolSp=BRep_Tool::Tolerance(aSp); - if (aTolSp>aTolMax) { - iMax=i; - aTolSp=aTolMax; - } - } - // - BOPTools_ListOfPaveBlock aLPBx; - // - anItLPE.Initialize(aLPBE); - for (i=0; anItLPE.More(); anItLPE.Next(), ++i) { - const BOPTools_PaveBlock& aPB=anItLPE.Value(); - if (i==iMax) { - aLPBx.Prepend(aPB); - } - else { - aLPBx.Append(aPB); - } - } - // - pLPBE=(BOPTools_ListOfPaveBlock *)&aLPBE; - pLPBE->Clear(); - pLPBE->Append(aLPBx); - }//for (; anIt.More(); anIt.Next()) { - }//for (nE=1; nE<=aNb; ++nE) { - // Contribution of Samtech www.samcef.com END -} - -//======================================================================= -// function: RemoveCommonBlocks -// purpose: -//======================================================================= -void NMTTools_PaveFiller::RemoveCommonBlocks(const NMTTools_ListOfCommonBlock& aLCB) -{ - Standard_Integer nE; - NMTTools_ListOfCommonBlock aLCBx; - NMTTools_ListIteratorOfListOfCommonBlock anItCB, anItCBE; - BOPTools_ListIteratorOfListOfPaveBlock anItLPB; - // - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - const NMTTools_CommonBlock& aCB=anItCB.Value(); - const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); - // - // Remove aCB from each edge - anItLPB.Initialize(aLPB); - for (; anItLPB.More(); anItLPB.Next()) { - const BOPTools_PaveBlock& aPB=anItLPB.Value(); - nE=aPB.OriginalEdge(); - // - NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); - anItCBE.Initialize(aLCBE); - for (; anItCBE.More(); anItCBE.Next()) { - const NMTTools_CommonBlock& aCBE=anItCBE.Value(); - if (aCBE.IsEqual(aCB)) { - aLCBE.Remove(anItCBE); - break; - } - } - } - } -} - -//======================================================================= -// function: SplitCommonBlock -// purpose: -//======================================================================= -void NMTTools_PaveFiller::SplitCommonBlock(const NMTTools_CommonBlock& aCB, - NMTTools_ListOfCommonBlock& aLCBx) -{ - Standard_Boolean bIsCoincided; - Standard_Integer i, j,nE, aNbE, aNbSPBx, aNbPB, k; - BOPTools_SequenceOfPaveBlock aSPBx; - BOPTools_ListIteratorOfListOfPaveBlock anItLPB; - BOPTools_ListIteratorOfListOfPave anIt; - BOPTools_PaveBlockIterator anPBIt; - // - const BOPTools_ListOfPaveBlock& aLPB=aCB.PaveBlocks(); - aNbE=aLPB.Extent(); - // - // 1. Checking: Whether we realy need to split the common block ? - anItLPB.Initialize(aLPB); - for (; anItLPB.More(); anItLPB.Next()) { - const BOPTools_PaveBlock& aPB=anItLPB.Value(); - nE=aPB.OriginalEdge(); - BOPTools_PaveSet& aPSE=myPavePoolNew(myDS->RefEdge(nE)); - aPSE.SortSet(); - // - BOPTools_PaveSet aPSx; - // - const BOPTools_ListOfPave& aLPE=aPSE.Set(); - anIt.Initialize(aLPE); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPx=anIt.Value(); - if (aPB.IsInBlock(aPx)) { - aPSx.Append(aPx); - } - } - aNbPB=aPSx.Set().Extent(); - break; - } - // - if (!aNbPB) { - // we need not split it - aLCBx.Append(aCB); - return; - } - // - // 2. Get sequence of pave Blocks containing all new pave blocks - // for each edges's source pave Block - anItLPB.Initialize(aLPB); - for (; anItLPB.More(); anItLPB.Next()) { - const BOPTools_PaveBlock& aPB=anItLPB.Value(); - const BOPTools_Pave& aPave1=aPB.Pave1(); - const BOPTools_Pave& aPave2=aPB.Pave2(); - nE=aPB.OriginalEdge(); - // - BOPTools_PaveSet aPSx; - // - // the set aPsx will contain bounadry paves aPave1, aPave2 and - // all paves of the edge nE that are inside block aPB - aPSx.Append(aPave1); - aPSx.Append(aPave2); - // - BOPTools_PaveSet& aPSE=myPavePoolNew(myDS->RefEdge(nE)); - aPSE.SortSet(); - // - const BOPTools_ListOfPave& aLPE=aPSE.Set(); - anIt.Initialize(aLPE); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPx=anIt.Value(); - if (aPB.IsInBlock(aPx)) { - aPSx.Append(aPx); - } - } - // - // Form pave blocks from aPSx and collect them in aSPBx - anPBIt.Initialize(nE, aPSx); - for (; anPBIt.More(); anPBIt.Next()) { - const BOPTools_PaveBlock& aPBx=anPBIt.Value(); - aSPBx.Append(aPBx); - } - } - // - // 3. Do new common blocks - // - const TColStd_ListOfInteger& aLF=aCB.Faces(); - aNbSPBx=aSPBx.Length(); - aNbPB=aNbSPBx/aNbE; - // - Standard_Integer k1, k2, n11, n12, n21, n22; - // - for (i=1; i<=aNbPB; ++i) { - NMTTools_CommonBlock aCBx; - // - aCBx.AddFaces(aLF); - // - const BOPTools_PaveBlock& aPB1=aSPBx(i); - n11=aPB1.Pave1().Index(); - n12=aPB1.Pave2().Index(); - // - aCBx.AddPaveBlock(aPB1); - // - for (j=2; j<=aNbE; ++j) { - k1=(j-1)*aNbPB+1; - k2=k1+aNbPB-1; - for(k=k1; k<=k2; ++k) { - const BOPTools_PaveBlock& aPB2=aSPBx(k); - n21=aPB2.Pave1().Index(); - n22=aPB2.Pave2().Index(); - if ((n21==n11 && n22==n12) || (n21==n12 && n22==n11)) { - //modified by NIZNHY-PKV Thu Nov 11 08:13:24 2010f - bIsCoincided=CheckCoincidence(aPB2, aPB1); - if (bIsCoincided) { - aCBx.AddPaveBlock(aPB2); - break; - } - //aCBx.AddPaveBlock(aPB2); - //break; - //modified by NIZNHY-PKV Thu Nov 11 08:13:31 2010t - } - } - } - aLCBx.Append(aCBx); - } -} - -//======================================================================= -// function: VertexParameters -// purpose: -//======================================================================= -void VertexParameters(const IntTools_CommonPrt& aCPart, - Standard_Real& aT1, - Standard_Real& aT2) -{ - const IntTools_Range& aR1=aCPart.Range1(); - aT1=0.5*(aR1.First()+aR1.Last()); - // - if((aCPart.VertexParameter1() >= aR1.First()) && - (aCPart.VertexParameter1() <= aR1.Last())) { - aT1 = aCPart.VertexParameter1(); - } - // - const IntTools_SequenceOfRanges& aRanges2=aCPart.Ranges2(); - const IntTools_Range& aR2=aRanges2(1); - aT2=0.5*(aR2.First()+aR2.Last()); - // - if((aCPart.VertexParameter2() >= aR2.First()) && - (aCPart.VertexParameter2() <= aR2.Last())) { - aT2 = aCPart.VertexParameter2(); - } -} - -//======================================================================= -// function: KeepPave -// purpose: -//======================================================================= -Standard_Boolean IsOnPave(const Standard_Real& aT1, - const IntTools_Range& aRange, - const Standard_Real& aTolerance) -{ - Standard_Boolean firstisonpave1, firstisonpave2, bIsOnPave; - // - firstisonpave1 = (Abs(aRange.First() - aT1) < aTolerance); - firstisonpave2 = (Abs(aRange.Last() - aT1) < aTolerance); - bIsOnPave=(firstisonpave1 || firstisonpave2); - return bIsOnPave; -} - -//======================================================================= -// function:FindChains -// purpose: -//======================================================================= -void FindChains(const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB, - NMTTools_ListOfCommonBlock& aLCB) -{ - Standard_Integer i, j, aNbCB, aNbPB; - BOPTools_IMapOfPaveBlock aProcessedBlocks, aChain; - // - aNbCB=aMapCB.Extent(); - for (i=1; i<=aNbCB; ++i) { - const BOPTools_PaveBlock& aPB=aMapCB.FindKey(i); - if (aProcessedBlocks.Contains(aPB)) { - continue; - } - // - aProcessedBlocks.Add(aPB); - aChain.Add(aPB); - // - const BOPTools_IMapOfPaveBlock& aMapPB=aMapCB(i); - aNbPB=aMapPB.Extent(); - for (j=1; j<=aNbPB; ++j) { - const BOPTools_PaveBlock& aPBx=aMapPB(j); - ProcessBlock(aPBx, aMapCB, aProcessedBlocks, aChain); - } - // - NMTTools_CommonBlock aCB; - // - aNbPB=aChain.Extent(); - for (j=1; j<=aNbPB; ++j) { - const BOPTools_PaveBlock& aPBx=aChain(j); - aCB.AddPaveBlock(aPBx); - } - aLCB.Append(aCB); - aChain.Clear(); - } -} - -//======================================================================= -// function:ProcessBlock -// purpose: -//======================================================================= -void ProcessBlock(const BOPTools_PaveBlock& aPB, - const BOPTools_IDMapOfPaveBlockIMapOfPaveBlock& aMapCB, - BOPTools_IMapOfPaveBlock& aProcessedBlocks, - BOPTools_IMapOfPaveBlock& aChain) -{ - Standard_Integer j, aNbPB; - // - if (aProcessedBlocks.Contains(aPB)) { - return; - } - aProcessedBlocks.Add(aPB); - aChain.Add(aPB); - // - const BOPTools_IMapOfPaveBlock& aMapPB=aMapCB.FindFromKey(aPB); - aNbPB=aMapPB.Extent(); - for (j=1; j<=aNbPB; ++j) { - const BOPTools_PaveBlock& aPBx=aMapPB(j); - ProcessBlock(aPBx, aMapCB, aProcessedBlocks, aChain); - } -} -// Modified to provide VS interference between -// vertex as result of EE and a Face of argument -// Thu Sep 14 14:35:18 2006 -// Contribution of Samtech www.samcef.com BEGIN -//======================================================================= -// function: PerformVF1 -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformVF1() -{ - Standard_Integer i, aNbEE, n1, n2, nNewShape, aNbS, nF; - Standard_Integer anIndexIn, aFlag; - Standard_Real aU, aV; - TColStd_ListOfInteger aLFI; - TColStd_ListIteratorOfListOfInteger aItLFI; - // - BOPTools_CArray1OfVSInterference& aVSs=myIP->VSInterferences(); - BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences(); - // - aNbS=myDS->NumberOfShapesOfTheObject(); - for (i=1; i<=aNbS; ++i) { - const TopoDS_Shape& aF=myDS->Shape(i); - if (aF.ShapeType()==TopAbs_FACE) { - aLFI.Append(i); - } - } - if (!aLFI.Extent()) { - return; - } - // - aNbEE=aEEs.Extent(); - for (i=1; i<=aNbEE; ++i) { - BOPTools_EEInterference& aEE=aEEs(i); - aEE.Indices(n1, n2); - nNewShape=aEE.NewShape(); - if (!nNewShape) { - continue; - } - // - const TopoDS_Shape& aSnew=myDS->Shape(nNewShape); - if (aSnew.ShapeType()!=TopAbs_VERTEX) { - continue; - } - // - const TopoDS_Vertex& aVnew=TopoDS::Vertex(aSnew); - // - Bnd_Box aBV; - // - BRepBndLib::Add(aVnew, aBV); - // - aItLFI.Initialize(aLFI); - for (; aItLFI.More(); aItLFI.Next()) { - nF=aItLFI.Value(); - // - const TopoDS_Face& aF=TopoDS::Face(myDS->Shape(nF)); - const Bnd_Box& aBF=myDS->GetBoundingBox(nF); - if (aBF.IsOut(aBV)) { - continue; - } - // - anIndexIn=0; - aFlag=myContext->ComputeVS (aVnew, aF, aU, aV); - if (!aFlag) { - BOPTools_VSInterference anInterf (nNewShape, nF, aU, aV); - // - anIndexIn=aVSs.Append(anInterf); - BOPTools_VSInterference& aVS=aVSs(anIndexIn); - aVS.SetNewShape(nNewShape);//-> - } - } - } -} -// Contribution of Samtech www.samcef.com END -//modified by NIZNHY-PKV Thu Nov 11 08:13:48 2010f -//======================================================================= -// function: CheckCoincidence -// purpose: -//======================================================================= -Standard_Boolean NMTTools_PaveFiller::CheckCoincidence(const BOPTools_PaveBlock& aPB1, - const BOPTools_PaveBlock& aPB2) -{ - Standard_Boolean bRet; - Standard_Integer nE1, nE2, aNbPoints; - Standard_Real aT11, aT12, aT21, aT22, aT1m, aD, aTol, aT2x; - gp_Pnt aP1m; - // - bRet=Standard_False; - // - aT11=aPB1.Pave1().Param(); - aT12=aPB1.Pave2().Param(); - aT1m=IntTools_Tools::IntermediatePoint (aT11, aT12); - nE1=aPB1.OriginalEdge(); - const TopoDS_Edge& aE1=(*(TopoDS_Edge*)(&myDS->Shape(nE1))); - BOPTools_Tools::PointOnEdge(aE1, aT1m, aP1m); - // - aT21=aPB2.Pave1().Param(); - aT22=aPB2.Pave2().Param(); - nE2=aPB2.OriginalEdge(); - const TopoDS_Edge& aE2=(*(TopoDS_Edge*)(&myDS->Shape(nE2))); - // - GeomAPI_ProjectPointOnCurve& aPPC=myContext->ProjPC(aE2); - aPPC.Perform(aP1m); - aNbPoints=aPPC.NbPoints(); - if (aNbPoints) { - aD=aPPC.LowerDistance(); - // - aTol=BRep_Tool::Tolerance(aE1); - aTol=aTol+BRep_Tool::Tolerance(aE2); - if (aDaT21 && aT2x -// -#include - -#include - -#include -#include - -#include - -#include - -#include -#include -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - - -static - void VertexParameter(const IntTools_CommonPrt& aCPart, - Standard_Real& aT); -static - Standard_Boolean IsOnPave(const Standard_Real& aTR, - const IntTools_Range& aCPRange, - const Standard_Real& aTolerance); -// -//======================================================================= -// function: PerformEF -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformEF() -{ - Standard_Boolean bJustAdd; - Standard_Integer n1, n2, anIndexIn, nE, nF, aNbEFs, aBlockLength; - Standard_Integer aDiscretize; - Standard_Real aTolE, aTolF, aDeflection; - BooleanOperations_IndexedDataMapOfShapeInteger aMapVI; - BOPTools_IDMapOfPaveBlockIMapOfInteger aMapCB; - BOPTools_IMapOfPaveBlock aIMPBx; - // - myIsDone=Standard_False; - aDeflection=0.01; - aDiscretize=35; - // - BOPTools_CArray1OfESInterference& aEFs=myIP->ESInterferences(); - // - myDSIt->Initialize(TopAbs_EDGE, TopAbs_FACE); - // - // BlockLength correction - aNbEFs=myDSIt->BlockLength(); - aBlockLength=aEFs.BlockLength(); - if (aNbEFs > aBlockLength) { - aEFs.SetBlockLength(aNbEFs); - } - // - for (; myDSIt->More(); myDSIt->Next()) { - myDSIt->Current(n1, n2, bJustAdd); - // - if(bJustAdd) { - continue; - } - // - anIndexIn = 0; - // - nE=n1; - nF=n2; - if (myDS->GetShapeType(n2)==TopAbs_EDGE) { - nE=n2; - nF=n1; - } - // - // all Common Blocks for face nF - NMTTools_ListOfCommonBlock aLCBF; - CommonBlocksFace(nF, aLCBF); - NMTTools_CommonBlockAPI aCBAPIF(aLCBF); - // - // Edge - const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE)); - if (BRep_Tool::Degenerated(aE)){ - continue; - } - // - // Face - const TopoDS_Face aF=TopoDS::Face(myDS->Shape(nF)); - // - TopTools_IndexedMapOfShape aME; - TopExp::MapShapes(aF, TopAbs_EDGE, aME); - if (aME.Contains(aE)) { - continue; - } - // - aTolF=BRep_Tool::Tolerance(aF); - aTolE=BRep_Tool::Tolerance(aE); - - const Bnd_Box& aBBF=myDS->GetBoundingBox(nF); - // - // Process each PaveBlock on edge nE - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - // - BOPTools_ListIteratorOfListOfPaveBlock anIt(aLPB); - for (; anIt.More(); anIt.Next()) { - BOPTools_PaveBlock& aPB=anIt.Value(); - if (aCBAPIF.IsCommonBlock(aPB)) { - continue; - } - // - const IntTools_ShrunkRange& aShrunkRange=aPB.ShrunkRange(); - const IntTools_Range& aSR =aShrunkRange.ShrunkRange(); - const Bnd_Box& aBBE=aShrunkRange.BndBox(); - // - if (aBBF.IsOut (aBBE)) { - continue; - } - // - // EF - IntTools_EdgeFace aEF; - aEF.SetEdge (aE); - aEF.SetFace (aF); - aEF.SetTolE (aTolE); - aEF.SetTolF (aTolF); - aEF.SetDiscretize (aDiscretize); - aEF.SetDeflection (aDeflection); - // - aEF.SetContext(myContext); - // - IntTools_Range anewSR = aSR; - // - // Correction of the Shrunk Range - BOPTools_Tools::CorrectRange(aE, aF, aSR, anewSR); - aEF.SetRange (anewSR); - // - aEF.Perform(); - // - if (aEF.IsDone()) { - Standard_Boolean bCoinsideFlag; - Standard_Integer i, aNbCPrts; - TopAbs_ShapeEnum aType; - // - const IntTools_SequenceOfCommonPrts& aCPrts=aEF.CommonParts(); - // - aNbCPrts=aCPrts.Length(); - for (i=1; i<=aNbCPrts; ++i) { - anIndexIn=0; - // - const IntTools_CommonPrt& aCPart=aCPrts(i); - aType=aCPart.Type(); - // - switch (aType) { - // - case TopAbs_VERTEX: { - Standard_Boolean bIsOnPave1, bIsOnPave2; - Standard_Integer nVF; - Standard_Real aT, aTolToDecide; - TopoDS_Vertex aNewVertex; - // - const IntTools_Range& aR=aCPart.Range1(); - // - // New Vertex - VertexParameter(aCPart, aT); - BOPTools_Tools::MakeNewVertex(aE, aT, aF, aNewVertex); - // - //decide to add pave or not - aTolToDecide=5.e-8; - bIsOnPave1=IsOnPave(anewSR.First(), aR, aTolToDecide); - bIsOnPave2=IsOnPave(anewSR.Last() , aR, aTolToDecide); - // - if (!bIsOnPave1 && !bIsOnPave2) { - nVF=CheckFacePaves(aNewVertex, nF); - if (!nVF) { - // really new vertex - // Add Interference to the Pool - BOPTools_ESInterference anInterf (nE, nF, aCPart); - anIndexIn=aEFs.Append(anInterf); - anInterf.SetNewShape(0); - // - aMapVI.Add(aNewVertex, anIndexIn); - aIMPBx.Add(aPB); - // - myIP->Add(nE, nF, Standard_True, NMTDS_TI_EF); - // - }// if (!nVF) - }// if (!bIsOnPave1 && !bIsOnPave2) - // - //modified by NIZNHY-PKV Fri Apr 18 10:55:38 2008f - else { - const BOPTools_Pave& aPave=(bIsOnPave1)? aPB.Pave1() : aPB.Pave2(); - nVF=aPave.Index(); - const TopoDS_Vertex& aVF=TopoDS::Vertex(myDS->Shape(nVF)); - BOPTools_Tools::UpdateVertex (aVF, aNewVertex); - } - //modified by NIZNHY-PKV Fri Apr 18 10:55:40 2008t - // - }// case TopAbs_VERTEX: - break; - // - case TopAbs_EDGE: { - bCoinsideFlag=BOPTools_Tools::IsBlockInOnFace(aPB, aF, myContext); - if (!bCoinsideFlag) { - break; - } - // - // Fill aMapCB - if (aMapCB.Contains(aPB)) { - TColStd_IndexedMapOfInteger& aMapF=aMapCB.ChangeFromKey(aPB); - aMapF.Add(nF); - } - else { - TColStd_IndexedMapOfInteger aMapF; - aMapF.Add(nF); - aMapCB.Add(aPB, aMapF); - } - // - aIMPBx.Add(aPB); - myIP->Add(nE, nF, Standard_True, NMTDS_TI_EF); - }// case TopAbs_EDGE: - break; - - default: - break; - } // switch (aType) - } // for (i=1; i<=aNbCPrts; i++) - } //if (aEF.IsDone()) - } // for (; anIt.More(); anIt.Next()) - }// for (; myDSIt.More(); myDSIt.Next()) - // - // Treat New vertices - EFNewVertices(aMapVI); - // - // Add draft Common Blocks of EF type - EFCommonBlocks(aMapCB); - // - // Collect all CB we suspected to split by new vertices - NMTTools_ListOfCommonBlock aLCBx; - { - Standard_Integer i, aNbPBx, nEx; - BOPTools_IMapOfPaveBlock aMx; - // - aNbPBx=aIMPBx.Extent(); - for (i=1; i<=aNbPBx; ++i) { - const BOPTools_PaveBlock& aPBx=aIMPBx(i); - nEx=aPBx.OriginalEdge(); - NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nEx)); - if (aLCB.Extent()) { - NMTTools_CommonBlockAPI aCBAPIx(aLCB); - if (aCBAPIx.IsCommonBlock(aPBx)) { - NMTTools_CommonBlock& aCBx=aCBAPIx.CommonBlock(aPBx); - const BOPTools_PaveBlock& aPB1=aCBx.PaveBlock1(); - if (!aMx.Contains(aPB1)){ - aMx.Add(aPB1); - aLCBx.Append(aCBx); - } - } - } - } - } - // - // Split the common blocks above - if (aLCBx.Extent()) { - ReplaceCommonBlocks(aLCBx); - } - // - myIsDone=Standard_True; -} -//======================================================================= -// function:EFCommonBlocks -// purpose: -//======================================================================= - void NMTTools_PaveFiller::EFCommonBlocks - (const BOPTools_IDMapOfPaveBlockIMapOfInteger& aMapCB) -{ - Standard_Integer i, aNbPB, nE, j, aNbF, nF; - // - aNbPB=aMapCB.Extent(); - for (i=1; i<=aNbPB; ++i) { - const BOPTools_PaveBlock& aPB=aMapCB.FindKey(i); - const TColStd_IndexedMapOfInteger& aMapF=aMapCB.FindFromIndex(i); - aNbF=aMapF.Extent(); - // - nE=aPB.OriginalEdge(); - // - NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE)); - // - NMTTools_CommonBlockAPI aCBAPI(aLCB); - if (aCBAPI.IsCommonBlock(aPB)) { - NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB); - for (j=1; j<=aNbF; ++j) { - nF=aMapF(j); - aCB.AddFace(nF); - } - } - else { - NMTTools_CommonBlock aCB; - // - aCB.AddPaveBlock(aPB); - for (j=1; j<=aNbF; ++j) { - nF=aMapF(j); - aCB.AddFace(nF); - } - aLCB.Append(aCB); - } - } -} -//======================================================================= -// function:EFNewVertices -// purpose: -//======================================================================= - void NMTTools_PaveFiller::EFNewVertices - (const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) -{ - Standard_Integer i, j, aNb, aNewShape, aFlag, iX, aNbVV, aNbSimple; - Standard_Integer aWhat, aWith, nE, nF, nV, aNbIEF, aNbEdges, iTmp; - Standard_Real aT; - TopoDS_Compound aCompound; - TopoDS_Vertex aNewVertex; - BRep_Builder aBB; - BOPTools_Pave aPave; - NMTTools_IndexedDataMapOfIndexedMapOfInteger aMNVE, aMNVIEF; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - TopTools_IndexedMapOfShape aMNVComplex, aMNVSimple; - // - aNb=aMapVI.Extent(); - if (!aNb) { // no new vertices, no new problems - return; - } - // - BOPTools_CArray1OfESInterference& aEFs=myIP->ESInterferences(); - // - // 0. - if (aNb==1) { - aNewVertex=TopoDS::Vertex(aMapVI.FindKey(1)); - EFNewVertices(aNewVertex, aMapVI); - return; - } - // - // 1. Make compound from new vertices - aBB.MakeCompound(aCompound); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aV=aMapVI.FindKey(i); - aBB.Add(aCompound, aV); - } - // - // 2. VV intersection between these vertices - // using the auxiliary Filler - NMTTools_PaveFiller tPF; - // - tPF.SetCompositeShape(aCompound); - // - tPF.Init(); - tPF.PerformVV(); - // - NMTDS_ShapesDataStructure& tDS=*(tPF.DS()); - NMTDS_InterfPool& tInterfPool=*(tPF.IP()); - BOPTools_CArray1OfVVInterference& aVVInterfs=tInterfPool.VVInterferences(); - // - // 3. Separate Comlex and Simple new vertices - aNbVV=aVVInterfs.Extent(); - for (i=1; i<=aNbVV; ++i) { - const BOPTools_VVInterference& aVV=aVVInterfs(i); - aVV.Indices(aWhat, aWith); - const TopoDS_Shape& aV1=tDS.Shape(aWhat); - const TopoDS_Shape& aV2=tDS.Shape(aWith); - aMNVComplex.Add(aV1); - aMNVComplex.Add(aV2); - } - // - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aV=aMapVI.FindKey(i); - if (!aMNVComplex.Contains(aV)) { - aMNVSimple.Add(aV); - } - } - // - // 4. Treat Simple new Vertices - aNbSimple=aMNVSimple.Extent(); - for (i=1; i<=aNbSimple; ++i) { - const TopoDS_Vertex& aV=TopoDS::Vertex(aMNVSimple(i)); - EFNewVertices(aV, aMapVI); - } - // - // 3. Fill Maps : NewVertex-edges (aMNVE) - // NewVertex-interferences (aMNVIEE) - aNb=aVVInterfs.Extent(); - for (i=1; i<=aNb; ++i) { - const BOPTools_VVInterference& aVV=aVVInterfs(i); - aNewShape=aVV.NewShape(); - if (!aNewShape) { - continue; - } - // - if (!aMNVE.Contains(aNewShape)) { - TColStd_IndexedMapOfInteger aMx; - aMNVE.Add(aNewShape, aMx); - } - if (!aMNVIEF.Contains(aNewShape)) { - TColStd_IndexedMapOfInteger aMx; - aMNVIEF.Add(aNewShape, aMx); - } - // - TColStd_IndexedMapOfInteger& aME=aMNVE.ChangeFromKey(aNewShape); - TColStd_IndexedMapOfInteger& aMIEF=aMNVIEF.ChangeFromKey(aNewShape); - // - aVV.Indices(aWhat, aWith); - //aWhat - const TopoDS_Shape& aV1=tDS.Shape(aWhat); - iX=aMapVI.FindFromKey(aV1); - const BOPTools_ESInterference& aEF1=aEFs(iX); - aEF1.Indices(nE, nF); - // - if (myDS->GetShapeType(nF)==TopAbs_EDGE) { - iTmp=nE; - nE=nF; - nF=iTmp; - } - aME.Add(nE); - aMIEF.Add(iX); - //aWith - const TopoDS_Shape& aV2=tDS.Shape(aWith); - iX=aMapVI.FindFromKey(aV2); - const BOPTools_ESInterference& aEF2=aEFs(iX); - aEF2.Indices(nE, nF); - // - if (myDS->GetShapeType(nF)==TopAbs_EDGE) { - iTmp=nE; - nE=nF; - nF=iTmp; - } - aME.Add(nE); - aMIEF.Add(iX); - }// for (i=1; i<=aNb; ++i) { - // - // 4. Process new vertices - aNb=aMNVE.Extent(); - for (i=1; i<=aNb; ++i) { // xx - // - // new Vertex - nV=aMNVE.FindKey(i); - aNewVertex=TopoDS::Vertex(tDS.Shape(nV)); - // - // Insert New Vertex in DS; - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - aNewShape=myDS->NumberOfInsertedShapes(); - myDS->SetState (aNewShape, BooleanOperations_ON); - // - // Update index of NewShape in EF interferences - const TColStd_IndexedMapOfInteger& aMIEF=aMNVIEF.FindFromKey(nV); - aNbIEF=aMIEF.Extent(); - for (j=1; j<=aNbIEF; ++j) { - iX=aMIEF(j); - BOPTools_ESInterference& aEF=aEFs(iX); - aEF.SetNewShape(aNewShape); - } - // - // Update Paves on all edges - const TColStd_IndexedMapOfInteger& aME=aMNVE(i); - aNbEdges=aME.Extent(); - for (j=1; j<=aNbEdges; ++j) { - nE=aME(j); - const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));//mpv - // - aFlag=myContext->ComputeVE (aNewVertex, aE, aT); - // - if (!aFlag) { - aPave.SetInterference(-1); - aPave.SetType (BooleanOperations_EdgeSurface); - aPave.SetIndex(aNewShape); - aPave.SetParam(aT); - // - BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE)); - aPaveSet.Append(aPave); - } - } - } -} -//======================================================================= -// function:EFNewVertices -// purpose: -//======================================================================= - void NMTTools_PaveFiller::EFNewVertices - (const TopoDS_Vertex& aNewVertex, - const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI) -{ - Standard_Integer i, aNewShape, nE, nF; - Standard_Real aT; - BOPTools_Pave aPave; - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - BOPTools_CArray1OfESInterference& aEFs=myIP->ESInterferences(); - // - // Insert New Vertex in DS; - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - aNewShape=myDS->NumberOfInsertedShapes(); - myDS->SetState (aNewShape, BooleanOperations_ON); - // - // Insert New Vertex in EFInterference - i=aMapVI.FindFromKey(aNewVertex); - BOPTools_ESInterference& aEFInterf= aEFs(i); - aEFInterf.SetNewShape(aNewShape); - // Extract interference info - aEFInterf.Indices(nE, nF); - if (myDS->GetShapeType(nF)==TopAbs_EDGE) { - nE=nF; - } - const IntTools_CommonPrt& aCPart=aEFInterf.CommonPrt(); - VertexParameter(aCPart, aT); - // - // Pave for edge nE - aPave.SetInterference(i); - aPave.SetType (BooleanOperations_EdgeSurface); - aPave.SetIndex(aNewShape); - aPave.SetParam(aT); - // Append the Pave to the myPavePoolNew - BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE)); - aPaveSet.Append(aPave); - // -} -//======================================================================= -// function: CheckFacePaves -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::CheckFacePaves - (const TopoDS_Vertex& aNewVertex, - const Standard_Integer nF) -{ - Standard_Integer nEF, nVF, iFlag, i, aNbV, iRet; - BOPTools_ListIteratorOfListOfPave anIt; - TColStd_IndexedMapOfInteger aMVF; - // - iRet=0; - // - BooleanOperations_OnceExplorer aExp(*myDS); - aExp.Init(nF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nEF=aExp.Current(); - BOPTools_PaveSet& aPaveSet=myPavePool(myDS->RefEdge(nEF)); - const BOPTools_ListOfPave& aLP=aPaveSet.Set(); - anIt.Initialize(aLP); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPave=anIt.Value(); - nVF=aPave.Index(); - aMVF.Add(nVF); - } - } - // - aNbV=aMVF.Extent(); - for (i=1; i<=aNbV; ++i) { - nVF=aMVF(i); - const TopoDS_Vertex aVF=TopoDS::Vertex(myDS->Shape(nVF)); - iFlag=IntTools_Tools::ComputeVV(aNewVertex, aVF); - if (!iFlag) { - return nVF; - } - } - return iRet; -} -// -//======================================================================= -// function: VertexParameter -// purpose: -//======================================================================= -void VertexParameter(const IntTools_CommonPrt& aCPart, - Standard_Real& aT) -{ - const IntTools_Range& aR=aCPart.Range1(); - aT=0.5*(aR.First()+aR.Last()); - if((aCPart.VertexParameter1() >= aR.First()) && - (aCPart.VertexParameter1() <= aR.Last())) { - aT = aCPart.VertexParameter1(); - } -} -//======================================================================= -// function: IsOnPave -// purpose: -//======================================================================= -Standard_Boolean IsOnPave(const Standard_Real& aTR, - const IntTools_Range& aCPRange, - const Standard_Real& aTolerance) -{ - Standard_Boolean bIsOnPave; - Standard_Real aT1, aT2, dT1, dT2; - // - aT1=aCPRange.First(); - aT2=aCPRange.Last(); - bIsOnPave=(aTR>=aT1 && aTR<=aT1); - if (bIsOnPave) { - return bIsOnPave; - } - // - dT1=Abs(aTR-aT1); - dT2=Abs(aTR-aT2); - bIsOnPave=(dT1<=aTolerance || dT2<=aTolerance); - return bIsOnPave; -} diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller_6.cxx b/src/NMTTools_NEW/NMTTools_PaveFiller_6.cxx deleted file mode 100644 index 96efa6914..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller_6.cxx +++ /dev/null @@ -1,1605 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File: NMTTools_PaveFiller_6.cxx -// Created: Fri Dec 19 10:27:31 2003 -// Author: Peter KURNEV - -#include - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static - Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE, - const Handle(IntTools_Context)& aCtx); - -//======================================================================= -// function: PerformFF -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PerformFF() -{ - myIsDone=Standard_False; - // - Standard_Boolean bToApproxC3d, bToApproxC2dOnS1, bToApproxC2dOnS2, bIsDone; - Standard_Boolean bJustAdd, bToSplit; - Standard_Integer n1, n2, anIndexIn, nF1, nF2, aBlockLength, aNbFFs; - Standard_Integer aNbCurves, aNbPoints; - Standard_Real anApproxTol, aTolR3D, aTolR2D; - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger aMapWhat, aMapWith; - IntTools_SequenceOfPntOn2Faces aPnts; - IntTools_SequenceOfCurves aCvs; - // - BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences(); - // - // F/F Interferences [BooleanOperations_SurfaceSurface] - myDSIt->Initialize(TopAbs_FACE, TopAbs_FACE); - // - // BlockLength correction - aNbFFs=myDSIt->BlockLength(); - aBlockLength=aFFs.BlockLength(); - if (aNbFFs > aBlockLength) { - aFFs.SetBlockLength(aNbFFs); - } - // - //modified by NIZNHY-PKV Thu Sep 15 08:02:52 2011f - bToSplit=Standard_False; - //modified by NIZNHY-PKV Thu Sep 15 08:02:55 2011t - // - for (; myDSIt->More(); myDSIt->Next()) { - myDSIt->Current(n1, n2, bJustAdd); - // - nF1 = n2; - nF2 = n1; - if(n1 < n2) { - nF1 = n1; - nF2 = n2; - } - anIndexIn=0; - aPnts.Clear(); - aCvs.Clear(); - // - const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));//mpv - const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));//mpv - // - // FF - bToApproxC3d = mySectionAttribute.Approximation(); - bToApproxC2dOnS1 = mySectionAttribute.PCurveOnS1(); - bToApproxC2dOnS2 = mySectionAttribute.PCurveOnS2(); - // - anApproxTol=1.e-7; - // - IntTools_FaceFace aFF; - // - aFF.SetParameters (bToApproxC3d, bToApproxC2dOnS1, - bToApproxC2dOnS2, anApproxTol); - // - aFF.Perform(aF1, aF2); - // - bIsDone=aFF.IsDone(); - // - if (!bIsDone) { - BOPTools_SSInterference anInterf (nF1, nF2, 1.e-07, 1.e-07, aCvs, aPnts); - anIndexIn=aFFs.Append(anInterf); - continue; - } - // - aTolR3D=aFF.TolReached3d(); - aTolR2D=aFF.TolReached2d(); - if (aTolR3D < 1.e-7){ - aTolR3D=1.e-7; - } - // - //modified by NIZNHY-PKV Thu Sep 15 08:03:02 2011f -#if OCC_VERSION_LARGE > 0x06050100 // For OCCT6.5.2 and higher - aFF.PrepareLines3D(bToSplit); -#else - aFF.PrepareLines3D(); -#endif // OCC_VERSION_LARGE > 0x06050100 // For OCCT6.5.2 and higher - //modified by NIZNHY-PKV Thu Sep 15 08:03:04 2011t - // - const IntTools_SequenceOfCurves& aCvsX=aFF.Lines(); - const IntTools_SequenceOfPntOn2Faces& aPntsX=aFF.Points(); - // - aNbCurves=aCvsX.Length(); - aNbPoints=aPntsX.Length(); - // - if (!aNbCurves && !aNbPoints) { - BOPTools_SSInterference anInterf (nF1, nF2, 1.e-07, 1.e-07, aCvs, aPnts); - anIndexIn=aFFs.Append(anInterf); - continue; - } - // - { - BOPTools_SSInterference anInterf (nF1, nF2, aTolR3D, aTolR2D, aCvsX, aPntsX); - anIndexIn=aFFs.Append(anInterf); - } - // - }// for (; myDSIt.More(); myDSIt.Next()) - // - myIsDone=Standard_True; -} - -//======================================================================= -// function: MakeBlocks -// purpose: -//======================================================================= -void NMTTools_PaveFiller::MakeBlocks() -{ - myIsDone=Standard_False; - // - Standard_Boolean bIsExistingPaveBlock, bIsValidIn2D, bIsCoincided; - Standard_Boolean bIsMicroEdge, bHasES; - Standard_Integer i, aNbFFs, nF1, nF2; - Standard_Integer nV1, nV2, j, aNbCurves; - Standard_Real aTolR3D, aTol2D, aT1, aT2, aTolPPC=Precision::PConfusion(); - TopoDS_Face aF1, aF2; - NMTTools_IndexedDataMapOfShapePaveBlock aMEPB; - BooleanOperations_IndexedDataMapOfShapeInteger aMapEI; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences(); - // - - // - // 1. Make Section Edges from intersection curves - // between each pair of faces - aNbFFs=aFFs.Extent(); - if (!aNbFFs) { - return; - } - // - FillFaceInfo(); - // - for (i=1; i<=aNbFFs; ++i) { - BOPTools_ListOfPaveBlock aLPB; - TColStd_MapOfInteger aMVStick; - TopTools_ListOfShape aLSE; - TColStd_ListOfInteger aLNE; - BOPTools_PaveSet aPSF; - NMTTools_MapOfPaveBlock aMPBX; - TColStd_MapIteratorOfMapOfInteger aItMI; - NMTTools_MapIteratorOfMapOfPaveBlock aItMPB; - // - BOPTools_SSInterference& aFFi=aFFs(i); - // - // Faces - aFFi.Indices(nF1, nF2); - aF1=*((TopoDS_Face*)(&myDS->Shape(nF1))); - aF2=*((TopoDS_Face*)(&myDS->Shape(nF2))); - // - SharedEdges(nF1, nF2, aLNE, aLSE); - aFFi.SetSharedEdges(aLNE); - // - // aMVStick - const NMTTools_FaceInfo& aFI1=myFaceInfo.Find(nF1); - const NMTTools_FaceInfo& aFI2=myFaceInfo.Find(nF2); - // - const TColStd_MapOfInteger& aMVOn1=aFI1.VerticesOn(); - const TColStd_MapOfInteger& aMVIn1=aFI1.VerticesIn(); - const TColStd_MapOfInteger& aMVOn2=aFI2.VerticesOn(); - const TColStd_MapOfInteger& aMVIn2=aFI2.VerticesIn(); - // - for (j=0; j<2; ++j) { - const TColStd_MapOfInteger& aMV1=(!j) ? aMVOn1 :aMVIn1; - aItMI.Initialize(aMV1); - for (; aItMI.More(); aItMI.Next()) { - nV1=aItMI.Key(); - if (aMVOn2.Contains(nV1) || aMVIn2.Contains(nV1)) { - aMVStick.Add(nV1); - } - } - } - // - // aLPB - const NMTTools_MapOfPaveBlock& aMPBIn1=aFI1.PaveBlocksIn(); - const NMTTools_MapOfPaveBlock& aMPBOn1=aFI1.PaveBlocksOn(); - const NMTTools_MapOfPaveBlock& aMPBIn2=aFI2.PaveBlocksIn(); - const NMTTools_MapOfPaveBlock& aMPBOn2=aFI2.PaveBlocksOn(); - // - aMPBX.Clear(); - for (j=0; j<4; ++j) { - NMTTools_MapOfPaveBlock *pMPB; - // - if (!j) { - pMPB=((NMTTools_MapOfPaveBlock*)&aMPBIn1); - } - else if (j==1) { - pMPB=((NMTTools_MapOfPaveBlock*)&aMPBOn1); - } - else if (j==2) { - pMPB=((NMTTools_MapOfPaveBlock*)&aMPBIn2); - } - else if (j==3) { - pMPB=((NMTTools_MapOfPaveBlock*)&aMPBOn2); - } - // - const NMTTools_MapOfPaveBlock& aMPB=*pMPB; - aItMPB.Initialize(aMPB); - for (; aItMPB.More(); aItMPB.Next()) { - const BOPTools_PaveBlock& aPB=aItMPB.Key(); - if (aMPBX.Add(aPB)) { - aLPB.Append(aPB); - } - // - else { - if (j>1) { - aFFi.AppendBlock(aPB); - } - } - // - } - } - // - BOPTools_SequenceOfCurves& aSCvs=aFFi.Curves(); - aNbCurves=aSCvs.Length(); - if (!aNbCurves) { - continue; - } - // - aTolR3D=aFFi.TolR3D(); - aTol2D=(aTolR3D < 1.e-3) ? 1.e-3 : aTolR3D; - // - CorrectTolR3D(aFFi, aMVStick, aTolR3D); - // - PrepareSetForFace (nF1, nF2, aLPB, aPSF); - // - // Put Paves On Curves - for (j=1; j<=aNbCurves; ++j) { - BOPTools_Curve& aBC=aSCvs(j); - const IntTools_Curve& aC=aBC.Curve(); - // DEBUG f - Handle(Geom_Curve) aC3D = aC.Curve(); - // DEBUG t - PutPaveOnCurve (aPSF, aTolR3D, aBC); - } - // - // Put bounding paves on curves - for (j=1; j<=aNbCurves; ++j) { - BOPTools_Curve& aBC=aSCvs(j); - PutBoundPaveOnCurve (aBC, aFFi); - } - //modified by NIZNHY-PKV Wed Sep 14 13:12:14 2011f -#if OCC_VERSION_LARGE > 0x06050100 // For OCCT6.5.2 and higher - // - // Put closing pave if needded - for (j=1; j<=aNbCurves; ++j) { - BOPTools_Curve& aBC=aSCvs(j); - PutClosingPaveOnCurve (aBC, aFFi); - } -#endif // OCC_VERSION_LARGE > 0x06050100 // For OCCT6.5.2 and higher - //modified by NIZNHY-PKV Wed Sep 14 13:12:17 2011t - // - // Pave Blocks on Curves - bHasES=Standard_False; - for (j=1; j<=aNbCurves; ++j) { - BOPTools_Curve& aBC=aSCvs(j); - const IntTools_Curve& aIC= aBC.Curve(); - BOPTools_PaveSet& aPaveSet=aBC.Set(); - // - BOPTools_PaveBlockIterator aPBIter(0, aPaveSet); - for (; aPBIter.More(); aPBIter.Next()) { - BOPTools_PaveBlock& aPBNew=aPBIter.Value(); - aPBNew.SetCurve(aIC); - aPBNew.SetFace1(nF1); - aPBNew.SetFace2(nF2); - // - nV1=aPBNew.Pave1().Index(); - nV2=aPBNew.Pave2().Index(); - aT1=aPBNew.Pave1().Param(); - aT2=aPBNew.Pave2().Param(); - // - if((nV1==nV2) && (Abs(aT2 - aT1) < aTolPPC)) { - continue;// mkk ft ??? - } - // - // 1 - bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aLPB, aTolR3D); - if (bIsExistingPaveBlock) { - continue; - } - // - bIsCoincided=CheckCoincidence(aPBNew, aLPB); - if(bIsCoincided) { - continue; - } - // - // 2 - bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aLSE, aTolR3D); - if (bIsExistingPaveBlock) { - continue; - } - // - // Checking of validity in 2D - // - bIsValidIn2D=myContext->IsValidBlockForFaces(aT1, aT2, aIC, aF1, aF2, aTol2D); - if (!bIsValidIn2D) { - continue; - } - // - // - // Make Section Edge - TopoDS_Edge aES; - // - const TopoDS_Vertex aV1=TopoDS::Vertex(myDS->Shape(nV1)); - const TopoDS_Vertex aV2=TopoDS::Vertex(myDS->Shape(nV2)); - // - { - Standard_Real aT; - // - myContext->IsVertexOnLine(aV1, aIC, aTolR3D, aT); - BOPTools_Tools::UpdateVertex (aIC, aT, aV1); - // - myContext->IsVertexOnLine(aV2, aIC, aTolR3D, aT); - BOPTools_Tools::UpdateVertex (aIC, aT, aV2); - } - // - BOPTools_Tools::MakeSectEdge (aIC, aV1, aT1, aV2, aT2, aES); - // - NMTTools_Tools::UpdateEdge (aES, aTolR3D); - bIsMicroEdge=IsMicroEdge(aES, myContext); - if (bIsMicroEdge) { - continue; - } - // - { - Handle(Geom2d_Curve) aC2D1, aC2D2; - // - aC2D1=aIC.FirstCurve2d(); - aC2D2=aIC.SecondCurve2d(); - // - NMTTools_Tools::MakePCurve(aES, aF1, aC2D1); - NMTTools_Tools::MakePCurve(aES, aF2, aC2D2); - } - // - aMEPB.Add(aES, aPBNew); - aMapEI.Add(aES, i); - // - bHasES=Standard_True; - }// for (; aPBIter.More(); aPBIter.Next()) - } // end of for (j=1; j<=aNbCurves; ++j) - // qqf - if (bHasES) { - myIP->Add(nF1, nF2, Standard_True, NMTDS_TI_FF); - } - // qqt - }// for (i=1; i<=aNbFFs; ++i) - //============================================================= - // - // II. Post treatment - // - // Input data: aMEPB, aMapEI - // Result : section edges in myDS - // - Standard_Integer aNbSE; - // - aNbSE=aMEPB.Extent(); - if (!aNbSE) { - // there is nothing to do here - return; - } - // - BRep_Builder aBB; - TopoDS_Compound aCompound; - // - // 1. Make compound from SE - aBB.MakeCompound(aCompound); - for (i=1; i<=aNbSE; ++i) { - const TopoDS_Shape& aSE=aMEPB.FindKey(i); - aBB.Add(aCompound, aSE); - } - // - // - // 2. Intersect SE using auxiliary Filler - NMTTools_PaveFiller tPF; - // - tPF.SetCompositeShape(aCompound); - // - // 2.1.VV - tPF.Init(); - tPF.PerformVV(); - // - // 2.2.VE - tPF.myPavePool.Resize (tPF.myNbEdges); - tPF.PrepareEdges(); - tPF.PerformVE(); - // - // 2.3.VF - tPF.PerformVF(); - // - // 2.4.EE - tPF.myCommonBlockPool.Resize (tPF.myNbEdges); - tPF.mySplitShapesPool.Resize (tPF.myNbEdges); - tPF.myPavePoolNew .Resize (tPF.myNbEdges); - - tPF.PreparePaveBlocks(TopAbs_VERTEX, TopAbs_EDGE); - tPF.PreparePaveBlocks(TopAbs_EDGE, TopAbs_EDGE); - // - tPF.PerformEE(); - // - tPF.RefinePavePool (); - // - tPF.myPavePoolNew.Destroy(); - // - tPF.MakeSplitEdges(); - tPF.UpdateCommonBlocks(); - // - // 3. Treatment of the result of intersection - // - Standard_Integer aNbOld, aNbLines, aNbPB, mV1, mV2, nE, mE, iFF; - TopAbs_ShapeEnum aType; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTColStd_IndexedDataMapOfIntegerInteger aMNewOld; - // - const NMTDS_ShapesDataStructure& tDS=*(tPF.DS()); - const BOPTools_SplitShapesPool& aSSP=tPF.mySplitShapesPool; - const NMTTools_CommonBlockPool& aCBP=tPF.myCommonBlockPool; - // - aNbLines=tDS.NumberOfInsertedShapes(); - aNbOld=tDS.NumberOfShapesOfTheObject(); - // - // 3.1 Links between indices in tDS and DS (kept in aMNewOld) - // - // 3.1.1.Old vertices [ links ] - for (i=1; i<=aNbOld; ++i) { - const TopoDS_Shape& aV=tDS.Shape(i); - aType=aV.ShapeType(); - if (aType!=TopAbs_VERTEX) { - continue; - } - // - for (j=1; j<=aNbSE; ++j) { - const BOPTools_PaveBlock& aPBSE=aMEPB(j); - nV1=aPBSE.Pave1().Index(); - const TopoDS_Shape aV1=myDS->Shape(nV1);//mpv - if (aV1.IsSame(aV)) { - aMNewOld.Add(i, nV1); - break; - } - nV2=aPBSE.Pave2().Index(); - const TopoDS_Shape aV2=myDS->Shape(nV2);//mpv - if (aV2.IsSame(aV)) { - aMNewOld.Add(i, nV2); - break; - } - } - } - // - // 3.1.2. New vertices [ links ] - i=tDS.NumberOfSourceShapes()+1; - for (; i<=aNbLines; ++i) { - const TopoDS_Shape& aV=tDS.Shape(i); - aType=aV.ShapeType(); - if (aType!=TopAbs_VERTEX) { - continue; - } - // - // Insert new vertex in myDS - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - myDS->InsertShapeAndAncestorsSuccessors(aV, anASSeq); - nV1=myDS->NumberOfInsertedShapes(); - // link - aMNewOld.Add(i, nV1); - } - // - // 3.2. Treatment of section edges (SE) - for (i=1; i<=aNbOld; ++i) { - const TopoDS_Shape& aE=tDS.Shape(i); - aType=aE.ShapeType(); - if (aType!=TopAbs_EDGE) { - continue; - } - // - // block of section edge that we already have for this SE - BOPTools_PaveBlock& aPBSE=aMEPB.ChangeFromKey(aE); - // - // Corresponding FF-interference - iFF=aMapEI.FindFromKey(aE); - BOPTools_SSInterference& aFFi=aFFs(iFF); - BOPTools_SequenceOfCurves& aSCvs=aFFi.Curves(); - // - BOPTools_Curve& aBC=aSCvs(1); - // - const BOPTools_ListOfPaveBlock& aLPB=aSSP(tDS.RefEdge(i)); - aNbPB=aLPB.Extent(); - // - if (!aNbPB) { - // no pave blocks -> use aPBSE and whole edge aE - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - nV1=aPBSE.Pave1().Index(); - const TopoDS_Shape aV1=myDS->Shape(nV1);//mpv - nV2=aPBSE.Pave2().Index(); - const TopoDS_Shape aV2=myDS->Shape(nV2);//mpv - // - anASSeq.SetNewSuccessor(nV1); - anASSeq.SetNewOrientation(aV1.Orientation()); - anASSeq.SetNewSuccessor(nV2); - anASSeq.SetNewOrientation(aV2.Orientation()); - // - myDS->InsertShapeAndAncestorsSuccessors(aE, anASSeq); - nE=myDS->NumberOfInsertedShapes(); - // - aPBSE.SetEdge(nE); - aBC.AppendNewBlock(aPBSE); - // - continue; - } - // - nF1=aPBSE.Face1(); - nF2=aPBSE.Face2(); - // - const NMTTools_ListOfCommonBlock& aLCB=aCBP(tDS.RefEdge(i)); - NMTTools_CommonBlockAPI aCBAPI(aLCB); - // - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - BOPTools_PaveBlock aPB=aIt.Value(); - // - const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1)); - const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2)); - // - if (aCBAPI.IsCommonBlock(aPB)) { - // it can be Common Block - Standard_Real aTolEx; - Handle(Geom2d_Curve) aC2D1, aC2D2; - TopoDS_Face aF1FWD, aF2FWD; - // - NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB); - //const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); - // - aPB=aCB.PaveBlock1(); - mE=aPB.Edge(); // index of edge in tDS - const TopoDS_Edge& aEx=TopoDS::Edge(tDS.Shape(mE)); - aTolEx=BRep_Tool::Tolerance(aEx); - // - aF1FWD=aF1; - aF1FWD.Orientation(TopAbs_FORWARD); - aF2FWD=aF2; - aF2FWD.Orientation(TopAbs_FORWARD); - // - NMTTools_Tools::MakePCurve(aEx, aF1FWD, aC2D1); - NMTTools_Tools::MakePCurve(aEx, aF2FWD, aC2D2); - NMTTools_Tools::UpdateEdge (aEx, aTolEx); - } //if (aCBAPI.IsCommonBlock(aPB)) - // - // new SE - mE=aPB.Edge(); // index of edge in tDS - const TopoDS_Shape& aSp=tDS.Shape(mE); - // - const BOPTools_Pave& aPave1=aPB.Pave1(); - aT1=aPave1.Param(); - mV1=aPave1.Index(); // index in tDS - nV1=aMNewOld.FindFromKey(mV1); // index in myDS - const TopoDS_Shape aV1=myDS->Shape(nV1);//mpv - // - const BOPTools_Pave& aPave2=aPB.Pave2(); - aT2=aPave2.Param(); - mV2=aPave2.Index(); - nV2=aMNewOld.FindFromKey(mV2); - const TopoDS_Shape aV2=myDS->Shape(nV2);//mpv - // - if (!aMNewOld.Contains(mE)) { - // add new SE to the myDS - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - anASSeq.SetNewSuccessor(nV1); - anASSeq.SetNewOrientation(aV1.Orientation()); - - anASSeq.SetNewSuccessor(nV2); - anASSeq.SetNewOrientation(aV2.Orientation()); - - myDS->InsertShapeAndAncestorsSuccessors(aSp, anASSeq); - nE=myDS->NumberOfInsertedShapes(); - // - aMNewOld.Add(mE, nE); - } - else { - nE=aMNewOld.FindFromKey(mE); - } - // Form PaveBlock; - BOPTools_PaveBlock aPBx; - BOPTools_Pave aP1, aP2; - // - aPBx.SetFace1(nF1); - aPBx.SetFace1(nF2); - // - aP1.SetIndex(nV1); - aP1.SetParam(aT1); - // - aP2.SetIndex(nV2); - aP2.SetParam(aT2); - // - aPBx.SetPave1(aP1); - aPBx.SetPave2(aP2); - // - aPBx.SetEdge(nE); - // - aBC.AppendNewBlock(aPBx); - }// for (; aIt.More(); aIt.Next()) - }// for (i=1; i<=aNbOld; ++i) - // - myIsDone=Standard_True; -} - -//======================================================================= -// function: MakePCurves -// purpose: -//======================================================================= -void NMTTools_PaveFiller::MakePCurves() -{ - Standard_Integer i, aNb, nF1, nF2, nE; - Standard_Integer aNbCB, aNbF, nSp, nF; - TopAbs_ShapeEnum aType; - TopoDS_Face aF1FWD, aF2FWD; - TColStd_ListIteratorOfListOfInteger aItF; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - NMTTools_ListIteratorOfListOfCommonBlock aItCB; - // - BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences(); - // - aNb=aFFs.Extent(); - for (i=1; i<=aNb; i++) { - BOPTools_SSInterference& aFF=aFFs(i); - aFF.Indices(nF1, nF2); - // - const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));//mpv - const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));//mpv - // - aF1FWD=aF1; - aF1FWD.Orientation(TopAbs_FORWARD); - aF2FWD=aF2; - aF2FWD.Orientation(TopAbs_FORWARD); - // - // In, On parts processing - const BOPTools_ListOfPaveBlock& aLPBInOn=aFF.PaveBlocks(); - // - anIt.Initialize(aLPBInOn); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - nE=aPB.Edge(); - const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));//mpv - - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF1FWD); - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF2FWD); - } - } - // Check common blocks between edges and faces - // Build P-Curves if they were not built in previos block. - // The main case is :arguments for e.g aEdge, aFace -> no FFs, - // but p-curves are needed. - // - aNb=myDS->NumberOfShapesOfTheObject(); - for (i=1; i<=aNb; ++i) { - const TopoDS_Shape& aS=myDS->Shape(i); - aType=aS.ShapeType(); - // - if (aType!=TopAbs_EDGE) { - continue; - } - const TopoDS_Edge& aE=TopoDS::Edge(aS); - // - if (BRep_Tool::Degenerated(aE)) { - continue; - } - // - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(i)); - aNbCB=aLCB.Extent(); - if (!aNbCB) { - continue; - } - // - aItCB.Initialize(aLCB); - for (; aItCB.More(); aItCB.Next()) { - const NMTTools_CommonBlock& aCB=aItCB.Value(); - const BOPTools_PaveBlock &aPB1=aCB.PaveBlock1(); - // - const TColStd_ListOfInteger& aLF=aCB.Faces(); - aNbF=aLF.Extent(); - if (!aNbF) { - continue; - } - // - nSp=aPB1.Edge(); - const TopoDS_Edge aSp=TopoDS::Edge(myDS->Shape(nSp));//mpv - // - aItF.Initialize(aLF); - for (; aItF.More(); aItF.Next()) { - nF=aItF.Value(); - aF1FWD=TopoDS::Face(myDS->Shape(nF)); - aF1FWD.Orientation(TopAbs_FORWARD); - // - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aSp, aF1FWD); - } // for (; aItCB.More(); aItCB.Next()) { - }//if (aS.ShapeType()==TopAbs_EDGE) { - } -} - -//======================================================================= -// function: IsExistingPaveBlock -// purpose: -//======================================================================= -Standard_Boolean NMTTools_PaveFiller::IsExistingPaveBlock(const BOPTools_PaveBlock& aPBNew, - const BOPTools_ListOfPaveBlock& aLPBR, - const Standard_Real aTolR3D) -{ - Standard_Boolean bFlag; - Standard_Integer nVNew1, nVNew2, nV1, nV2, iC; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - bFlag=Standard_False; - nVNew1=aPBNew.Pave1().Index(); - nVNew2=aPBNew.Pave2().Index(); - // - anIt.Initialize(aLPBR); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBR=anIt.Value(); - nV1=aPBR.Pave1().Index(); - nV2=aPBR.Pave2().Index(); - if (nVNew1==nV1 || nVNew1==nV2 || nVNew2==nV1 || nVNew2==nV2) { - // - iC=CheckIntermediatePoint(aPBNew, aPBR, aTolR3D); - if (!iC) { - return !bFlag; - } - } - } - return bFlag; -} - -//======================================================================= -// function: IsExistingPaveBlock -// purpose: -//======================================================================= -Standard_Boolean NMTTools_PaveFiller::IsExistingPaveBlock(const BOPTools_PaveBlock& aPBNew, - const TopTools_ListOfShape& aLSE, - const Standard_Real aTolR3D) -{ - Standard_Boolean bFlag; - Standard_Integer aNbSE, iC; - Standard_Real aTolE, aTol; - TopTools_ListIteratorOfListOfShape anIt; - // - bFlag=Standard_False; - // - aNbSE=aLSE.Extent(); - if (!aNbSE) { - return bFlag; - } - // - anIt.Initialize(aLSE); - for (; anIt.More(); anIt.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(anIt.Value()); - aTolE=BRep_Tool::Tolerance(aE); - aTol=aTolR3D; - if (aTolE>aTol) { - aTol=aTolE; - } - iC=CheckIntermediatePoint(aPBNew, aE, aTol); - if (!iC) { - return !bFlag; - } - } - return bFlag; -} - -//======================================================================= -// function: CheckIntermediatePoint -// purpose: -//======================================================================= -Standard_Integer NMTTools_PaveFiller::CheckIntermediatePoint(const BOPTools_PaveBlock& aPB, - const BOPTools_PaveBlock& aPBR, - const Standard_Real aTolC) -{ - Standard_Integer iVM, nE2; - // - nE2=aPBR.Edge(); - const TopoDS_Edge aE2=TopoDS::Edge(myDS->Shape(nE2));//mpv - iVM=CheckIntermediatePoint(aPB, aE2, aTolC); - // - return iVM; -} - -//======================================================================= -// function: CheckIntermediatePoint -// purpose: -//======================================================================= -Standard_Integer NMTTools_PaveFiller::CheckIntermediatePoint(const BOPTools_PaveBlock& aPB, - const TopoDS_Edge& aE2, - const Standard_Real aTolC) -{ - Standard_Real aT11, aT12, aTM, aTmp; - Standard_Integer iVM; - gp_Pnt aPM; - BRep_Builder aBB; - TopoDS_Vertex aVM; - // - // Vertex - const BOPTools_Pave& aPave11=aPB.Pave1(); - aT11=aPave11.Param(); - // - const BOPTools_Pave& aPave12=aPB.Pave2(); - aT12=aPave12.Param(); - // - aTM=IntTools_Tools::IntermediatePoint (aT11, aT12); - // - const IntTools_Curve& aIC=aPB.Curve(); - aIC.D0(aTM, aPM); - // - aBB.MakeVertex (aVM, aPM, aTolC); - // - iVM=myContext->ComputeVE(aVM, aE2, aTmp); - // - return iVM; -} - -//======================================================================= -// function: PutBoundPaveOnCurve -// purpose: -//======================================================================= -void NMTTools_PaveFiller::PutBoundPaveOnCurve(BOPTools_Curve& aBC, - BOPTools_SSInterference& aFFi) -{ - Standard_Boolean bHasBounds, bVF; - Standard_Integer nF1, nF2; - Standard_Real aT1, aT2, aTolR3D; - gp_Pnt aP1, aP2; - // - const IntTools_Curve& aIC=aBC.Curve(); - bHasBounds=aIC.HasBounds (); - if (!bHasBounds){ - return; - } - // - // Bounds - aIC.Bounds (aT1, aT2, aP1, aP2); - // - // Faces - aFFi.Indices(nF1, nF2); - aTolR3D=aFFi.TolR3D(); - // - const TopoDS_Face aF1=TopoDS::Face(myDS->GetShape(nF1));//mpv - const TopoDS_Face aF2=TopoDS::Face(myDS->GetShape(nF2));//mpv - // - bVF=myContext->IsValidPointForFaces (aP1, aF1, aF2, aTolR3D); - if (bVF) { - PutBoundPaveOnCurve (aP1, aT1, aBC, aFFi); - } - // - bVF=myContext->IsValidPointForFaces (aP2, aF1, aF2, aTolR3D); - if (bVF) { - PutBoundPaveOnCurve (aP2, aT2, aBC, aFFi); - } -} - -//======================================================================= -// function: PutBoundPaveOnCurve -// purpose: -//======================================================================= -void NMTTools_PaveFiller::PutBoundPaveOnCurve(const gp_Pnt& aP, - const Standard_Real aT, - BOPTools_Curve& aBC, - BOPTools_SSInterference& aFFi) -{ - Standard_Boolean bFound1, bFound2; - Standard_Integer nV; - Standard_Real aTolV=aFFi.TolR3D(); - - BOPTools_Pave aPave1, aPave2, aPave; - BOPTools_PaveSet& aCPS=aBC.Set(); - BOPTools_PaveSet& aFFiPS=aFFi.NewPaveSet(); - const IntTools_Curve& aIC=aBC.Curve(); - // - bFound1=FindPave(aP, aTolV, aCPS , aPave1); - bFound2=FindPave(aP, aTolV, aFFiPS, aPave2); - // - if (!bFound1 && !bFound2) { - TopoDS_Vertex aNewVertex; - BOPTools_Tools::MakeNewVertex(aP, aTolV, aNewVertex); - // - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq); - nV=myDS->NumberOfInsertedShapes(); - aPave.SetIndex(nV); - aPave.SetParam(aT); - - aCPS.Append(aPave); - aFFiPS.Append(aPave); - // - // Append Techno Vertex to the Curve - TColStd_ListOfInteger& aTVs=aBC.TechnoVertices(); - aTVs.Append(nV); - } - if (bFound1 && !bFound2) { - nV=aPave1.Index(); - aPave.SetIndex(nV); - aPave.SetParam(aT); - aFFiPS.Append(aPave); - // - const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));//mpv - BOPTools_Tools::UpdateVertex (aIC, aT, aV); - } - - if (!bFound1 && bFound2) { - nV=aPave2.Index(); - aPave.SetIndex(nV); - aPave.SetParam(aT); - aCPS.Append(aPave); - // - const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));//mpv - BOPTools_Tools::UpdateVertex (aIC, aT, aV); - } -} - -//======================================================================= -// function: FindPave -// purpose: -//======================================================================= -Standard_Boolean NMTTools_PaveFiller::FindPave(const gp_Pnt& aP, - const Standard_Real aTolPV, - const BOPTools_PaveSet& aPS, - BOPTools_Pave& aPave) -{ - Standard_Integer nV; - Standard_Boolean bIsVertex=Standard_False; - - const BOPTools_ListOfPave& aLP=aPS.Set(); - BOPTools_ListIteratorOfListOfPave anIt(aLP); - for (; anIt.More(); anIt.Next()) { - const BOPTools_Pave& aPC=anIt.Value(); - nV=aPC.Index(); - const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));//mpv - bIsVertex=IntTools_Tools::IsVertex (aP, aTolPV, aV); - if (bIsVertex) { - aPave=aPC; - return bIsVertex; - } - } - return bIsVertex; -} - -//======================================================================= -// function: PrepareSetForFace -// purpose: -//======================================================================= -void NMTTools_PaveFiller::PrepareSetForFace(const Standard_Integer ,//nF1, - const Standard_Integer ,//nF2, - const BOPTools_ListOfPaveBlock& aLPBC, - BOPTools_PaveSet& aPSF) -{ - Standard_Integer nV1, nV2; - TColStd_MapOfInteger aMap; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - anIt.Initialize(aLPBC); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - if (!aMap.Contains(nV1)) { - aMap.Add(nV1); - aPSF.Append(aPave1); - } - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - if (!aMap.Contains(nV2)) { - aMap.Add(nV2); - aPSF.Append(aPave2); - } - } -} - -//======================================================================= -// function: CheckCoincidence -// purpose: -//======================================================================= -Standard_Boolean NMTTools_PaveFiller::CheckCoincidence(const BOPTools_PaveBlock& aPBNew, - const BOPTools_ListOfPaveBlock& aLPBFF) -{ - Standard_Boolean bRet; - Standard_Real aTE; - Standard_Integer nV11, nV12, nV21, nV22, iVV, iVE, nE2; - Standard_Integer iV, iCount, iCountExt; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // V11 - const BOPTools_Pave& aPave11=aPBNew.Pave1(); - nV11=aPave11.Index(); - const TopoDS_Vertex& aV11=TopoDS::Vertex(myDS->Shape(nV11)); - - // V12 - const BOPTools_Pave& aPave12=aPBNew.Pave2(); - nV12=aPave12.Index(); - const TopoDS_Vertex& aV12=TopoDS::Vertex(myDS->Shape(nV12)); - // - iCountExt=1; - iCount=0; - anIt.Initialize(aLPBFF); - for (; anIt.More(); anIt.Next()) { - iCount=0; - // - const BOPTools_PaveBlock& aPBR=anIt.Value(); - // V21 - const BOPTools_Pave& aPave21=aPBR.Pave1(); - nV21=aPave21.Index(); - - // V22 - const BOPTools_Pave& aPave22=aPBR.Pave2(); - nV22=aPave22.Index(); - // - if (nV11==nV21 || nV11==nV22 || nV12==nV21 || nV12==nV22) { - continue; - } - // - // E2 - nE2=aPBR.Edge(); - // - const TopoDS_Vertex& aV21=TopoDS::Vertex(myDS->Shape(nV21)); - const TopoDS_Vertex& aV22=TopoDS::Vertex(myDS->Shape(nV22)); - const TopoDS_Edge& aE2=TopoDS::Edge(myDS->Shape(nE2)); - // - // VV - iV=0; - iVV=IntTools_Tools::ComputeVV (aV11, aV21); - if (!iVV) { - iCount++; - iV++; - if (iCount>iCountExt) { - break; - } - } - // - iVV=IntTools_Tools::ComputeVV (aV11, aV22); - if (!iVV) { - iCount++; - iV++; - if (iCount>iCountExt) { - break; - } - } - // VE - if (!iV) { - iVE=myContext->ComputeVE (aV11, aE2, aTE); - if (!iVE) { - iCount++; - if (iCount>iCountExt) { - break; - } - } - } - // VV - iV=0; - iVV=IntTools_Tools::ComputeVV (aV12, aV21); - if (!iVV) { - iCount++; - iV++; - if (iCount>iCountExt) { - break; - } - } - // - iVV=IntTools_Tools::ComputeVV (aV12, aV22); - if (!iVV) { - iCount++; - iV++; - if (iCount>iCountExt) { - break; - } - } - // VE - if (!iV) { - iVE=myContext->ComputeVE (aV12, aE2, aTE); - if (!iVE) { - iCount++; - if (iCount>iCountExt) { - break; - } - } - } - } // next aPBR - bRet=(Standard_Boolean)(iCount>iCountExt); - return bRet; -} - -//======================================================================= -//function : IsMicroEdge -//purpose : -//======================================================================= -Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE, - const Handle(IntTools_Context)& aCtx) -{ - Standard_Boolean bRet; - Standard_Integer iErr; - Standard_Real aT1, aT2, aTmp; - Handle(Geom_Curve) aC3D; - TopoDS_Vertex aV1, aV2; - IntTools_Range aR; - // - bRet=(BRep_Tool::Degenerated(aE) || - !BRep_Tool::IsGeometric(aE)); - if (bRet) { - return bRet; - } - // - aC3D=BRep_Tool::Curve(aE, aT1, aT2); - TopExp::Vertices(aE, aV1, aV2); - aT1=BRep_Tool::Parameter(aV1, aE); - aT2=BRep_Tool::Parameter(aV2, aE); - if (aT2Shape(nV)); - // - Bnd_Box aBBV; - BRepBndLib::Add(aV, aBBV); - if (aBBC.IsOut(aBBV)){ - continue; - } - // - bIsVertexOnLine=myContext->IsVertexOnLine(aV, aC, aTolR3D, aT); - // - // - if (bIsVertexOnLine) { - BOPTools_Pave aPaveNew(nV, aT, BooleanOperations_SurfaceSurface); - BOPTools_PaveSet& aPS=aBC.Set(); - aPS.Append(aPaveNew); - //<-B - } - } -} -// -//======================================================================= -//function : FillFaceInfo -//purpose : -//======================================================================= -void NMTTools_PaveFiller::FillFaceInfo() -{ - Standard_Integer i, aNbS, aNbFFs, nF, aNbVFs, aNbEFs, j, n1, n2, nX, aNbF; - TopAbs_ShapeEnum aType; - TopoDS_Shape aS; - TColStd_ListIteratorOfListOfInteger aItF; - BOPTools_ListIteratorOfListOfPaveBlock anItPB; - NMTTools_DataMapIteratorOfDataMapOfIntegerFaceInfo aItMFI; - NMTTools_ListIteratorOfListOfCommonBlock aItCB; - // - myFaceInfo.Clear(); - // - BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences(); - BOPTools_CArray1OfVSInterference& aVFs=myIP->VSInterferences(); - BOPTools_CArray1OfESInterference& aEFs=myIP->ESInterferences(); - // - aNbFFs=aFFs.Extent(); - if (!aNbFFs) { - return; - } - // - // 0. - for (i=1; i<=aNbFFs; ++i) { - NMTTools_FaceInfo aFI; - // - BOPTools_SSInterference& aFFi=aFFs(i); - aFFi.Indices(n1, n2); - myFaceInfo.Bind(n1, aFI); - myFaceInfo.Bind(n2, aFI); - } - // - // 1. - aNbS=myDS->NumberOfShapesOfTheObject(); - for (i=1; i<=aNbS; ++i) { - aS=myDS->Shape(i); - aType=aS.ShapeType(); - if (aType==TopAbs_EDGE) { - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(i)); - aItCB.Initialize(aLCB); - for (; aItCB.More(); aItCB.Next()) { - const NMTTools_CommonBlock& aCB=aItCB.Value(); - const BOPTools_PaveBlock &aPB1=aCB.PaveBlock1(); - const TColStd_ListOfInteger& aLF=aCB.Faces(); - aNbF=aLF.Extent(); - if (!aNbF) { - continue; - } - // - aItF.Initialize(aLF); - for (; aItF.More(); aItF.Next()) { - nF=aItF.Value(); - if (!myFaceInfo.IsBound(nF)) { - continue; - } - // - NMTTools_FaceInfo& aFI=myFaceInfo.ChangeFind(nF); - aFI.ChangePaveBlocksIn().Add(aPB1); - // - n1=aPB1.Pave1().Index(); - n2=aPB1.Pave2().Index(); - aFI.ChangeVerticesIn().Add(n1); - aFI.ChangeVerticesIn().Add(n2); - } - } - }// if (aType==TopAbs_EDGE) { - else if (aType==TopAbs_FACE) { - if (!myFaceInfo.IsBound(i)) { - continue; - } - // - BOPTools_ListOfPaveBlock aLPBOn; - // - nF=i; - NMTTools_FaceInfo& aFI=myFaceInfo.ChangeFind(nF); - // - RealSplitsFace(nF, aLPBOn); - // - anItPB.Initialize(aLPBOn); - for (; anItPB.More(); anItPB.Next()) { - const BOPTools_PaveBlock &aPB=anItPB.Value(); - aFI.ChangePaveBlocksOn().Add(aPB); - // - n1=aPB.Pave1().Index(); - n2=aPB.Pave2().Index(); - aFI.ChangeVerticesOn().Add(n1); - aFI.ChangeVerticesOn().Add(n2); - } - // - }// else if (aType==TopAbs_FACE) { - }// for (i=1; i<=aNbS; ++i) { - // - // 2. - aItMFI.Initialize(myFaceInfo); - for (; aItMFI.More(); aItMFI.Next()) { - nF=aItMFI.Key(); - NMTTools_FaceInfo& aFI=*((NMTTools_FaceInfo*)&aItMFI.Value()); - // - aFI.SetIndex(nF); - // - // - // 2.1 aVFs - aNbVFs=aVFs.Extent(); - for (j=1; j<=aNbVFs; ++j) { - BOPTools_VSInterference& aVFj=aVFs(j); - aVFj.Indices(n1, n2); - if (nF==n1) { - aFI.ChangeVerticesIn().Add(n2); - } - else if (nF==n2){ - aFI.ChangeVerticesIn().Add(n1); - } - }// for (j=1; j<=aNbVFs; ++j) { - // - // 2.2 aEFs - aNbEFs=aEFs.Extent(); - for (j=1; j<=aNbEFs; ++j) { - BOPTools_ESInterference& aEFj=aEFs(j); - aEFj.Indices(n1, n2); - if (!(nF==n1 || nF==n2)) { - continue; - } - // - nX=aEFj.NewShape(); - if (nX<1) { - continue; - } - // - aS=myDS->Shape(nX); - aType=aS.ShapeType(); - if (aType!=TopAbs_VERTEX) { - continue; - } - // - aFI.ChangeVerticesIn().Add(nX); - }// for (j=1; j<=aNbEFs; ++j) { - }// for (; aItMFI.More(); aItMFI.Next()) { -} - - -#include -#include -#include -#include -//======================================================================= -//function : CorrectTolR3D -//purpose : Attempt to correct the value of tolerance aTolR3D for -// the intersection curve in order to -// compel it to pass through the sticks. -// Prerequisites: -// 2. The are based on B-Spline surfaces; -// 1. There is at least the one intersection curve; -// 2. The faces have stick vertices to catch the curve; -// 3. The intersection angle is rather small (0.7-7 deg) -// -//======================================================================= -void NMTTools_PaveFiller::CorrectTolR3D(const BOPTools_SSInterference& aFF, - const TColStd_MapOfInteger& aMVStick, - Standard_Real& aTolR3D) - -{ - Standard_Boolean bHasBounds; - Standard_Integer i, nF[2], nV, aNbCurves; - Standard_Real aT1, aT2, aU, aV, aT, aA, aTolV, aTolVmax; - Standard_Real aTolR, aTolTresh, aAmin, aAmax; - TColStd_MapIteratorOfMapOfInteger aIt; - gp_Pnt aP, aP1, aP2; - gp_Dir aDN[2]; - gp_Vec aVT; - Handle(Geom_Surface) aS[2]; - Handle(Geom_Curve) aC3D; - GeomAdaptor_Surface aGAS; - GeomAbs_SurfaceType aType; - TopoDS_Face aF[2]; - // - aTolTresh=0.0005; - aAmin=0.012;// 0.7-7 deg - aAmax=0.12; - // - if (!aMVStick.Extent()) { - return; - } - // - BOPTools_SSInterference& aFFi=*((BOPTools_SSInterference*)&aFF); - BOPTools_SequenceOfCurves& aSCvs=aFFi.Curves(); - aNbCurves=aSCvs.Length(); - if (aNbCurves!=1){ - return; - } - // - aFFi.Indices(nF[0], nF[1]); - for (i=0; i<2; ++i) { - aF[i]=*((TopoDS_Face*)(&myDS->Shape(nF[i]))); - aS[i]=BRep_Tool::Surface(aF[i]); - aGAS.Load(aS[i]); - aType=aGAS.GetType(); - if (aType!=GeomAbs_BSplineSurface) { - return; - } - } - // - BOPTools_Curve& aBC=aSCvs(1); - const IntTools_Curve& aIC=aBC.Curve(); - bHasBounds=aIC.HasBounds(); - if (!bHasBounds){ - return; - } - // - aIC.Bounds (aT1, aT2, aP1, aP2); - aT=IntTools_Tools::IntermediatePoint(aT1, aT2); - aC3D=aIC.Curve(); - aC3D->D0(aT, aP); - // - for (i=0; i<2; ++i) { - GeomAPI_ProjectPointOnSurf& aPPS=myContext->ProjPS(aF[i]); - aPPS.Perform(aP); - aPPS.LowerDistanceParameters(aU, aV); - BOPTools_Tools3D::GetNormalToSurface(aS[i], aU, aV, aDN[i]); - } - // - aA=aDN[0].Angle(aDN[1]); - aA=fabs(aA); - if (aA > 0.5*M_PI) { - aA = M_PI - aA; - } - // - if (aAaAmax) { - return; - } - // - aTolVmax=-1.; - aIt.Initialize(aMVStick); - for (; aIt.More(); aIt.Next()) { - nV=aIt.Key(); - const TopoDS_Vertex& aV=*((TopoDS_Vertex*)(&myDS->Shape(nV))); - aTolV=BRep_Tool::Tolerance(aV); - if (aTolV>aTolVmax) { - aTolVmax=aTolV; - } - } - // - - aTolR=aTolVmax/aA; - if (aTolR 0x06050100 // For OCCT6.5.2 and higher -//======================================================================= -// function: PutClosingPaveOnCurve -// purpose: -//======================================================================= -void NMTTools_PaveFiller::PutClosingPaveOnCurve(BOPTools_Curve& aBC, - BOPTools_SSInterference& aFFi) -{ - Standard_Boolean bIsClosed, bHasBounds, bAdded; - Standard_Integer nVC, j; - Standard_Real aT[2], aTolR3D, aTC, dT, aTx; - gp_Pnt aP[2] ; - BOPTools_Pave aPVx; - BOPTools_ListIteratorOfListOfPave aItLP; - // - const IntTools_Curve& aIC=aBC.Curve(); - const Handle (Geom_Curve)& aC3D=aIC.Curve(); - if(aC3D.IsNull()) { - return; - } - // - bIsClosed=IntTools_Tools::IsClosed(aC3D); - if (!bIsClosed) { - return; - } - // - bHasBounds=aIC.HasBounds (); - if (!bHasBounds){ - return; - } - // - bAdded=Standard_False; - dT=Precision::PConfusion(); - aTolR3D=aFFi.TolR3D(); - aIC.Bounds (aT[0], aT[1], aP[0], aP[1]); - // - BOPTools_PaveSet& aFFiPS=aFFi.NewPaveSet(); - BOPTools_PaveSet& aCPS=aBC.Set(); - // - const BOPTools_ListOfPave& aLP=aCPS.Set(); - aItLP.Initialize(aLP); - for (; aItLP.More() && !bAdded; aItLP.Next()) { - const BOPTools_Pave& aPC=aItLP.Value(); - nVC=aPC.Index(); - const TopoDS_Vertex aVC=TopoDS::Vertex(myDS->Shape(nVC)); - aTC=aPC.Param(); - // - for (j=0; j<2; ++j) { - if (fabs(aTC-aT[j]) < dT) { - aTx=(!j) ? aT[1] : aT[0]; - aPVx.SetIndex(nVC); - aPVx.SetParam(aTx); - // - aCPS.Append(aPVx); - aFFiPS.Append(aPVx); - // - bAdded=Standard_True; - break; - } - } - } -} -#endif // OCC_VERSION_LARGE > 0x06050100 // For OCCT6.5.2 and higher -//modified by NIZNHY-PKV Wed Sep 14 13:21:17 2011t diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller_7.cxx b/src/NMTTools_NEW/NMTTools_PaveFiller_7.cxx deleted file mode 100644 index 8386a9fd6..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller_7.cxx +++ /dev/null @@ -1,817 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -// File: NMTTools_PaveFiller_7.cxx -// Author: Peter KURNEV - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -// -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - - -//======================================================================= -// function: MakeSplitEdges -// purpose: -//======================================================================= -void NMTTools_PaveFiller::MakeSplitEdges() -{ - myIsDone=Standard_False; - // - Standard_Boolean bIsNewVertex1, bIsNewVertex2; - Standard_Integer i, aNbS, nV1, nV2, aNbPaveBlocks, aNewShapeIndex; - Standard_Real t1, t2; - TopAbs_Orientation anOri; - TopoDS_Edge aE, aESplit; - TopoDS_Vertex aV1, aV2; - // - aNbS=myDS->NumberOfShapesOfTheObject(); - for (i=1; i<=aNbS; ++i) { - if (myDS->GetShapeType(i) != TopAbs_EDGE) - continue; - // - // Original Edge - aE=TopoDS::Edge(myDS->Shape(i)); - if (BRep_Tool::Degenerated(aE)){ - continue; - } - // - anOri=aE.Orientation(); - aE.Orientation(TopAbs_FORWARD); - // - // Making Split Edges - // - // Split Set for the Original Edge i - BOPTools_ListOfPaveBlock& aSplitEdges=mySplitShapesPool(myDS->RefEdge(i)); - BOPTools_ListIteratorOfListOfPaveBlock aPBIt(aSplitEdges); - // - aNbPaveBlocks=aSplitEdges.Extent(); - - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPB=aPBIt.Value(); - // aPave1 - const BOPTools_Pave& aPave1=aPB.Pave1(); - nV1=aPave1.Index(); - t1=aPave1.Param(); - aV1=TopoDS::Vertex(myDS->GetShape(nV1)); - aV1.Orientation(TopAbs_FORWARD); - // aPave2 - const BOPTools_Pave& aPave2=aPB.Pave2(); - nV2=aPave2.Index(); - t2=aPave2.Param(); - aV2=TopoDS::Vertex(myDS->GetShape(nV2)); - aV2.Orientation(TopAbs_REVERSED); - //xx - if (aNbPaveBlocks==1) { - bIsNewVertex1=myDS->IsNewShape (nV1); - bIsNewVertex2=myDS->IsNewShape (nV2); - if (!bIsNewVertex1 && !bIsNewVertex2) { - aPB.SetEdge(i); - continue; - } - } - //xx - BOPTools_Tools::MakeSplitEdge(aE, aV1, t1, aV2, t2, aESplit); - // - // Add Split Part of the Original Edge to the DS - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - - anASSeq.SetNewSuccessor(nV1); - anASSeq.SetNewOrientation(aV1.Orientation()); - - anASSeq.SetNewSuccessor(nV2); - anASSeq.SetNewOrientation(aV2.Orientation()); - // - if (anOri==TopAbs_INTERNAL) { - anASSeq.SetNewAncestor(i); - aESplit.Orientation(anOri); - } - // - myDS->InsertShapeAndAncestorsSuccessors(aESplit, anASSeq); - aNewShapeIndex=myDS->NumberOfInsertedShapes(); - myDS->SetState(aNewShapeIndex, BooleanOperations_UNKNOWN); - // - // Fill Split Set for the Original Edge - aPB.SetEdge(aNewShapeIndex); - // - } - } - myIsDone=Standard_True; -} -//======================================================================= -// function: UpdateCommonBlocks -// purpose: -//======================================================================= -void NMTTools_PaveFiller::UpdateCommonBlocks(const Standard_Integer) -{ - Standard_Integer nE, aNbS, nEx, nEMax, j, aNbPoints, aNbLCB, nF; - Standard_Real aTolEx, aTolExMax, aTSRMax[2], aTx[2], aTmp; - TColStd_ListIteratorOfListOfInteger aItLI; - gp_Pnt aPMax[2]; - TopoDS_Edge aEMax; - BOPTools_ListIteratorOfListOfPaveBlock aItLPB, aItLPBS; - NMTTools_ListIteratorOfListOfCommonBlock aItLCB; - NMTTools_MapOfPaveBlock aMPB; - // - myIsDone=Standard_False; - // - aNbS=myDS->NumberOfShapesOfTheObject(); - for (nE=1; nE<=aNbS; ++nE) { - if (myDS->GetShapeType(nE)!=TopAbs_EDGE){ - continue; - } - // - const TopoDS_Edge& aE=*((TopoDS_Edge*)&myDS->Shape(nE)); - if (BRep_Tool::Degenerated(aE)){ - continue; - } - // - NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE)); - //modified by NIZNHY-PKV Thu Jan 19 09:03:19 2012f - aNbLCB=aLCB.Extent(); - if (!aNbLCB) { - continue; - } - // 0 - NMTTools_ListOfCommonBlock aLCBx; - // - aItLCB.Initialize(aLCB); - for (; aItLCB.More(); aItLCB.Next()) { - NMTTools_CommonBlock aCBx; - // - NMTTools_CommonBlock& aCB=aItLCB.ChangeValue(); - const BOPTools_ListOfPaveBlock &aLPB=aCB.PaveBlocks(); - aItLPB.Initialize(aLPB); - for (; aItLPB.More(); aItLPB.Next()) { - const BOPTools_PaveBlock& aPBx=aItLPB.Value(); - nEx=aPBx.OriginalEdge(); - BOPTools_ListOfPaveBlock& aLPBS=mySplitShapesPool(myDS->RefEdge(nEx)); - aItLPBS.Initialize(aLPBS); - for (; aItLPBS.More(); aItLPBS.Next()) { - const BOPTools_PaveBlock& aPBSx=aItLPBS.Value(); - if (aPBSx.IsEqual(aPBx)) { - aCBx.AddPaveBlock(aPBSx); - break; - } - }// for (; aItLPBS.More(); aItLPBS.Next()) { - }// for (; aItLPB.More(); aItLPB.Next()) { - // - const TColStd_ListOfInteger& aLI=aCB.Faces(); - aItLI.Initialize(aLI); - for (; aItLI.More(); aItLI.Next()) { - nF=aItLI.Value(); - aCBx.AddFace(nF); - } - // - aLCBx.Append(aCBx); - }//for (; aItLCB.More(); aItLCB.Next()) { - // - aLCB.Clear(); - // - aItLCB.Initialize(aLCBx); - for (; aItLCB.More(); aItLCB.Next()) { - NMTTools_CommonBlock& aCBx=aItLCB.ChangeValue(); - aLCB.Append(aCBx); - } - //modified by NIZNHY-PKV Thu Jan 19 09:03:30 2012t - // 1 - aItLCB.Initialize(aLCB); - for (; aItLCB.More(); aItLCB.Next()) { - NMTTools_CommonBlock& aCB=aItLCB.ChangeValue(); - // - BOPTools_PaveBlock aPBMax; - aTolExMax=-1.; - const BOPTools_ListOfPaveBlock &aLPB=aCB.PaveBlocks(); - aItLPB.Initialize(aLPB); - for (; aItLPB.More(); aItLPB.Next()) { - const BOPTools_PaveBlock& aPBx=aItLPB.Value(); - nEx=aPBx.OriginalEdge(); - const TopoDS_Edge& aEx=*((TopoDS_Edge*)&myDS->Shape(nEx)); - aTolEx=BRep_Tool::Tolerance(aEx); - if (aTolEx>aTolExMax) { - aTolExMax=aTolEx; - aEMax=aEx; - aPBMax=aPBx; - } - } - // - // 2 - if (aMPB.Contains(aPBMax)) { - continue; - } - aMPB.Add(aPBMax); - // - nEMax=aPBMax.OriginalEdge(); - const IntTools_ShrunkRange& aISRMax=aPBMax.ShrunkRange(); - const IntTools_Range& aSRMax=aISRMax.ShrunkRange(); - const Bnd_Box& aBoxMax=aISRMax.BndBox(); - aSRMax.Range(aTSRMax[0], aTSRMax[1]); - for (j=0; j<2; ++j) { - BOPTools_Tools::PointOnEdge(aEMax, aTSRMax[j], aPMax[j]); - } - // - // 3 - aItLPB.Initialize(aLPB); - for (; aItLPB.More(); aItLPB.Next()) { - const BOPTools_PaveBlock& aPBx=aItLPB.Value(); - nEx=aPBx.OriginalEdge(); - if (nEx==nEMax) { - continue; - } - // - const TopoDS_Edge& aEx=*((TopoDS_Edge*)&myDS->Shape(nEx)); - GeomAPI_ProjectPointOnCurve& aPPCx=myContext->ProjPC(aEx); - // - for (j=0; j<2; ++j) { - aPPCx.Perform(aPMax[j]); - aNbPoints=aPPCx.NbPoints(); - if (!aNbPoints) { - break; - } - aTx[j]=aPPCx.LowerDistanceParameter(); - } - if (!aNbPoints) { - // correction the range is impossible due to - // a projection problem - continue; - } - // - if (aTx[0]>aTx[1]){ - aTmp=aTx[0]; - aTx[0]=aTx[1]; - aTx[1]=aTmp; - } - // - // 4 Correction - // 4.1 aPBx - { - const IntTools_ShrunkRange& aISRx=aPBx.ShrunkRange(); - IntTools_Range *pSRx=(IntTools_Range *)(&aISRx.ShrunkRange()); - Bnd_Box *pBoxx=(Bnd_Box *)(&aISRx.BndBox()); - // - pSRx->SetFirst(aTx[0]); - pSRx->SetLast(aTx[1]); - *pBoxx=aBoxMax; - } - // - // 4.2 aPBSx - BOPTools_ListOfPaveBlock& aLPBSx=mySplitShapesPool(myDS->RefEdge(nEx)); - aItLPBS.Initialize(aLPBSx); - for (; aItLPBS.More(); aItLPBS.Next()) { - const BOPTools_PaveBlock& aPBSx=aItLPBS.Value(); - if (!aPBSx.IsEqual(aPBx)) { - continue; - } - // - const IntTools_ShrunkRange& aISRx=aPBSx.ShrunkRange(); - IntTools_Range *pSRx=(IntTools_Range *)(&aISRx.ShrunkRange()); - Bnd_Box *pBoxx=(Bnd_Box *)(&aISRx.BndBox()); - // - pSRx->SetFirst(aTx[0]); - pSRx->SetLast(aTx[1]); - *pBoxx=aBoxMax; - } - // - // - }//for (; aItLPB.More(); aItLPB.Next()) { - }//for (; aItLCB.More(); aItLCB.Next()) { - }//for (nE=1; nE<=aNbS; ++nE) { -} -//======================================================================= -// function: UpdateCommonBlocks -// purpose: -//======================================================================= -void NMTTools_PaveFiller::UpdateCommonBlocks() -{ - myIsDone=Standard_False; - // - Standard_Integer nE, aNbS, nSp, nEx, nSpx; - NMTTools_ListIteratorOfListOfCommonBlock aCBIt; - BOPTools_ListIteratorOfListOfPaveBlock aPBIt; - // - aNbS=myDS->NumberOfShapesOfTheObject(); - // - for (nE=1; nE<=aNbS; ++nE) { - if (myDS->GetShapeType(nE)!=TopAbs_EDGE){ - continue; - } - if (BRep_Tool::Degenerated(TopoDS::Edge(myDS->Shape(nE)))){ - continue; - } - // - NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE)); - /*BOPTools_ListOfPaveBlock& aLPB=*/mySplitShapesPool (myDS->RefEdge(nE)); - // - aCBIt.Initialize(aLCB); - for (; aCBIt.More(); aCBIt.Next()) { - NMTTools_CommonBlock& aCB=aCBIt.ChangeValue(); - // - // Among all PBs of aCB the first PB will be one - // that have max tolerance value - { - Standard_Real aTolEx, aTolExMax; - BOPTools_ListOfPaveBlock *pLPB, aLPBx; - // - aTolExMax=-1.; - pLPB=(BOPTools_ListOfPaveBlock *)&aCB.PaveBlocks(); - aPBIt.Initialize(*pLPB); - for (; aPBIt.More(); aPBIt.Next()) { - const BOPTools_PaveBlock& aPBx=aPBIt.Value(); - nEx=aPBx.OriginalEdge(); - const TopoDS_Edge& aEx=TopoDS::Edge(myDS->Shape(nEx)); - aTolEx=BRep_Tool::Tolerance(aEx); - if (aTolEx>aTolExMax) { - aTolExMax=aTolEx; - aLPBx.Prepend(aPBx); - } - else{ - aLPBx.Append(aPBx); - } - } - // - pLPB->Clear(); - *pLPB=aLPBx; - } - // - BOPTools_PaveBlock& aPB=aCB.PaveBlock1(nE); - nSp=SplitIndex(aPB); - aPB.SetEdge(nSp); - // - const BOPTools_ListOfPaveBlock& aCBLPB=aCB.PaveBlocks(); - aPBIt.Initialize(aCBLPB); - for (; aPBIt.More(); aPBIt.Next()) { - BOPTools_PaveBlock& aPBx=aPBIt.Value(); - nEx=aPBx.OriginalEdge(); - if (nEx==nE) { - continue; - } - // - nSpx=SplitIndex(aPBx); - aPBx.SetEdge(nSpx); - } - // - } - } -} -//======================================================================= -// function: SplitIndex -// purpose: -//======================================================================= -Standard_Integer NMTTools_PaveFiller::SplitIndex - (const BOPTools_PaveBlock& aPBx) const -{ - Standard_Integer anOriginalEdge, anEdgeIndex=0; - - anOriginalEdge=aPBx.OriginalEdge(); - - const BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(anOriginalEdge)); - // - BOPTools_ListIteratorOfListOfPaveBlock anIt(aLPB); - for (; anIt.More(); anIt.Next()) { - BOPTools_PaveBlock& aPB=anIt.Value(); - if (aPB.IsEqual(aPBx)) { - anEdgeIndex=aPB.Edge(); - return anEdgeIndex; - } - } - return anEdgeIndex; -} - -//======================================================================= -// function: UpdatePaveBlocks -// purpose: -//======================================================================= -void NMTTools_PaveFiller::UpdatePaveBlocks() -{ - myIsDone=Standard_False; - // - Standard_Integer i, aNbFFs, nF1, nF2, aNbF, nF, iRankF, nE, nV1, nV2, aNbPB; - Standard_Real aT1, aT2; - TColStd_IndexedMapOfInteger aMF, aME; - TopExp_Explorer aExp; - TopoDS_Vertex aV1, aV2; - TopoDS_Edge aE; - BOPTools_Pave aPave1, aPave2; - BOPTools_PaveBlock aPB; - // - BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences(); - // - aNbFFs=aFFs.Extent(); - for (i=1; i<=aNbFFs; ++i) { - BOPTools_SSInterference& aFFi=aFFs(i); - aFFi.Indices(nF1, nF2); - aMF.Add(nF1); - aMF.Add(nF2); - } - // - aNbF=aMF.Extent(); - for(i=1; i<=aNbF; ++i) { - nF=aMF(i); - iRankF=myDS->Rank(nF); - const TopoDS_Shape aF=myDS->Shape(nF);//mpv - aExp.Init(aF, TopAbs_EDGE); - for(; aExp.More(); aExp.Next()) { - aE=TopoDS::Edge(aExp.Current()); - // - if (BRep_Tool::Degenerated(aE)) { - continue; - } - // - nE=myDS->ShapeIndex(aE, iRankF); - // - if (aME.Contains(nE)) { - continue; - } - aME.Add(nE); - // - BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - aNbPB=aLPB.Extent(); - if (aNbPB) { - continue; - } - TopExp::Vertices(aE, aV1, aV2); - // - nV1=myDS->ShapeIndex(aV1, iRankF); - aT1=BRep_Tool::Parameter(aV1, aE); - aPave1.SetIndex(nV1); - aPave1.SetParam(aT1); - // - nV2=myDS->ShapeIndex(aV2, iRankF); - aT2=BRep_Tool::Parameter(aV2, aE); - aPave2.SetIndex(nV2); - aPave2.SetParam(aT2); - // - aPB.SetEdge(nE); - aPB.SetOriginalEdge(nE); - aPB.SetPave1(aPave1); - aPB.SetPave2(aPave2); - // - aLPB.Append(aPB); - } - } -} - -//======================================================================= -// function: MakeAloneVertices -// purpose: -//======================================================================= -void NMTTools_PaveFiller::MakeAloneVertices() -{ - Standard_Integer i, aNbFFs, nF1, nF2, j, aNbPnts, nFx, aNbV; - Standard_Real aTolF1, aTolF2, aTolSum, aTolV; - TColStd_ListIteratorOfListOfInteger aIt; - TColStd_ListOfInteger aLI; - TopoDS_Vertex aV; - TopoDS_Compound aCompound; - BRep_Builder aBB; - TopTools_DataMapOfShapeListOfInteger aDMVFF, aDMVFF1; - TopTools_DataMapIteratorOfDataMapOfShapeListOfInteger aItDMVFF; - TopTools_DataMapOfShapeShape aDMVV; - TopTools_DataMapOfIntegerShape aDMIV; - TopTools_DataMapOfShapeInteger aDMVI; - TopTools_DataMapIteratorOfDataMapOfShapeInteger aItDMVI; - TopTools_DataMapIteratorOfDataMapOfIntegerShape aItDMIV; - // - aBB.MakeCompound(aCompound); - // - myAloneVertices.Clear(); - // - BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences(); - // - // 1. Collect alone vertices from FFs - aNbV=0; - aNbFFs=aFFs.Extent(); - for (i=1; i<=aNbFFs; ++i) { - BOPTools_SSInterference& aFFi=aFFs(i); - aFFi.Indices(nF1, nF2); - // - const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));//mpv - const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));//mpv - // - aTolF1=BRep_Tool::Tolerance(aF1); - aTolF2=BRep_Tool::Tolerance(aF2); - aTolSum=aTolF1+aTolF2; - // - aLI.Clear(); - aLI.Append(nF1); - aLI.Append(nF2); - // - const IntTools_SequenceOfPntOn2Faces& aSeqAlonePnts=aFFi.AlonePnts(); - aNbPnts=aSeqAlonePnts.Length(); - for (j=1; j<=aNbPnts; ++j) { - const gp_Pnt& aP=aSeqAlonePnts(j).P1().Pnt(); - BOPTools_Tools::MakeNewVertex(aP, aTolSum, aV); - aDMVFF.Bind(aV, aLI); - aBB.Add(aCompound, aV); - ++aNbV; - } - } - if (!aNbV) { - return; - } - // - // 2. Try to fuse alone vertices themselves; - FuseVertices(aCompound, aDMVV); - // - // if some are fused, replace them by new ones - aItDMVFF.Initialize(aDMVFF); - for (; aItDMVFF.More(); aItDMVFF.Next()) { - const TopoDS_Shape& aVx=aItDMVFF.Key(); - const TColStd_ListOfInteger& aLIx=aItDMVFF.Value(); - // - if (!aDMVV.IsBound(aVx)) { - aDMVFF1.Bind(aVx, aLIx); - } - else { - const TopoDS_Shape& aVy=aDMVV.Find(aVx); - - if (aDMVFF1.IsBound(aVy)) { - TColStd_ListOfInteger& aLIy=aDMVFF1.ChangeFind(aVy); - aIt.Initialize(aLIx); - for(; aIt.More(); aIt.Next()) { - nFx=aIt.Value(); - aLIy.Append(nFx); - } - } - else { - aDMVFF1.Bind(aVy, aLIx); - } - } - } - aDMVFF.Clear(); - // - // refine lists of faces in aDMVFF1; - aItDMVFF.Initialize(aDMVFF1); - for (; aItDMVFF.More(); aItDMVFF.Next()) { - TColStd_MapOfInteger aMIy; - TColStd_ListOfInteger aLIy; - // - const TopoDS_Shape& aVx=aItDMVFF.Key(); - TColStd_ListOfInteger& aLIx=aDMVFF1.ChangeFind(aVx); - aIt.Initialize(aLIx); - for(; aIt.More(); aIt.Next()) { - nFx=aIt.Value(); - if (aMIy.Add(nFx)) { - aLIy.Append(nFx); - } - } - aLIx.Clear(); - aLIx.Append(aLIy); - } - //================================== - // - // 3. Collect vertices from DS - Standard_Integer aNbS, nV, nVSD, aNbVDS, i1, i2, aNbVSD; - // - aNbS=myDS->NumberOfShapesOfTheObject(); - // old shapes - for (i=1; i<=aNbS; ++i) { - const TopoDS_Shape& aS=myDS->Shape(i); - if (aS.ShapeType() != TopAbs_VERTEX){ - continue; - } - // - nVSD=FindSDVertex(i); - nV=(nVSD) ? nVSD : i; - const TopoDS_Shape& aVx=myDS->Shape(nV); - if (!aDMVI.IsBound(aVx)) { - aDMVI.Bind(aVx, nV); - } - } - // new shapes - i1=myDS->NumberOfSourceShapes()+1; - i2=myDS->NumberOfInsertedShapes(); - for (i=i1; i<=i2; ++i) { - const TopoDS_Shape aS=myDS->Shape(i);//mpv - if (aS.ShapeType() != TopAbs_VERTEX){ - continue; - } - if (!aDMVI.IsBound(aS)) { - aDMVI.Bind(aS, i); - } - } - // - // 4. Initialize BoundSortBox on aDMVI - // - Handle(Bnd_HArray1OfBox) aHAB; - Bnd_BoundSortBox aBSB; - // - aNbVDS=aDMVI.Extent(); - aHAB=new Bnd_HArray1OfBox(1, aNbVDS); - // - aItDMVI.Initialize(aDMVI); - for (i=1; aItDMVI.More(); aItDMVI.Next(), ++i) { - Bnd_Box aBox; - // - nV=aItDMVI.Value(); - aV=TopoDS::Vertex(aItDMVI.Key()); - aTolV=BRep_Tool::Tolerance(aV); - aBox.SetGap(aTolV); - BRepBndLib::Add(aV, aBox); - aHAB->SetValue(i, aBox); - // - aDMIV.Bind(i, aV); - } - aBSB.Initialize(aHAB); - // - // 5. Compare - aItDMVFF.Initialize(aDMVFF1); - for (; aItDMVFF.More(); aItDMVFF.Next()) { - Bnd_Box aBoxV; - // - const TColStd_ListOfInteger& aLIFF=aItDMVFF.Value(); - aV=TopoDS::Vertex(aItDMVFF.Key()); - // - aTolV=BRep_Tool::Tolerance(aV); - aBoxV.SetGap(aTolV); - BRepBndLib::Add(aV, aBoxV); - // - const TColStd_ListOfInteger& aLIVSD=aBSB.Compare(aBoxV); - aNbVSD=aLIVSD.Extent(); - if (aNbVSD==0) { - // add new vertex in DS and update map myAloneVertices - BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq; - // - myDS->InsertShapeAndAncestorsSuccessors(aV, anASSeq); - nV=myDS->NumberOfInsertedShapes(); - // - aIt.Initialize(aLIFF); - for (; aIt.More(); aIt.Next()) { - nFx=aIt.Value(); - if (myAloneVertices.Contains(nFx)) { - TColStd_IndexedMapOfInteger& aMVx=myAloneVertices.ChangeFromKey(nFx); - aMVx.Add(nV); - } - else { - TColStd_IndexedMapOfInteger aMVx; - aMVx.Add(nV); - myAloneVertices.Add(nFx, aMVx); - } - } - } - } - // qqf - { - Standard_Integer aNbF, aNbAV, nF, k; - NMTTools_IndexedDataMapOfIndexedMapOfInteger aMAVF; - // - aNbF=myAloneVertices.Extent(); - if (aNbF<2) { - return; - } - // - // 1. fill map Alone Vertex/Face -> aMAVF - for (i=1; i<=aNbF; ++i) { - nF=myAloneVertices.FindKey(i); - const TColStd_IndexedMapOfInteger& aMAV=myAloneVertices(i); - aNbAV=aMAV.Extent(); - for(j=1; j<=aNbAV; ++j) { - nV=aMAV(j); - if (aMAVF.Contains(nV)) { - TColStd_IndexedMapOfInteger& aMF=aMAVF.ChangeFromKey(nV); - aMF.Add(nF); - } - else{ - TColStd_IndexedMapOfInteger aMF; - aMF.Add(nF); - aMAVF.Add(nV, aMF); - } - } - } - // - // 2 Obtain pairs of faces - aNbAV=aMAVF.Extent(); - for (i=1; i<=aNbAV; ++i) { - const TColStd_IndexedMapOfInteger& aMF=aMAVF(i); - aNbF=aMF.Extent(); - for(j=1; jAdd(nF1, nF2, Standard_True, NMTDS_TI_FF); - } - } - } - } - // qqt -} -//======================================================================= -// function: AloneVertices -// purpose: -//======================================================================= -const NMTTools_IndexedDataMapOfIndexedMapOfInteger& - NMTTools_PaveFiller::AloneVertices()const -{ - return myAloneVertices; -} -//======================================================================= -// function: FuseVertices -// purpose: -//======================================================================= -void NMTTools_PaveFiller::FuseVertices - (const TopoDS_Shape& aCompound, - TopTools_DataMapOfShapeShape& aDMVV)const -{ - Standard_Integer i, aNbVV, n1, n2, nX; - NMTTools_PaveFiller tPF; - // - tPF.SetCompositeShape(aCompound); - // - tPF.Init(); - // - tPF.PerformVV(); - //tPF.PerformNewVertices(); //qq - // - NMTDS_ShapesDataStructure& tDS=*(tPF.DS()); - NMTDS_InterfPool& tInterfPool=*(tPF.IP()); - BOPTools_CArray1OfVVInterference& aVVt=tInterfPool.VVInterferences(); - // - aNbVV=aVVt.Extent(); - for (i=1; i<=aNbVV; ++i) { - const BOPTools_VVInterference& aVV=aVVt(i); - aVV.Indices(n1, n2); - nX=aVV.NewShape(); - if (nX) { - const TopoDS_Shape& aV1=tDS.Shape(n1); - const TopoDS_Shape& aV2=tDS.Shape(n2); - const TopoDS_Shape& aVx=tDS.Shape(nX); - aDMVV.Bind(aV1, aVx); - aDMVV.Bind(aV2, aVx); - } - } -} diff --git a/src/NMTTools_NEW/NMTTools_PaveFiller_8.cxx b/src/NMTTools_NEW/NMTTools_PaveFiller_8.cxx deleted file mode 100644 index 48331d5d4..000000000 --- a/src/NMTTools_NEW/NMTTools_PaveFiller_8.cxx +++ /dev/null @@ -1,830 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_PaveFiller_8.cxx -// Created: Fri Dec 19 11:15:53 2003 -// Author: Peter KURNEV -// -// -#include - -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - - -// Modified to add new method Thu Sep 14 14:35:18 2006 -// Contribution of Samtech www.samcef.com BEGIN -//======================================================================= -// function: SharedEdges -// purpose: -//======================================================================= - void NMTTools_PaveFiller::SharedEdges(const Standard_Integer nF1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aLNE, - TopTools_ListOfShape& aLSE) -{ - Standard_Integer nE1, nE2; - TColStd_MapOfInteger aM1; - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - // - aExp.Init(nF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE1=aExp.Current(); - aM1.Add(nE1); - } - - aExp.Init(nF2, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE2=aExp.Current(); - if (aM1.Contains(nE2)) { - aLNE.Append(nE2); - const TopoDS_Shape& aE2=myDS->Shape(nE2); - aLSE.Append(aE2); - } - } -} -// Contribution of Samtech www.samcef.com END -// -//======================================================================= -// function: RealPaveBlock -// purpose: -//======================================================================= - const BOPTools_PaveBlock& NMTTools_PaveFiller::RealPaveBlock - (const BOPTools_PaveBlock& aPB, - TColStd_ListOfInteger& aLB, - Standard_Integer& aIsCommonBlock) -{ - Standard_Integer nE, nSpx; - BOPTools_ListIteratorOfListOfPaveBlock aItPBx; - // - aIsCommonBlock=0; - aLB.Clear(); - nE=aPB.OriginalEdge(); - const NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); - NMTTools_CommonBlockAPI aCBAPI(aLCBE); - if (aCBAPI.IsCommonBlock(aPB)) { - NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB); - // - aIsCommonBlock=1; - // - const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); - aItPBx.Initialize(aLPBx); - for (; aItPBx.More(); aItPBx.Next()) { - const BOPTools_PaveBlock& aPBx=aItPBx.Value(); - nSpx=aPBx.Edge(); - aLB.Append(nSpx); - } - // - const BOPTools_PaveBlock& aPBx=aCB.PaveBlock1(); - return aPBx; - } - return aPB; -} -// -//======================================================================= -// function: RealPaveBlock -// purpose: -//======================================================================= - const BOPTools_PaveBlock& NMTTools_PaveFiller::RealPaveBlock(const BOPTools_PaveBlock& aPB) -{ - Standard_Integer nE; - // - nE=aPB.OriginalEdge(); - const NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); - NMTTools_CommonBlockAPI aCBAPI(aLCBE); - if (aCBAPI.IsCommonBlock(aPB)) { - NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB); - const BOPTools_PaveBlock& aPBx=aCB.PaveBlock1(); - return aPBx; - } - return aPB; -} -//======================================================================= -// function: CommonBlocksFace -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::CommonBlocksFace(const Standard_Integer nF, - NMTTools_ListOfCommonBlock& aLCB) -{ - Standard_Integer nE; - TopAbs_ShapeEnum aT; - NMTTools_ListIteratorOfListOfCommonBlock anIt; - // - aT=myDS->GetShapeType(nF); - // - if (aT!=TopAbs_FACE) { - return 1; // Type mismatch - } - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - // - aExp.Init(nF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE=aExp.Current(); - const NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE)); - anIt.Initialize(aLCBE); - for (; anIt.More(); anIt.Next()) { - const NMTTools_CommonBlock& aCBE=anIt.Value(); - aLCB.Append(aCBE); - } - } - return 0; //Ok -} -// -// 1 RealSplits -// -// -//======================================================================= -// function: RealSplitsFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsFace(const Standard_Integer nF, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - // - aExp.Init(nF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE=aExp.Current(); - const BOPTools_ListOfPaveBlock& aLPBE=mySplitShapesPool(myDS->RefEdge(nE)); - anIt.Initialize(aLPBE); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB=anIt.Value(); - const BOPTools_PaveBlock& aPBR=RealPaveBlock(aPB); - aLPB.Append(aPBR); - } - } -} -//======================================================================= -// function: HasRealSplitsInOnFace -// purpose: -//======================================================================= - Standard_Boolean NMTTools_PaveFiller::HasRealSplitsInOnFace(const Standard_Integer nF1, - const Standard_Integer nF2) -{ - Standard_Boolean bFlag; - BOPTools_ListOfPaveBlock aLPB; - // - RealSplitsInFace(0, nF1, nF2, aLPB); - // - bFlag=!aLPB.IsEmpty(); - if (bFlag) { - return bFlag; - } - // - RealSplitsInFace(0, nF1, nF2, aLPB); - // - bFlag=!aLPB.IsEmpty(); - return bFlag; -} -//======================================================================= -// function: RealSplitsInFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsInFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE1; - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - aExp.Init(nF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE1=aExp.Current(); - RealSplitsInFace (nE1, nF2, aLPB); - } -} -//======================================================================= -// function: RealSplitsInFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsInFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nF1; - // - TColStd_ListIteratorOfListOfInteger anItLFCB; - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - // - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE1)); - // - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); - const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1); - const BOPTools_PaveBlock& aPB1R=RealPaveBlock(aPB1); - - const TColStd_ListOfInteger& aLFCB=aCB.Faces(); - anItLFCB.Initialize(aLFCB); - for (; anItLFCB.More(); anItLFCB.Next()) { - nF1=anItLFCB.Value(); - if (nF1==nF2) { - aLPB.Append(aPB1R); - } - } - } -} -//======================================================================= -// function: RealSplitsOnEdge -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsOnEdge(const Standard_Integer nE1, - const Standard_Integer nE2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE; - // - BOPTools_ListIteratorOfListOfPaveBlock anIt; - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - // - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE1)); - - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); - const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1); - const BOPTools_PaveBlock& aPB1R=RealPaveBlock(aPB1); - // - const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); - anIt.Initialize(aLPBx); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB2=anIt.Value(); - nE=aPB2.OriginalEdge(); - if (nE==nE2) { - aLPB.Append(aPB1R); - } - } - } -} -//======================================================================= -// function: RealSplitsOnFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsOnFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE2; - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - aExp.Init(nF2, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE2=aExp.Current(); - RealSplitsOnEdge(nE1, nE2, aLPB); - } -} -//======================================================================= -// function: RealSplitsOnFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsOnFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE1; - // -// BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*myDS); - aExp.Init(nF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE1=aExp.Current(); - RealSplitsOnFace(nE1, nF2, aLPB); - } -} - -// 2 SimpleSplits -//======================================================================= -// function: SplitsFace -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsFace(const Standard_Integer nF, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE; - TopAbs_ShapeEnum aT; - BOPTools_ListIteratorOfListOfPaveBlock anIt; - // - aT=myDS->GetShapeType(nF); - // - if (aT!=TopAbs_FACE) { - return 1; // Type mismatch - } - // - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - // - aExp.Init(nF, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE=aExp.Current(); - const BOPTools_ListOfPaveBlock& aLPBE=mySplitShapesPool(myDS->RefEdge(nE)); - anIt.Initialize(aLPBE); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPBE=anIt.Value(); - aLPB.Append(aPBE); - } - } - return 0; //Ok -} - -//======================================================================= -// function: SplitsInFace -// purpose: splits of edges from nF1 in nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsInFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE1; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nF1); - aT2=myDS->GetShapeType(nF2); - - if (aT1!=TopAbs_FACE || aT2!=TopAbs_FACE) { - return 1; // Type mismatch - } - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - aExp.Init(nF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE1=aExp.Current(); - SplitsInFace (nE1, nF2, aLPB); - } - return 0; //Ok -} -//======================================================================= -// function: SplitsInFace -// purpose: splits of edge nE1 in aFace2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsInFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nF1; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nE1); - aT2=myDS->GetShapeType(nF2); - - if (aT1!=TopAbs_EDGE || aT2!=TopAbs_FACE) { - return 1; // Type mismatch - } - // - TColStd_ListIteratorOfListOfInteger anItLFCB; - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - // - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE1)); - // - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); - const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1); - - const TColStd_ListOfInteger& aLFCB=aCB.Faces(); - anItLFCB.Initialize(aLFCB); - for (; anItLFCB.More(); anItLFCB.Next()) { - nF1=anItLFCB.Value(); - if (nF1==nF2) { - aLPB.Append(aPB1); - } - } - } - return 0; //Ok -} -//======================================================================= -// function: SplitsOnEdge -// purpose: splits of edge nE1 on nE2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnEdge(const Standard_Integer nE1, - const Standard_Integer nE2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nE1); - aT2=myDS->GetShapeType(nE2); - - if (aT1!=TopAbs_EDGE || aT2!=TopAbs_EDGE) { - return 1; // Type mismatch - } - // - BOPTools_ListIteratorOfListOfPaveBlock anIt; - NMTTools_ListIteratorOfListOfCommonBlock anItCB; - // - const NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE1)); - - anItCB.Initialize(aLCB); - for (; anItCB.More(); anItCB.Next()) { - NMTTools_CommonBlock& aCB=anItCB.ChangeValue(); - const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(nE1);//XXX - // - const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks(); - anIt.Initialize(aLPBx); - for (; anIt.More(); anIt.Next()) { - const BOPTools_PaveBlock& aPB2=anIt.Value(); - nE=aPB2.OriginalEdge(); - if (nE==nE2) { - aLPB.Append(aPB1); - } - } - } - return 0; //Ok -} -//======================================================================= -// function: SplitsOnFace -// purpose: splits of edge nE1 on face nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnFace(const Standard_Integer nE1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE2, ip; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nE1); - aT2=myDS->GetShapeType(nF2); - - if (aT1!=TopAbs_EDGE || aT2!=TopAbs_FACE) { - return 1; // Type mismatch - } - BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*pDS); - aExp.Init(nF2, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE2=aExp.Current(); - ip=SplitsOnEdge(nE1, nE2, aLPB); - if (ip) { - return ip; - } - } - return 0; //Ok -} -//======================================================================= -// function: SplitsOnFace -// purpose: splits of edges from face nF1 on face nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - BOPTools_ListOfPaveBlock& aLPB) -{ - Standard_Integer nE1, ip; - TopAbs_ShapeEnum aT1, aT2; - - aT1=myDS->GetShapeType(nF1); - aT2=myDS->GetShapeType(nF2); - - if (aT1!=TopAbs_FACE || aT2!=TopAbs_FACE) { - return 1; // Type mismatch - } -// BooleanOperations_ShapesDataStructure *pDS=myDS; - BooleanOperations_OnceExplorer aExp(*myDS); - aExp.Init(nF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - nE1=aExp.Current(); - ip=SplitsOnFace(nE1, nF2, aLPB); - if (ip) { - return ip; - } - } - return 0; //Ok -} - -// 3 Simple Splits indices -//======================================================================= -// function: SplitsFace -// purpose: -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsFace(const Standard_Integer nF, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsFace(nF, aLPB); - if (iErr) { - return iErr; - } - - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return 0; //Ok -} - -//======================================================================= -// function: SplitsInFace -// purpose: splits of edges from nF1 in nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsInFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsInFace(0, nF1, nF2, aLPB); - if (iErr) { - return iErr; - } - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return iErr; -} -//======================================================================= -// function: SplitsInFace -// purpose: splits of edge nE1 in aFace2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsInFace(const Standard_Integer nE1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsInFace(nE1, nF2, aLPB); - if (iErr) { - return iErr; - } - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return iErr; -} -//======================================================================= -// function: SplitsOnEdge -// purpose: splits of edge nE1 on nE2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnEdge(const Standard_Integer nE1, - const Standard_Integer nE2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsOnEdge(nE1, nE2, aLPB); - if (iErr) { - return iErr; - } - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return iErr; -} -//======================================================================= -// function: SplitsOnFace -// purpose: splits of edge nE1 on face nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnFace(const Standard_Integer nE1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsOnEdge(nE1, nF2, aLPB); - if (iErr) { - return iErr; - } - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return iErr; -} -//======================================================================= -// function: SplitsOnFace -// purpose: splits of edges from face nF1 on face nF2 -//======================================================================= - Standard_Integer NMTTools_PaveFiller::SplitsOnFace(const Standard_Integer ,//for overriding - const Standard_Integer nF1, - const Standard_Integer nF2, - TColStd_ListOfInteger& aSplits) -{ - Standard_Integer nE, iErr; - BOPTools_ListIteratorOfListOfPaveBlock aIt; - BOPTools_ListOfPaveBlock aLPB; - // - iErr=SplitsOnFace(0, nF1, nF2, aLPB); - if (iErr) { - return iErr; - } - - aIt.Initialize(aLPB); - for (; aIt.More(); aIt.Next()) { - const BOPTools_PaveBlock& aPB=aIt.Value(); - nE=aPB.Edge(); - aSplits.Append(nE); - } - return 0; //Ok -} -//modified by NIZNHY-PKV Mon Oct 17 12:07:48 2011f -static - void SortPaveBlocks(BOPTools_ListOfPaveBlock &); -static - void SortShell(const Standard_Integer, - BOPTools_PaveBlock *); -static - Standard_Boolean Less(const BOPTools_PaveBlock &, - const BOPTools_PaveBlock &); - -//======================================================================= -// function: RealSplitsInFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::RealSplitsInFace(const Standard_Integer nF, - BOPTools_ListOfPaveBlock& aLPBIn) -{ - Standard_Integer j, aNbCBP, nSpIn; - TColStd_MapOfInteger aMFence; - BOPTools_ListOfPaveBlock aLPB; - BOPTools_ListIteratorOfListOfPaveBlock aItPB; - NMTTools_ListIteratorOfListOfCommonBlock aItCB; - // - NMTTools_CommonBlockPool& aCBP=ChangeCommonBlockPool(); - // - aNbCBP=aCBP.Extent(); - for (j=1; j<=aNbCBP; ++j) { - NMTTools_ListOfCommonBlock& aLCB=aCBP(j); - aItCB.Initialize(aLCB); - for (; aItCB.More(); aItCB.Next()) { - NMTTools_CommonBlock& aCB=aItCB.ChangeValue(); - if (aCB.IsPaveBlockOnFace(nF)) { - const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(); - nSpIn=aPB1.Edge(); - if (aMFence.Add(nSpIn)){ - aLPB.Append(aPB1); - } - } - } - } - // - SortPaveBlocks(aLPB); - // - aItPB.Initialize(aLPB); - for (; aItPB.More(); aItPB.Next()) { - const BOPTools_PaveBlock& aPB=aItPB.Value(); - aLPBIn.Append(aPB); - } -} -//======================================================================= -// function: SortPaveBlocks -// purpose: -//======================================================================= -void SortPaveBlocks(BOPTools_ListOfPaveBlock &aLPBIn) -{ - Standard_Integer i, aNbPBIn; - BOPTools_ListIteratorOfListOfPaveBlock aItPB; - BOPTools_PaveBlock *pPB; - // - aNbPBIn=aLPBIn.Extent(); - if (aNbPBIn<2) { - return; - } - // - pPB=new BOPTools_PaveBlock[aNbPBIn]; - // - aItPB.Initialize(aLPBIn); - for (i=0; aItPB.More(); aItPB.Next(), ++i) { - const BOPTools_PaveBlock& aPB=aItPB.Value(); - pPB[i]=aPB; - } - // - SortShell(aNbPBIn, pPB); - // - aLPBIn.Clear(); - for (i=0; i -1) goto m30; - }//if (a[l] < a[j]){ - }//for (i=0; i -// -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -#include -#include - - -//======================================================================= -// function: PrepareFace -// purpose: -//======================================================================= - void NMTTools_PaveFiller::PrepareFace(const Standard_Integer nF, - TopoDS_Face& newFace) -{ - Standard_Boolean bToReverse, bIsDegenerated; - Standard_Integer iRankF, nE, nSp, aNbPB; - Standard_Real aTol; - TopLoc_Location aLoc; - TopoDS_Face aF; - TopoDS_Wire newWire; - TopoDS_Edge aSp; - TopAbs_Orientation anOrF, anOrE; - BRep_Builder aBB; - TopExp_Explorer aExpW, aExpE; - BOPTools_ListIteratorOfListOfPaveBlock aItPB; - // - iRankF=myDS->Rank(nF); - aF=TopoDS::Face(myDS->Shape(nF)); - anOrF=aF.Orientation(); - aF.Orientation(TopAbs_FORWARD); - // - Handle(Geom_Surface) aS=BRep_Tool::Surface(aF, aLoc); - aTol=BRep_Tool::Tolerance(aF); - // - aBB.MakeFace (newFace, aS, aLoc, aTol); - // - aExpW.Init(aF, TopAbs_WIRE); - for (; aExpW.More(); aExpW.Next()) { - const TopoDS_Shape& aW=aExpW.Current(); - aBB.MakeWire(newWire); - // - aExpE.Init(aW, TopAbs_EDGE); - for (; aExpE.More(); aExpE.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(aExpE.Current()); - bIsDegenerated=BRep_Tool::Degenerated(aE); - anOrE=aE.Orientation(); - // - nE=myDS->ShapeIndex(aE, iRankF); - const BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE)); - aNbPB=aLPB.Extent(); - if (!aNbPB) { - aBB.Add(newWire, aE); - continue; - } - // - aItPB.Initialize(aLPB); - for (; aItPB.More(); aItPB.Next()) { - const BOPTools_PaveBlock& aPB=aItPB.Value(); - const BOPTools_PaveBlock& aPBR=RealPaveBlock(aPB); - nSp=aPBR.Edge(); - // - aSp=TopoDS::Edge(myDS->Shape(nSp)); - if (!bIsDegenerated) { - bToReverse=BOPTools_Tools3D::IsSplitToReverse1(aSp, aE, myContext); - if (bToReverse) { - aSp.Reverse(); - } - } - else { - aSp.Orientation(anOrE); - } - aBB.Add(newWire, aSp); - } - } - aBB.Add(newFace, newWire); - } - newFace.Orientation(anOrF); -} diff --git a/src/NMTTools_NEW/NMTTools_Tools.cxx b/src/NMTTools_NEW/NMTTools_Tools.cxx deleted file mode 100644 index 9b1f6ceae..000000000 --- a/src/NMTTools_NEW/NMTTools_Tools.cxx +++ /dev/null @@ -1,614 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_Tools.cxx -// Created: Mon Dec 8 10:35:15 2003 -// Author: Peter KURNEV -// -// -#include - -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -// -#include -#include -#include - -static - void ProcessBlock(const Standard_Integer iV, - const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV, - TColStd_IndexedMapOfInteger& aProcessed, - TColStd_IndexedMapOfInteger& aChain); -static - void ProcessBlock(const TopoDS_Shape& aF, - const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMCV, - TopTools_IndexedMapOfShape& aProcessed, - TopTools_IndexedMapOfShape& aChain); - -//modified by NIZNHY-PKV Thu Nov 16 10:46:53 2006f SKL/PartC5 -//======================================================================= -// function: UpdateEdge -// purpose: -//======================================================================= - void NMTTools_Tools::UpdateEdge(const TopoDS_Edge& aE, - const Standard_Real aTolR) -{ - Standard_Real aTolE, aTolES, aTolV; - TopoDS_Iterator aIt; - BRep_Builder aBB; - // - aTolE=BRep_Tool::Tolerance(aE); - aTolES=Max(aTolR, aTolE); - aBB.UpdateEdge(aE, aTolES); - // - aIt.Initialize(aE); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Vertex& aV=TopoDS::Vertex(aIt.Value()); - aTolV=BRep_Tool::Tolerance(aV); - if (aTolVIsPeriodic()) { - BOPTools_Tools2D::AdjustPCurveOnFace(aFFWD, aT1, aT2, aC2D, aC2DA); - } - else { - BOPTools_Tools2D::AdjustPCurveOnFace(aFFWD, aC3DETrim, aC2D, aC2DA); - } - // - aBB.UpdateEdge(aE, aC2DA, aFFWD, aTolE); - BRepLib::SameParameter(aE); -} -/* -//======================================================================= -// function: MakePCurve -// purpose: -//======================================================================= - void NMTTools_Tools::MakePCurve(const TopoDS_Edge& aE, - const TopoDS_Face& aF, - const Handle(Geom2d_Curve)& aC2Dx, - const Standard_Real aTolR2D) -{ - Standard_Integer k, aNbV; - Standard_Real aTolEdge, aTolFact, aTolV, aTolVmax; - Standard_Real aTFirst, aTLast, aOutFirst, aOutLast, aOutTol; - TopoDS_Face aFFWD; - TopTools_IndexedMapOfShape aVMap; - BRep_Builder aBB; - // - aFFWD=aF; - aFFWD.Orientation(TopAbs_FORWARD); - // - aTolEdge=BRep_Tool::Tolerance(aE); - aTolFact=Max(aTolEdge, aTolR2D); - // - TopExp::MapShapes(aE, TopAbs_VERTEX, aVMap); - // - aTolVmax=-1.; - aNbV=aVMap.Extent(); - for (k=1; k<=aNbV; ++k) { - const TopoDS_Vertex& aV=TopoDS::Vertex(aVMap(k)); - aTolV=BRep_Tool::Tolerance(aV); - if (aTolV>aTolVmax) { - aTolVmax=aTolV; - } - } - // - if (aTolFact>aTolVmax) { - aTolFact=aTolVmax; - } - // - const Handle(Geom_Curve)& aC3DE=BRep_Tool::Curve(aE, aTFirst, aTLast); - Handle(Geom_TrimmedCurve)aC3DETrim=new Geom_TrimmedCurve(aC3DE, aTFirst, aTLast); - // - Handle(Geom2d_Curve) aC2D, aC2DA; - // - aC2D=aC2Dx; - if (aC2D.IsNull()) { - BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aFFWD); - BOPTools_Tools2D::CurveOnSurface(aE, aFFWD, aC2D, aOutFirst, aOutLast, aOutTol, Standard_True); - } - if (aC3DE->IsPeriodic()) { - BOPTools_Tools2D::AdjustPCurveOnFace(aFFWD, aTFirst, aTLast, aC2D, aC2DA); - } - else { - BOPTools_Tools2D::AdjustPCurveOnFace(aFFWD, aC3DETrim, aC2D, aC2DA); - } - // - aBB.UpdateEdge(aE, aC2DA, aFFWD, aTolFact); - BRepLib::SameParameter(aE); -} -*/ -//modified by NIZNHY-PKV Thu Nov 16 10:46:55 2006t -//======================================================================= -// function: IsSplitInOnFace -// purpose: -//======================================================================= - Standard_Boolean NMTTools_Tools::IsSplitInOnFace(const TopoDS_Edge& aE, - const TopoDS_Face& aF, - const Handle(IntTools_Context)& aContext) -{ - Standard_Boolean bFlag; - Standard_Real aT, aTolE, aTolF, aTol, aDist, aU, aV; - gp_Pnt aP; - gp_Pnt2d aP2D; - // - aTolE=BRep_Tool::Tolerance(aE); - aTolF=BRep_Tool::Tolerance(aF); - aTol=aTolE+aTolF; - // - GeomAPI_ProjectPointOnSurf& aProjector=aContext->ProjPS(aF); - // - aT=BOPTools_Tools2D::IntermediatePoint(aE); - BOPTools_Tools::PointOnEdge(aE, aT, aP); - // - aProjector.Perform(aP); - bFlag=aProjector.IsDone(); - if (!bFlag) { - return bFlag; - } - // - aDist=aProjector.LowerDistance(); - bFlag=(aDist <= aTol); - if (!bFlag) { - return bFlag; - } - // - aProjector.LowerDistanceParameters(aU, aV); - aP2D.SetCoord(aU, aV); - bFlag=aContext->IsPointInOnFace (aF, aP2D); - return bFlag; -} -//======================================================================= -// function: NMTTools_Tools::MakeNewVertex -// purpose : -//======================================================================= - void NMTTools_Tools::MakeNewVertex(const TopTools_ListOfShape& aLVs, - TopoDS_Vertex& aNewVertex) -{ - Standard_Integer aNb; - Standard_Real aTi, aDi, aDmax=-1.e5; - gp_Pnt aPi, aP; - gp_XYZ aXYZ(0.,0.,0.), aXYZi; - TopTools_ListIteratorOfListOfShape anIt; - // - aNb=aLVs.Extent(); - if (!aNb) { - return; - } - // - anIt.Initialize(aLVs); - for (; anIt.More(); anIt.Next()) { - TopoDS_Vertex aVi=TopoDS::Vertex(anIt.Value()); - aPi=BRep_Tool::Pnt(aVi); - aXYZi=aPi.XYZ(); - aXYZ=aXYZ+aXYZi; - } - // - aXYZ.Divide((Standard_Real)aNb); - aP.SetXYZ(aXYZ); - // - anIt.Initialize(aLVs); - for (; anIt.More(); anIt.Next()) { - TopoDS_Vertex aVi=TopoDS::Vertex(anIt.Value()); - aPi=BRep_Tool::Pnt(aVi); - aTi=BRep_Tool::Tolerance(aVi); - aDi=aP.Distance(aPi); - aDi=aDi+aTi; - if (aDi > aDmax) { - aDmax=aDi; - } - } - BRep_Builder aBB; - aBB.MakeVertex (aNewVertex, aP, aDmax); -} -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const BOPTools_CArray1OfSSInterference& FFs, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapChains) -{ - Standard_Boolean bIsTangentFaces; - Standard_Integer j, aNb, anIndex1, anIndex2; - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger aMCV; - // - aNb=FFs.Extent(); - for (j=1; j<=aNb; ++j) { - const BOPTools_SSInterference& aFF=FFs(j); - // - bIsTangentFaces=aFF.IsTangentFaces(); - if (!bIsTangentFaces) { - continue; - } - // - aFF.Indices(anIndex1, anIndex2); - // - if (aMCV.Contains(anIndex1)) { - TColStd_IndexedMapOfInteger& aMV=aMCV.ChangeFromKey(anIndex1); - aMV.Add(anIndex1); - aMV.Add(anIndex2); - } - else { - TColStd_IndexedMapOfInteger aMV; - aMV.Add(anIndex1); - aMV.Add(anIndex2); - aMCV.Add(anIndex1, aMV); - } - // - if (aMCV.Contains(anIndex2)) { - TColStd_IndexedMapOfInteger& aMV=aMCV.ChangeFromKey(anIndex2); - aMV.Add(anIndex1); - aMV.Add(anIndex2); - } - else { - TColStd_IndexedMapOfInteger aMV; - aMV.Add(anIndex1); - aMV.Add(anIndex2); - aMCV.Add(anIndex2, aMV); - } - } - NMTTools_Tools::FindChains(aMCV, aMapChains); -} -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const BOPTools_CArray1OfVVInterference& VVs, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapChains) -{ - Standard_Integer j, aNb, anIndex1, anIndex2; - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger aMCV; - // - aNb=VVs.Extent(); - for (j=1; j<=aNb; ++j) { - const BOPTools_VVInterference& VV=VVs(j); - VV.Indices(anIndex1, anIndex2); - // - if (aMCV.Contains(anIndex1)) { - TColStd_IndexedMapOfInteger& aMV=aMCV.ChangeFromKey(anIndex1); - aMV.Add(anIndex1); - aMV.Add(anIndex2); - } - else { - TColStd_IndexedMapOfInteger aMV; - aMV.Add(anIndex1); - aMV.Add(anIndex2); - aMCV.Add(anIndex1, aMV); - } - // - if (aMCV.Contains(anIndex2)) { - TColStd_IndexedMapOfInteger& aMV=aMCV.ChangeFromKey(anIndex2); - aMV.Add(anIndex1); - aMV.Add(anIndex2); - } - else { - TColStd_IndexedMapOfInteger aMV; - aMV.Add(anIndex1); - aMV.Add(anIndex2); - aMCV.Add(anIndex2, aMV); - } - } - NMTTools_Tools::FindChains(aMCV, aMapChains); -} - -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapChains) -{ - Standard_Integer i, j, aNbCV, aNbV, iV, iVx; - TColStd_IndexedMapOfInteger aProcessed, aChain; - // - aNbCV=aMCV.Extent(); - for (i=1; i<=aNbCV; ++i) { - iV=aMCV.FindKey(i); - if (aProcessed.Contains(iV)) { - continue; - } - // - aProcessed.Add(iV); - aChain.Add(iV); - // - const TColStd_IndexedMapOfInteger& aMV=aMCV(i); - aNbV=aMV.Extent(); - for (j=1; j<=aNbV; ++j) { - iVx=aMV(j); - ProcessBlock(iVx, aMCV, aProcessed, aChain); - } - aMapChains.Add(i, aChain); - aChain.Clear(); - } -} -//======================================================================= -// function: ProcessBlock -// purpose: -//======================================================================= -void ProcessBlock(const Standard_Integer iV, - const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV, - TColStd_IndexedMapOfInteger& aProcessed, - TColStd_IndexedMapOfInteger& aChain) -{ - Standard_Integer j, aNbV, iVx; - // - if (aProcessed.Contains(iV)) { - return; - } - aProcessed.Add(iV); - aChain.Add(iV); - // - const TColStd_IndexedMapOfInteger& aMV=aMCV.FindFromKey(iV); - aNbV=aMV.Extent(); - for (j=1; j<=aNbV; ++j) { - iVx=aMV(j); - ProcessBlock(iVx, aMCV, aProcessed, aChain); - } -} -//======================================================================= -// function: AreFacesSameDomain -// purpose : -//======================================================================= - Standard_Boolean NMTTools_Tools::AreFacesSameDomain(const TopoDS_Face& aF1x, - const TopoDS_Face& aF2y, - const Handle(IntTools_Context)& aCtx) -{ - Standard_Boolean bFlag; - // Modified Thu Sep 14 14:35:18 2006 - // Contribution of Samtech www.samcef.com BEGIN - Standard_Integer aNbE1, aNbE2; - Standard_Real aTolF1, aTolF2, aTol; - gp_Pnt2d aP2D; - gp_Pnt aP; - TopoDS_Face aF1, aF2; - TopExp_Explorer aExp; - TopTools_MapOfShape aME1, aME2; - TopTools_MapIteratorOfMapOfShape aIt; - // - bFlag=Standard_False; - // Contribution of Samtech www.samcef.com END - // - aF1=aF1x; - aF1.Orientation(TopAbs_FORWARD); - aF2=aF2y; - aF2.Orientation(TopAbs_FORWARD); - // - // Modified Thu Sep 14 14:35:18 2006 - // Contribution of Samtech www.samcef.com BEGIN - // - // 1 - aExp.Init(aF1, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(aExp.Current()); - if (!BRep_Tool::Degenerated(aE)) { - aME1.Add(aE); - } - } - // - aExp.Init(aF2, TopAbs_EDGE); - for (; aExp.More(); aExp.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(aExp.Current()); - if (!BRep_Tool::Degenerated(aE)) { - if (!aME1.Contains(aE)) { - return bFlag; - } - aME2.Add(aE); - } - } - // - // Contribution of Samtech www.samcef.com END - // - aNbE1=aME1.Extent(); - aNbE2=aME2.Extent(); - // - if(!aNbE1 || !aNbE2){ - return bFlag; - } - // - if(aNbE1!=aNbE2) { - return bFlag; - } - // - // 2 - aTolF1=BRep_Tool::Tolerance(aF1); - aTolF2=BRep_Tool::Tolerance(aF2); - aTol=aTolF1+aTolF2; - // - aIt.Initialize(aME1); - for (; aIt.More(); aIt.Next()) { - const TopoDS_Edge& aE=TopoDS::Edge(aIt.Key()); - BOPTools_Tools3D::PointNearEdge(aE, aF1, aP2D, aP); - bFlag=aCtx->IsValidPointForFace(aP, aF2, aTol); - break; - } - // - return bFlag; -} -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const NMTTools_ListOfCoupleOfShape& aLCS, - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMapChains) -{ - NMTTools_ListIteratorOfListOfCoupleOfShape aItCS; - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape aMCV; - // - aItCS.Initialize(aLCS); - for (; aItCS.More(); aItCS.Next()) { - const NMTTools_CoupleOfShape& aCS=aItCS.Value(); - // - const TopoDS_Shape& aF1=aCS.Shape1(); - const TopoDS_Shape& aF2=aCS.Shape2(); - // - // - if (aMCV.Contains(aF1)) { - TopTools_IndexedMapOfShape& aMV=aMCV.ChangeFromKey(aF1); - aMV.Add(aF1); - aMV.Add(aF2); - } - else { - TopTools_IndexedMapOfShape aMV; - aMV.Add(aF1); - aMV.Add(aF2); - aMCV.Add(aF1, aMV); - } - // - if (aMCV.Contains(aF2)) { - TopTools_IndexedMapOfShape& aMV=aMCV.ChangeFromKey(aF2); - aMV.Add(aF1); - aMV.Add(aF2); - } - else { - TopTools_IndexedMapOfShape aMV; - aMV.Add(aF1); - aMV.Add(aF2); - aMCV.Add(aF2, aMV); - } - } - NMTTools_Tools::FindChains(aMCV, aMapChains); -} -//======================================================================= -// function: FindChains -// purpose : -//======================================================================= - void NMTTools_Tools::FindChains(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMCV, - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMapChains) -{ - Standard_Integer i, j, aNbCV, aNbV; - TopTools_IndexedMapOfShape aProcessed, aChain; - // - aNbCV=aMCV.Extent(); - for (i=1; i<=aNbCV; ++i) { - const TopoDS_Shape& aF=aMCV.FindKey(i); - if (aProcessed.Contains(aF)) { - continue; - } - // - aProcessed.Add(aF); - aChain.Add(aF); - // - const TopTools_IndexedMapOfShape& aMV=aMCV(i); - aNbV=aMV.Extent(); - for (j=1; j<=aNbV; ++j) { - const TopoDS_Shape& aFx=aMV(j); - ProcessBlock(aFx, aMCV, aProcessed, aChain); - } - aMapChains.Add(aF, aChain); - aChain.Clear(); - } -} -//======================================================================= -// function: ProcessBlock -// purpose: -//======================================================================= -void ProcessBlock(const TopoDS_Shape& aF, - const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aMCV, - TopTools_IndexedMapOfShape& aProcessed, - TopTools_IndexedMapOfShape& aChain) -{ - Standard_Integer j, aNbV; - // - if (aProcessed.Contains(aF)) { - return; - } - aProcessed.Add(aF); - aChain.Add(aF); - // - const TopTools_IndexedMapOfShape& aMV=aMCV.FindFromKey(aF); - aNbV=aMV.Extent(); - for (j=1; j<=aNbV; ++j) { - const TopoDS_Shape& aFx=aMV(j); - ProcessBlock(aFx, aMCV, aProcessed, aChain); - } -} diff --git a/src/NMTTools_NEW/NMTTools_Tools.hxx b/src/NMTTools_NEW/NMTTools_Tools.hxx deleted file mode 100644 index f63a65281..000000000 --- a/src/NMTTools_NEW/NMTTools_Tools.hxx +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -// File: NMTTools_Tools.hxx -// Created: Mon Dec 8 10:35:15 2003 -// Author: Peter KURNEV -// - -#ifndef _NMTTools_Tools_HeaderFile -#define _NMTTools_Tools_HeaderFile - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//======================================================================= -//function : NMTTools_Tools -//purpose : -//======================================================================= -class NMTTools_Tools { - public: - Standard_EXPORT - static void MakeNewVertex(const TopTools_ListOfShape& aLV, - TopoDS_Vertex& aNewVertex) ; - - Standard_EXPORT - static void FindChains(const BOPTools_CArray1OfVVInterference& aVVs, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; - - Standard_EXPORT - static void FindChains(const BOPTools_CArray1OfSSInterference& aVVs, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; - - Standard_EXPORT - static void FindChains(const BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCV, - BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMCX) ; - - Standard_EXPORT - static Standard_Boolean IsSplitInOnFace(const TopoDS_Edge& aE, - const TopoDS_Face& aF, - const Handle(IntTools_Context)& aCtx) ; - - Standard_EXPORT - static Standard_Boolean AreFacesSameDomain(const TopoDS_Face& aF1, - const TopoDS_Face& aF2, - const Handle(IntTools_Context)& aCtx) ; - - Standard_EXPORT - static void FindChains(const NMTTools_ListOfCoupleOfShape& aLCS, - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM) ; - - Standard_EXPORT - static void FindChains(const NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM1, - NMTTools_IndexedDataMapOfShapeIndexedMapOfShape& aM2) ; - - Standard_EXPORT - static void MakePCurve(const TopoDS_Edge& aE, - const TopoDS_Face& aF, - const Handle(Geom2d_Curve)& aC2D) ; - - Standard_EXPORT - static void UpdateEdge(const TopoDS_Edge& aE, - const Standard_Real aTol) ; - -}; -#endif diff --git a/src/OBJECT/GEOM_AISShape.cxx b/src/OBJECT/GEOM_AISShape.cxx index 81a6dbe1c..a50c92c23 100644 --- a/src/OBJECT/GEOM_AISShape.cxx +++ b/src/OBJECT/GEOM_AISShape.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM OBJECT : interactive object for Geometry entities visualization // File : GEOM_AISShape.cxx @@ -146,6 +147,18 @@ GEOM_AISShape::GEOM_AISShape(const TopoDS_Shape& shape, myVIsoNumber = -1; myTopLevel = Standard_False; + Graphic3d_MaterialAspect aMatAspect; + if ( !HasMaterial() ) { + aMatAspect.SetAmbient( 0.5 ); + aMatAspect.SetDiffuse( 0.5 ); + aMatAspect.SetEmissive( 0.5 ); + aMatAspect.SetShininess(0.5 ); + aMatAspect.SetSpecular( 0.5 ); + + myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(aMatAspect); + myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(aMatAspect); + } + myCurrentMaterial = myDrawer->ShadingAspect()->Aspect()->FrontMaterial(); } void GEOM_AISShape::setIO(const Handle(SALOME_InteractiveObject)& io){ @@ -197,7 +210,6 @@ void GEOM_AISShape::Compute(const Handle(PrsMgr_PresentationManager3d)& aPresent if(isTopLevel()) { SetColor(topLevelColor()); - Handle(Prs3d_LineAspect) anAspect = Attributes()->WireAspect(); anAspect->SetColor( topLevelColor() ); Attributes()->SetWireAspect( anAspect ); @@ -315,10 +327,10 @@ void GEOM_AISShape::SetTransparency(const Standard_Real aValue) } Graphic3d_MaterialAspect FMat = myDrawer->ShadingAspect()->Aspect()->FrontMaterial(); - Graphic3d_MaterialAspect BMat = myDrawer->ShadingAspect()->Aspect()->BackMaterial(); - FMat.SetTransparency(aValue); BMat.SetTransparency(aValue); + FMat.SetTransparency(aValue); myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(FMat); - myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(BMat); + myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(FMat); + myCurrentMaterial = FMat; myTransparency = aValue; } @@ -374,33 +386,28 @@ void GEOM_AISShape::shadingMode(const Handle(PrsMgr_PresentationManager3d)& aPre { myDrawer->ShadingAspect()->Aspect()->SetDistinguishOn(); - Graphic3d_MaterialAspect aMatAspect; - if ( !HasMaterial() ) { - aMatAspect.SetAmbient( 0.5 ); - aMatAspect.SetDiffuse( 0.5 ); - aMatAspect.SetEmissive( 0.5 ); - aMatAspect.SetShininess(0.5 ); - aMatAspect.SetSpecular( 0.5 ); - - myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(aMatAspect); - myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(Graphic3d_NOM_JADE); - } - - Graphic3d_MaterialAspect FMat = myDrawer->ShadingAspect()->Aspect()->FrontMaterial(); - Graphic3d_MaterialAspect BMat = myDrawer->ShadingAspect()->Aspect()->BackMaterial(); - FMat.SetTransparency(myTransparency); BMat.SetTransparency(myTransparency); - myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(FMat); - myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(BMat); + Graphic3d_MaterialAspect aMatAspect(Graphic3d_NOM_PLASTIC); + aMatAspect.SetTransparency(myTransparency); + myCurrentMaterial = myDrawer->ShadingAspect()->Aspect()->FrontMaterial(); + myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial( isTopLevel() ? aMatAspect : myCurrentMaterial ); + myDrawer->ShadingAspect()->Aspect()->SetBackMaterial( isTopLevel() ? aMatAspect : myCurrentMaterial ); //Handle(Graphic3d_AspectFillArea3d) a4bis = myDrawer->ShadingAspect()->Aspect(); // P->SetPrimitivesAspect(a4bis); // G->SetGroupPrimitivesAspect(a4bis); //a4bis->SetInteriorColor(myShadingColor); - myDrawer->ShadingAspect()->SetColor(isTopLevel() ? topLevelColor() : myShadingColor); + if( isTopLevel() ) + myDrawer->ShadingAspect()->SetColor( topLevelColor() ); + else { + if(myDrawer->ShadingAspect()->Aspect()->FrontMaterial().MaterialType( Graphic3d_MATERIAL_ASPECT )) + myDrawer->ShadingAspect()->SetColor(myShadingColor); + else + myDrawer->ShadingAspect()->SetColor(myDrawer->ShadingAspect()->Aspect()->FrontMaterial().AmbientColor()); + } - // PAL12113: AIS_Shape::Compute() works correctly with shapes containing no faces - //StdPrs_ShadedShape::Add(aPrs,myshape,myDrawer); - AIS_Shape::Compute(aPresentationManager, aPrs, aMode); + // PAL12113: AIS_Shape::Compute() works correctly with shapes containing no faces + //StdPrs_ShadedShape::Add(aPrs,myshape,myDrawer); + AIS_Shape::Compute(aPresentationManager, aPrs, aMode); } void GEOM_AISShape::storeIsoNumbers() diff --git a/src/OBJECT/GEOM_AISShape.hxx b/src/OBJECT/GEOM_AISShape.hxx index 21e1c5a7e..4dfe2c9a1 100644 --- a/src/OBJECT/GEOM_AISShape.hxx +++ b/src/OBJECT/GEOM_AISShape.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -58,6 +58,7 @@ #include #include +#include class PrsMgr_PresentationManager3d; class Prs3d_Presentation; @@ -149,8 +150,10 @@ protected: private: TCollection_AsciiString myName; - bool myDisplayVectors; - Standard_Boolean myTopLevel; + bool myDisplayVectors; + Standard_Boolean myTopLevel; + Graphic3d_MaterialAspect myCurrentMaterial; + }; diff --git a/src/OBJECT/GEOM_AISShape.ixx b/src/OBJECT/GEOM_AISShape.ixx index c0945b517..5f504a5a5 100644 --- a/src/OBJECT/GEOM_AISShape.ixx +++ b/src/OBJECT/GEOM_AISShape.ixx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_AISShape.jxx b/src/OBJECT/GEOM_AISShape.jxx index 8e412d522..136116d22 100644 --- a/src/OBJECT/GEOM_AISShape.jxx +++ b/src/OBJECT/GEOM_AISShape.jxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_AISTrihedron.cxx b/src/OBJECT/GEOM_AISTrihedron.cxx index 45f5d6751..6763d747b 100755 --- a/src/OBJECT/GEOM_AISTrihedron.cxx +++ b/src/OBJECT/GEOM_AISTrihedron.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_AISTrihedron.hxx b/src/OBJECT/GEOM_AISTrihedron.hxx index ef39cfa88..b9eccc5cc 100755 --- a/src/OBJECT/GEOM_AISTrihedron.hxx +++ b/src/OBJECT/GEOM_AISTrihedron.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_AISVector.cxx b/src/OBJECT/GEOM_AISVector.cxx index d8da5fae3..051b875cc 100644 --- a/src/OBJECT/GEOM_AISVector.cxx +++ b/src/OBJECT/GEOM_AISVector.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_AISVector.hxx b/src/OBJECT/GEOM_AISVector.hxx index 6ff2c79a4..b53f9a85c 100644 --- a/src/OBJECT/GEOM_AISVector.hxx +++ b/src/OBJECT/GEOM_AISVector.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_Actor.cxx b/src/OBJECT/GEOM_Actor.cxx index bc9c5c9f1..a68e25b0e 100644 --- a/src/OBJECT/GEOM_Actor.cxx +++ b/src/OBJECT/GEOM_Actor.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -113,8 +113,7 @@ GEOM_Actor::GEOM_Actor(): myHighlightProp(vtkProperty::New()), myPreHighlightProp(vtkProperty::New()), - myShadingFaceProp(vtkProperty::New()), - myShadingBackFaceProp(vtkProperty::New()) + myShadingFaceProp(vtkProperty::New()) { #ifdef MYDEBUG MESSAGE (this<< " GEOM_Actor::GEOM_Actor"); @@ -203,7 +202,6 @@ GEOM_Actor::~GEOM_Actor() myHighlightProp->Delete(); myPreHighlightProp->Delete(); myShadingFaceProp->Delete(); - myShadingBackFaceProp->Delete(); } GEOM_Actor* @@ -548,6 +546,7 @@ void GEOM_Actor::Render(vtkRenderer *ren, vtkMapper *theMapper) case eShadingWithEdges://shading with edges myPreHighlightProp->SetRepresentationToSurface(); myHighlightProp->SetRepresentationToSurface(); + myShadingFaceProp->SetRepresentationToSurface(); break; } @@ -555,17 +554,14 @@ void GEOM_Actor::Render(vtkRenderer *ren, vtkMapper *theMapper) if(myIsPreselected){ this->myHighlightActor->SetProperty(myPreHighlightProp.GetPointer()); myShadingFaceActor->SetProperty(myPreHighlightProp.GetPointer()); - myShadingFaceActor->SetBackfaceProperty(myPreHighlightProp.GetPointer()); } else { this->myHighlightActor->SetProperty(myShadingFaceProp.GetPointer()); myShadingFaceActor->SetProperty(myShadingFaceProp.GetPointer()); - myShadingFaceActor->SetBackfaceProperty(myShadingBackFaceProp.GetPointer()); } } else{ this->myHighlightActor->SetProperty(myHighlightProp.GetPointer()); myShadingFaceActor->SetProperty(myHighlightProp.GetPointer()); - myShadingFaceActor->SetBackfaceProperty(myHighlightProp.GetPointer()); } this->Property->Render(this, ren); @@ -676,7 +672,6 @@ void GEOM_Actor::SetOpacity(vtkFloatingPointType opa) { // enk:tested OK myShadingFaceProp->SetOpacity(opa); - myShadingBackFaceProp->SetOpacity(opa); myHighlightProp->SetOpacity(opa); myPreHighlightProp->SetOpacity(opa); myVertexActor->GetProperty()->SetOpacity(opa); @@ -692,7 +687,6 @@ void GEOM_Actor::SetColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloat { // enk:tested OK myShadingFaceProp->SetColor(r,g,b); // shading color (Shading) - myShadingBackFaceProp->SetColor(r,g,b); // back face shading color (Shading) myVertexActor->GetProperty()->SetColor(r,g,b); // vertex actor (Shading/Wireframe) if ( myDisplayMode != (int)eShadingWithEdges ) { myIsolatedEdgeActor->GetProperty()->SetColor(r,g,b); // standalone edge color (Wireframe) @@ -715,42 +709,23 @@ void GEOM_Actor::GetColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFlo void GEOM_Actor::SetMaterial(std::vector theProps) { - int aSize = theProps.size(); - - if ( aSize < 1 || aSize > 2) - return; - - // theProps[0] -- front material properties - // theProps[1] -- back material properties (if exist) - // If there are no back material properties, - // we get front material properties as back material - + // we set material properties as back and front material double aCoefnt; // Set reflection coefficients aCoefnt = theProps[0]->GetAmbient(); myShadingFaceProp->SetAmbient(aCoefnt); myVertexActor->GetProperty()->SetAmbient(aCoefnt); - if ( aSize == 2 ) - aCoefnt = theProps[1]->GetAmbient(); - myShadingBackFaceProp->SetAmbient(aCoefnt); // Set diffuse coefficients aCoefnt = theProps[0]->GetDiffuse(); myShadingFaceProp->SetDiffuse(aCoefnt); myVertexActor->GetProperty()->SetDiffuse(aCoefnt); - if ( aSize == 2 ) - aCoefnt = theProps[1]->GetDiffuse(); - myShadingBackFaceProp->SetDiffuse(aCoefnt); // Set specular coefficients aCoefnt = theProps[0]->GetSpecular(); myShadingFaceProp->SetSpecular(aCoefnt); myVertexActor->GetProperty()->SetSpecular(aCoefnt); - if ( aSize == 2 ) - aCoefnt = theProps[1]->GetSpecular(); - myShadingBackFaceProp->SetSpecular(aCoefnt); - double* aColor; @@ -758,48 +733,28 @@ void GEOM_Actor::SetMaterial(std::vector theProps) aColor = theProps[0]->GetAmbientColor(); myShadingFaceProp->SetAmbientColor(aColor[0], aColor[1], aColor[2]); myVertexActor->GetProperty()->SetAmbientColor(aColor[0], aColor[1], aColor[2]); - if ( aSize == 2 ) - aColor = theProps[1]->GetAmbientColor(); - myShadingBackFaceProp->SetAmbientColor(aColor[0], aColor[1], aColor[2]); // Set diffuse colors aColor = theProps[0]->GetDiffuseColor(); myShadingFaceProp->SetDiffuseColor(aColor[0], aColor[1], aColor[2]); myVertexActor->GetProperty()->SetDiffuseColor(aColor[0], aColor[1], aColor[2]); - if ( aSize == 2 ) - aColor = theProps[1]->GetDiffuseColor(); - myShadingBackFaceProp->SetDiffuseColor(aColor[0], aColor[1], aColor[2]); // Set specular colors aColor = theProps[0]->GetSpecularColor(); myShadingFaceProp->SetSpecularColor(aColor[0], aColor[1], aColor[2]); myVertexActor->GetProperty()->SetSpecularColor(aColor[0], aColor[1], aColor[2]); - if ( aSize == 2 ) - aColor = theProps[1]->GetSpecularColor(); - myShadingBackFaceProp->SetSpecularColor(aColor[0], aColor[1], aColor[2]); // Set shininess aCoefnt = theProps[0]->GetSpecularPower(); myShadingFaceProp->SetSpecularPower(aCoefnt); myVertexActor->GetProperty()->SetSpecularPower(aCoefnt); - if ( aSize == 2 ) - aCoefnt = theProps[1]->GetSpecularPower(); - myShadingBackFaceProp->SetSpecularPower(aCoefnt); - - // Set back face material property - myShadingFaceActor->SetBackfaceProperty(myShadingBackFaceProp.GetPointer()); } -vtkProperty* GEOM_Actor::GetFrontMaterial() +vtkProperty* GEOM_Actor::GetMaterial() { return myShadingFaceProp; } -vtkProperty* GEOM_Actor::GetBackMaterial() -{ - return myShadingBackFaceProp; -} - bool GEOM_Actor::IsInfinitive() { return ((bool)myShape.Infinite() || isOnlyVertex); diff --git a/src/OBJECT/GEOM_Actor.h b/src/OBJECT/GEOM_Actor.h index c0c31fc5a..28df32d67 100644 --- a/src/OBJECT/GEOM_Actor.h +++ b/src/OBJECT/GEOM_Actor.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -127,8 +127,7 @@ public: // Material void SetMaterial(std::vector theProps); - vtkProperty* GetFrontMaterial(); - vtkProperty* GetBackMaterial(); + vtkProperty* GetMaterial(); virtual bool IsInfinitive(); @@ -244,7 +243,6 @@ private: vtkSmartPointer myHighlightProp; vtkSmartPointer myPreHighlightProp; vtkSmartPointer myShadingFaceProp; - vtkSmartPointer myShadingBackFaceProp; PAppendFilter myAppendFilter; PPolyGeomPainterDataMapper myPolyDataMapper; diff --git a/src/OBJECT/GEOM_Constants.h b/src/OBJECT/GEOM_Constants.h index de4adb9c8..b890379e3 100644 --- a/src/OBJECT/GEOM_Constants.h +++ b/src/OBJECT/GEOM_Constants.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -43,8 +43,7 @@ #define VECTOR_MODE_PROP "VectorMode" //Vector mode property #define DEFLECTION_COEFF_PROP "DeflectionCoeff" //Deflection coeff property #define MARKER_TYPE_PROP "MarkerType" //Marker type property -#define FRONT_MATERIAL_PROP "FrontMaterial" //Object front material property -#define BACK_MATERIAL_PROP "BackMaterial" //Object back material property +#define MATERIAL_PROP "Material" //Object material property #define EDGE_WIDTH_PROP "EdgeWidth" //Width of the edge #define ISOS_WIDTH_PROP "IsosWidth" //Width of the iso-lines #define TOP_LEVEL_PROP "TopLevelFlag" //Top level flag diff --git a/src/OBJECT/GEOM_DeviceActor.cxx b/src/OBJECT/GEOM_DeviceActor.cxx index 8d2a5e911..266814569 100755 --- a/src/OBJECT/GEOM_DeviceActor.cxx +++ b/src/OBJECT/GEOM_DeviceActor.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -73,20 +73,6 @@ GetProperty() return myActor->GetProperty(); } -void -GEOM_DeviceActor:: -SetBackfaceProperty(vtkProperty* theProperty) -{ - myActor->SetBackfaceProperty(theProperty); -} - -vtkProperty* -GEOM_DeviceActor:: -GetBackfaceProperty() -{ - return myActor->GetBackfaceProperty(); -} - void GEOM_DeviceActor:: SetVisibility(int theVisibility) diff --git a/src/OBJECT/GEOM_DeviceActor.h b/src/OBJECT/GEOM_DeviceActor.h index 721ee1b6f..8b36ab7ae 100755 --- a/src/OBJECT/GEOM_DeviceActor.h +++ b/src/OBJECT/GEOM_DeviceActor.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -52,9 +52,6 @@ public: void SetProperty(vtkProperty* theProperty); vtkProperty* GetProperty(); - - void SetBackfaceProperty(vtkProperty* theProperty); - vtkProperty* GetBackfaceProperty(); void SetVisibility(int theVisibility); int GetVisibility(); diff --git a/src/OBJECT/GEOM_InteractiveObject.cxx b/src/OBJECT/GEOM_InteractiveObject.cxx index 910783203..d108c1735 100644 --- a/src/OBJECT/GEOM_InteractiveObject.cxx +++ b/src/OBJECT/GEOM_InteractiveObject.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_InteractiveObject.hxx b/src/OBJECT/GEOM_InteractiveObject.hxx index 85bfff155..7caddbfef 100644 --- a/src/OBJECT/GEOM_InteractiveObject.hxx +++ b/src/OBJECT/GEOM_InteractiveObject.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_InteractiveObject.ixx b/src/OBJECT/GEOM_InteractiveObject.ixx index d8d65de8f..ff3ae4767 100644 --- a/src/OBJECT/GEOM_InteractiveObject.ixx +++ b/src/OBJECT/GEOM_InteractiveObject.ixx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_InteractiveObject.jxx b/src/OBJECT/GEOM_InteractiveObject.jxx index aba2abc3e..9da2f88eb 100644 --- a/src/OBJECT/GEOM_InteractiveObject.jxx +++ b/src/OBJECT/GEOM_InteractiveObject.jxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_OBJECT_defs.hxx b/src/OBJECT/GEOM_OBJECT_defs.hxx index 22678f181..cbd78b1a8 100755 --- a/src/OBJECT/GEOM_OBJECT_defs.hxx +++ b/src/OBJECT/GEOM_OBJECT_defs.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_OCCReader.cxx b/src/OBJECT/GEOM_OCCReader.cxx index ff1e0f3a0..d9f1331a9 100644 --- a/src/OBJECT/GEOM_OCCReader.cxx +++ b/src/OBJECT/GEOM_OCCReader.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM OBJECT : interactive object for Geometry entities visualization // File : GEOM_OCCReader.h diff --git a/src/OBJECT/GEOM_OCCReader.h b/src/OBJECT/GEOM_OCCReader.h index 3e60b35da..3be818b36 100644 --- a/src/OBJECT/GEOM_OCCReader.h +++ b/src/OBJECT/GEOM_OCCReader.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_PainterPolyDataMapper.cxx b/src/OBJECT/GEOM_PainterPolyDataMapper.cxx index c86d93792..93022c136 100644 --- a/src/OBJECT/GEOM_PainterPolyDataMapper.cxx +++ b/src/OBJECT/GEOM_PainterPolyDataMapper.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OBJECT/GEOM_PainterPolyDataMapper.h b/src/OBJECT/GEOM_PainterPolyDataMapper.h index 0c738f775..ecd880600 100644 --- a/src/OBJECT/GEOM_PainterPolyDataMapper.h +++ b/src/OBJECT/GEOM_PainterPolyDataMapper.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OBJECT/GEOM_SmartPtr.h b/src/OBJECT/GEOM_SmartPtr.h index 12f981bc7..75d190cdc 100755 --- a/src/OBJECT/GEOM_SmartPtr.h +++ b/src/OBJECT/GEOM_SmartPtr.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/GEOMAlgo_NEW/GEOMAlgo_KindOfBounds.hxx b/src/OBJECT/GEOM_VTKPropertyMaterial.cxx old mode 100644 new mode 100755 similarity index 75% rename from src/GEOMAlgo_NEW/GEOMAlgo_KindOfBounds.hxx rename to src/OBJECT/GEOM_VTKPropertyMaterial.cxx index 6de8485ad..cccaa1ef3 --- a/src/GEOMAlgo_NEW/GEOMAlgo_KindOfBounds.hxx +++ b/src/OBJECT/GEOM_VTKPropertyMaterial.cxx @@ -1,37 +1,39 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _GEOMAlgo_KindOfBounds_HeaderFile -#define _GEOMAlgo_KindOfBounds_HeaderFile - - -enum GEOMAlgo_KindOfBounds { -GEOMAlgo_KB_UNKNOWN, -GEOMAlgo_KB_TRIMMED, -GEOMAlgo_KB_INFINITE -}; - -#ifndef _Standard_PrimitiveTypes_HeaderFile -#include -#endif - -#endif +// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 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 +// + +// SALOME GEOM : +// File : GEOM_VTKPropertyMaterial.cxx + +#include "GEOM_VTKPropertyMaterial.hxx" + +#include + +vtkStandardNewMacro( GEOM_VTKPropertyMaterial ); + +GEOM_VTKPropertyMaterial::GEOM_VTKPropertyMaterial() +{ + Physical = false; +} + +GEOM_VTKPropertyMaterial::~GEOM_VTKPropertyMaterial() +{ +} diff --git a/src/GEOMAlgo_NEW/GEOMAlgo_KindOfName.hxx b/src/OBJECT/GEOM_VTKPropertyMaterial.hxx old mode 100644 new mode 100755 similarity index 57% rename from src/GEOMAlgo_NEW/GEOMAlgo_KindOfName.hxx rename to src/OBJECT/GEOM_VTKPropertyMaterial.hxx index 5b1362bcc..c45c3f656 --- a/src/GEOMAlgo_NEW/GEOMAlgo_KindOfName.hxx +++ b/src/OBJECT/GEOM_VTKPropertyMaterial.hxx @@ -1,54 +1,52 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _GEOMAlgo_KindOfName_HeaderFile -#define _GEOMAlgo_KindOfName_HeaderFile - - -enum GEOMAlgo_KindOfName { -GEOMAlgo_KN_UNKNOWN, -GEOMAlgo_KN_SPHERE, -GEOMAlgo_KN_CYLINDER, -GEOMAlgo_KN_TORUS, -GEOMAlgo_KN_CONE, -GEOMAlgo_KN_ELLIPSE, -GEOMAlgo_KN_CIRCLE, -GEOMAlgo_KN_PLANE, -GEOMAlgo_KN_LINE, -GEOMAlgo_KN_BOX, -GEOMAlgo_KN_SEGMENT, -GEOMAlgo_KN_ARCCIRCLE, -GEOMAlgo_KN_POLYGON, -GEOMAlgo_KN_POLYHEDRON, -GEOMAlgo_KN_DISKCIRCLE, -GEOMAlgo_KN_DISKELLIPSE, -GEOMAlgo_KN_RECTANGLE, -GEOMAlgo_KN_TRIANGLE, -GEOMAlgo_KN_QUADRANGLE, -GEOMAlgo_KN_ARCELLIPSE -}; - -#ifndef _Standard_PrimitiveTypes_HeaderFile -#include -#endif - -#endif +// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 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 +// + +// SALOME GEOM : +// File : GEOM_VTKPropertyMaterial.hxx + +#ifndef GEOM_VTKPropertyMaterial_H +#define GEOM_VTKPropertyMaterial_H + +#include "GEOM_OBJECT_defs.hxx" + +#include + +class GEOM_OBJECT_EXPORT GEOM_VTKPropertyMaterial : public vtkProperty +{ + +protected: + GEOM_VTKPropertyMaterial(); + virtual ~GEOM_VTKPropertyMaterial(); + +public: + vtkTypeMacro(GEOM_VTKPropertyMaterial, vtkProperty); + + vtkSetMacro(Physical, bool); + vtkGetMacro(Physical, bool); + + static GEOM_VTKPropertyMaterial* New(); + +protected: + bool Physical; +}; + +#endif diff --git a/src/OBJECT/GEOM_VTKTrihedron.cxx b/src/OBJECT/GEOM_VTKTrihedron.cxx index 8995795f8..a57f359d1 100644 --- a/src/OBJECT/GEOM_VTKTrihedron.cxx +++ b/src/OBJECT/GEOM_VTKTrihedron.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/GEOM_VTKTrihedron.hxx b/src/OBJECT/GEOM_VTKTrihedron.hxx index 5d143b0b8..99a3ab60c 100644 --- a/src/OBJECT/GEOM_VTKTrihedron.hxx +++ b/src/OBJECT/GEOM_VTKTrihedron.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/Handle_GEOM_AISShape.hxx b/src/OBJECT/Handle_GEOM_AISShape.hxx index b72ca31d6..3fda3f6f3 100644 --- a/src/OBJECT/Handle_GEOM_AISShape.hxx +++ b/src/OBJECT/Handle_GEOM_AISShape.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/Handle_GEOM_InteractiveObject.hxx b/src/OBJECT/Handle_GEOM_InteractiveObject.hxx index 925de7a02..4e2a4c8ad 100644 --- a/src/OBJECT/Handle_GEOM_InteractiveObject.hxx +++ b/src/OBJECT/Handle_GEOM_InteractiveObject.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OBJECT/Makefile.am b/src/OBJECT/Makefile.am index 3c73e9d7b..d777e8dd1 100644 --- a/src/OBJECT/Makefile.am +++ b/src/OBJECT/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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 @@ -38,6 +38,7 @@ salomeinclude_HEADERS = \ Handle_GEOM_InteractiveObject.hxx \ GEOM_AISTrihedron.hxx \ GEOM_VTKTrihedron.hxx \ + GEOM_VTKPropertyMaterial.hxx \ GEOM_AISVector.hxx \ GEOM_OBJECT_defs.hxx \ GEOM_OCCReader.h \ @@ -56,6 +57,7 @@ dist_libGEOMObject_la_SOURCES = \ GEOM_InteractiveObject.cxx \ GEOM_AISTrihedron.cxx \ GEOM_VTKTrihedron.cxx \ + GEOM_VTKPropertyMaterial.cxx \ GEOM_AISVector.cxx \ GEOM_PainterPolyDataMapper.cxx \ GEOM_DeviceActor.cxx diff --git a/src/OBJECT/OBJECT.pro b/src/OBJECT/OBJECT.pro deleted file mode 100644 index 55084e46d..000000000 --- a/src/OBJECT/OBJECT.pro +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = GEOMObject -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -CORBA_INCLUDES = $$(OMNIORBDIR)/include $$(OMNIORBDIR)/include/omniORB4 $$(OMNIORBDIR)/include/COS - -QT_INCLUDES = $$(QTDIR)/include $$(QTDIR)/include/QtCore $$(QTDIR)/include/QtGui $$(QTDIR)/include/QtOpenGL $$(QTDIR)/include/QtXml - -PYTHON_INCLUDES = $$(PYTHONHOME)/include/python2.4 - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -VTK_INCLUDES = $$(VTKHOME)/include/vtk - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -GUI_CXXFLAGS = $$(GUI_ROOT_DIR)/include/salome - -KERNEL_LDFLAGS = -L$$(KERNEL_ROOT_DIR)/lib/salome - -GUI_LDFLAGS = -L$$(GUI_ROOT_DIR)/lib/salome - -INCLUDEPATH += $${CORBA_INCLUDES} $${QT_INCLUDES} $${PYTHON_INCLUDES} $${CAS_CPPFLAGS} $${VTK_INCLUDES} $${KERNEL_CXXFLAGS} $${GUI_CXXFLAGS} - -LIBS += $${KERNEL_LDFLAGS} -lSALOMELocalTrace $${GUI_LDFLAGS} -lqtx -lVTKViewer -lSVTK -lSalomeObject - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += OBJECT_EXPORTS OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS OMNIORB_VERSION=4 __x86__ __linux__ COMP_CORBA_DOUBLE COMP_CORBA_LONG - -HEADERS = GEOM_Actor.h -HEADERS += GEOM_AISShape.hxx -HEADERS += Handle_GEOM_AISShape.hxx -HEADERS += GEOM_InteractiveObject.hxx -HEADERS += Handle_GEOM_InteractiveObject.hxx -HEADERS += GEOM_AISTrihedron.hxx -HEADERS += GEOM_VTKTrihedron.hxx -HEADERS += GEOM_AISVector.hxx -HEADERS += GEOM_OBJECT_defs.hxx - -SOURCES = GEOM_Actor.cxx -SOURCES += GEOM_OCCReader.cxx -SOURCES += GEOM_AISShape.cxx -SOURCES += GEOM_InteractiveObject.cxx -SOURCES += GEOM_AISTrihedron.cxx -SOURCES += GEOM_VTKTrihedron.cxx -SOURCES += GEOM_AISVector.cxx - -includes.files = $$HEADERS -includes.path = ../../include - -INSTALLS += includes diff --git a/src/OCC2VTK/GEOM_EdgeSource.cxx b/src/OCC2VTK/GEOM_EdgeSource.cxx index abcd23fc7..d7d3a4174 100755 --- a/src/OCC2VTK/GEOM_EdgeSource.cxx +++ b/src/OCC2VTK/GEOM_EdgeSource.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -15,6 +15,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #include "GEOM_EdgeSource.h" diff --git a/src/OCC2VTK/GEOM_EdgeSource.h b/src/OCC2VTK/GEOM_EdgeSource.h index 52cb8e0ae..282c4c906 100755 --- a/src/OCC2VTK/GEOM_EdgeSource.h +++ b/src/OCC2VTK/GEOM_EdgeSource.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/GEOM_FaceSource.cxx b/src/OCC2VTK/GEOM_FaceSource.cxx index 024fbff00..868232a63 100755 --- a/src/OCC2VTK/GEOM_FaceSource.cxx +++ b/src/OCC2VTK/GEOM_FaceSource.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/GEOM_FaceSource.h b/src/OCC2VTK/GEOM_FaceSource.h index 344bd9a81..557c0605d 100755 --- a/src/OCC2VTK/GEOM_FaceSource.h +++ b/src/OCC2VTK/GEOM_FaceSource.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/GEOM_ShadingFace.cxx b/src/OCC2VTK/GEOM_ShadingFace.cxx index 76b37678e..ad2ae5b18 100755 --- a/src/OCC2VTK/GEOM_ShadingFace.cxx +++ b/src/OCC2VTK/GEOM_ShadingFace.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/GEOM_ShadingFace.h b/src/OCC2VTK/GEOM_ShadingFace.h index 99a542d21..64ae2d0ba 100755 --- a/src/OCC2VTK/GEOM_ShadingFace.h +++ b/src/OCC2VTK/GEOM_ShadingFace.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/GEOM_VertexSource.cxx b/src/OCC2VTK/GEOM_VertexSource.cxx index 0ea34653e..daf61b192 100755 --- a/src/OCC2VTK/GEOM_VertexSource.cxx +++ b/src/OCC2VTK/GEOM_VertexSource.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/GEOM_VertexSource.h b/src/OCC2VTK/GEOM_VertexSource.h index 08b711dd3..9241b2d3a 100755 --- a/src/OCC2VTK/GEOM_VertexSource.h +++ b/src/OCC2VTK/GEOM_VertexSource.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/GEOM_WireframeFace.cxx b/src/OCC2VTK/GEOM_WireframeFace.cxx index 660b28f56..49e2911ae 100755 --- a/src/OCC2VTK/GEOM_WireframeFace.cxx +++ b/src/OCC2VTK/GEOM_WireframeFace.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/GEOM_WireframeFace.h b/src/OCC2VTK/GEOM_WireframeFace.h index 6dad0eaad..bd931a8ed 100755 --- a/src/OCC2VTK/GEOM_WireframeFace.h +++ b/src/OCC2VTK/GEOM_WireframeFace.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/Makefile.am b/src/OCC2VTK/Makefile.am index d1b5f7225..753961700 100644 --- a/src/OCC2VTK/Makefile.am +++ b/src/OCC2VTK/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/OCC2VTK/OCC2VTK.h b/src/OCC2VTK/OCC2VTK.h index e92d3aeba..2e36a8426 100755 --- a/src/OCC2VTK/OCC2VTK.h +++ b/src/OCC2VTK/OCC2VTK.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OCC2VTK/OCC2VTK_Tools.cxx b/src/OCC2VTK/OCC2VTK_Tools.cxx index fc3392791..5d86fcc0f 100755 --- a/src/OCC2VTK/OCC2VTK_Tools.cxx +++ b/src/OCC2VTK/OCC2VTK_Tools.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OCC2VTK/OCC2VTK_Tools.h b/src/OCC2VTK/OCC2VTK_Tools.h index 43cfb52aa..967359617 100755 --- a/src/OCC2VTK/OCC2VTK_Tools.h +++ b/src/OCC2VTK/OCC2VTK_Tools.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OperationGUI/Makefile.am b/src/OperationGUI/Makefile.am index a833735b0..3dc6da126 100644 --- a/src/OperationGUI/Makefile.am +++ b/src/OperationGUI/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/OperationGUI/OperationGUI.cxx b/src/OperationGUI/OperationGUI.cxx index 7c8ed82de..7c9408444 100644 --- a/src/OperationGUI/OperationGUI.cxx +++ b/src/OperationGUI/OperationGUI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI.h b/src/OperationGUI/OperationGUI.h index a35882e24..6d1445105 100644 --- a/src/OperationGUI/OperationGUI.h +++ b/src/OperationGUI/OperationGUI.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx b/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx index 28cf1cf86..861ce92f6 100644 --- a/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx +++ b/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_ArchimedeDlg.h b/src/OperationGUI/OperationGUI_ArchimedeDlg.h index fd42030c2..82c27685f 100644 --- a/src/OperationGUI/OperationGUI_ArchimedeDlg.h +++ b/src/OperationGUI/OperationGUI_ArchimedeDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_ChamferDlg.cxx b/src/OperationGUI/OperationGUI_ChamferDlg.cxx index 1b62ce4b1..69c355017 100644 --- a/src/OperationGUI/OperationGUI_ChamferDlg.cxx +++ b/src/OperationGUI/OperationGUI_ChamferDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM GEOMGUI : GUI for Geometry component // File : OperationGUI_ChamferDlg.cxx @@ -90,7 +91,7 @@ OperationGUI_ChamferDlg::OperationGUI_ChamferDlg (GeometryGUI* theGeometryGUI, Q // Create second group - myGrp2 = new QGroupBox(tr("GEOM_CHAMFER_EDGES"), centralWidget()); + myGrp2 = new QGroupBox(tr("GEOM_CHAMFER_EDGE"), centralWidget()); aLayout = new QGridLayout(myGrp2); aLayout->setMargin(9); aLayout->setSpacing(6); @@ -121,7 +122,7 @@ OperationGUI_ChamferDlg::OperationGUI_ChamferDlg (GeometryGUI* theGeometryGUI, Q // Create fourth group - myGrp4 = new QGroupBox(tr("GEOM_CHAMFER_EDGE"), centralWidget()); + myGrp4 = new QGroupBox(tr("GEOM_CHAMFER_EDGES"), centralWidget()); aLayout = new QGridLayout(myGrp4); aLayout->setMargin(9); aLayout->setSpacing(6); @@ -488,7 +489,8 @@ void OperationGUI_ChamferDlg::SelectionIntoArgument() } // clear selection - if (aCurrFocus != Faces && aCurrFocus != Edges) { + if (aCurrFocus != Face1 && aCurrFocus != Face2 && + aCurrFocus != Faces && aCurrFocus != Edges) { disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0); myGeomGUI->getApp()->selectionMgr()->clearSelected(); connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), diff --git a/src/OperationGUI/OperationGUI_ChamferDlg.h b/src/OperationGUI/OperationGUI_ChamferDlg.h index 6df1b7623..8c61ddd3d 100644 --- a/src/OperationGUI/OperationGUI_ChamferDlg.h +++ b/src/OperationGUI/OperationGUI_ChamferDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_ClippingDlg.cxx b/src/OperationGUI/OperationGUI_ClippingDlg.cxx index dc7a5cee1..9e93a9cdb 100644 --- a/src/OperationGUI/OperationGUI_ClippingDlg.cxx +++ b/src/OperationGUI/OperationGUI_ClippingDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_ClippingDlg.h b/src/OperationGUI/OperationGUI_ClippingDlg.h index adb9fa3aa..6b2f41edd 100644 --- a/src/OperationGUI/OperationGUI_ClippingDlg.h +++ b/src/OperationGUI/OperationGUI_ClippingDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_ExtrudedFeatureDlg.cxx b/src/OperationGUI/OperationGUI_ExtrudedFeatureDlg.cxx index c6ae8d783..135a8532d 100644 --- a/src/OperationGUI/OperationGUI_ExtrudedFeatureDlg.cxx +++ b/src/OperationGUI/OperationGUI_ExtrudedFeatureDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -396,10 +396,3 @@ bool OperationGUI_ExtrudedFeatureDlg::execute (ObjectList& objects) // { // GEOMBase::PublishSubObject( myObject2.get() ); // } - - - - - - - \ No newline at end of file diff --git a/src/OperationGUI/OperationGUI_ExtrudedFeatureDlg.h b/src/OperationGUI/OperationGUI_ExtrudedFeatureDlg.h index e1bdd3066..058b354ae 100644 --- a/src/OperationGUI/OperationGUI_ExtrudedFeatureDlg.h +++ b/src/OperationGUI/OperationGUI_ExtrudedFeatureDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -86,4 +86,4 @@ private slots: }; -#endif // BASICGUI_EXTRUDEDFEATUREDLG_H \ No newline at end of file +#endif // BASICGUI_EXTRUDEDFEATUREDLG_H diff --git a/src/OperationGUI/OperationGUI_Fillet1d2dDlg.cxx b/src/OperationGUI/OperationGUI_Fillet1d2dDlg.cxx index 04eb64733..16cc60845 100644 --- a/src/OperationGUI/OperationGUI_Fillet1d2dDlg.cxx +++ b/src/OperationGUI/OperationGUI_Fillet1d2dDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -15,6 +15,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM GEOMGUI : GUI for Geometry component // File : OperationGUI_Fillet1d2dDlg.cxx diff --git a/src/OperationGUI/OperationGUI_Fillet1d2dDlg.h b/src/OperationGUI/OperationGUI_Fillet1d2dDlg.h index 4e5709ab1..85fdf27f7 100644 --- a/src/OperationGUI/OperationGUI_Fillet1d2dDlg.h +++ b/src/OperationGUI/OperationGUI_Fillet1d2dDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OperationGUI/OperationGUI_FilletDlg.cxx b/src/OperationGUI/OperationGUI_FilletDlg.cxx index 6479efc42..49a302a9c 100644 --- a/src/OperationGUI/OperationGUI_FilletDlg.cxx +++ b/src/OperationGUI/OperationGUI_FilletDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_FilletDlg.h b/src/OperationGUI/OperationGUI_FilletDlg.h index 054b1c562..e5bb66d29 100644 --- a/src/OperationGUI/OperationGUI_FilletDlg.h +++ b/src/OperationGUI/OperationGUI_FilletDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.cxx b/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.cxx index 20bb13117..a3f97c7da 100644 --- a/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.cxx +++ b/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.h b/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.h index e6fbd3749..d68a86982 100644 --- a/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.h +++ b/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/OperationGUI/OperationGUI_GetSharedShapesDlg.cxx b/src/OperationGUI/OperationGUI_GetSharedShapesDlg.cxx index c4a06b7d3..5872aaaa3 100644 --- a/src/OperationGUI/OperationGUI_GetSharedShapesDlg.cxx +++ b/src/OperationGUI/OperationGUI_GetSharedShapesDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_GetSharedShapesDlg.h b/src/OperationGUI/OperationGUI_GetSharedShapesDlg.h index 3382dd801..11a7eadc8 100644 --- a/src/OperationGUI/OperationGUI_GetSharedShapesDlg.h +++ b/src/OperationGUI/OperationGUI_GetSharedShapesDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_MaterialDlg.cxx b/src/OperationGUI/OperationGUI_MaterialDlg.cxx index ce13a8f4b..dfd5b1ae9 100644 --- a/src/OperationGUI/OperationGUI_MaterialDlg.cxx +++ b/src/OperationGUI/OperationGUI_MaterialDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_MaterialDlg.h b/src/OperationGUI/OperationGUI_MaterialDlg.h index 1286033a9..d40f50a28 100644 --- a/src/OperationGUI/OperationGUI_MaterialDlg.h +++ b/src/OperationGUI/OperationGUI_MaterialDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/OperationGUI/OperationGUI_PartitionDlg.cxx b/src/OperationGUI/OperationGUI_PartitionDlg.cxx index 68c545faa..5c940f1ea 100644 --- a/src/OperationGUI/OperationGUI_PartitionDlg.cxx +++ b/src/OperationGUI/OperationGUI_PartitionDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM GEOMGUI : GUI for Geometry component // File : OperationGUI_PartitionDlg.cxx diff --git a/src/OperationGUI/OperationGUI_PartitionDlg.h b/src/OperationGUI/OperationGUI_PartitionDlg.h index 3c857b5ca..7bd209796 100644 --- a/src/OperationGUI/OperationGUI_PartitionDlg.h +++ b/src/OperationGUI/OperationGUI_PartitionDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/Makefile.am b/src/PrimitiveGUI/Makefile.am index ffa1faab9..eac797a6a 100644 --- a/src/PrimitiveGUI/Makefile.am +++ b/src/PrimitiveGUI/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/PrimitiveGUI/PrimitiveGUI.cxx b/src/PrimitiveGUI/PrimitiveGUI.cxx index 2aa241979..4e74a168c 100644 --- a/src/PrimitiveGUI/PrimitiveGUI.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI.h b/src/PrimitiveGUI/PrimitiveGUI.h index 5b6c54b86..66376de34 100644 --- a/src/PrimitiveGUI/PrimitiveGUI.h +++ b/src/PrimitiveGUI/PrimitiveGUI.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI.pro b/src/PrimitiveGUI/PrimitiveGUI.pro deleted file mode 100644 index 883d77ac2..000000000 --- a/src/PrimitiveGUI/PrimitiveGUI.pro +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = PrimitiveGUI -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -QT_INCLUDES = $$(QTDIR)/include $$(QTDIR)/include/QtCore $$(QTDIR)/include/QtGui $$(QTDIR)/include/QtOpenGL $$(QTDIR)/include/QtXml - -VTK_INCLUDES = $$(VTKHOME)/include/vtk - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -PYTHON_INCLUDES = $$(PYTHONHOME)/include/python2.4 - -BOOST_CPPFLAGS = $$(BOOSTDIR)/include - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -GUI_CXXFLAGS = $$(GUI_ROOT_DIR)/include/salome - -CORBA_INCLUDES = $$(OMNIORBDIR)/include $$(OMNIORBDIR)/include/omniORB4 $$(OMNIORBDIR)/include/COS - -INCLUDEPATH += $${QT_INCLUDES} $${VTK_INCLUDES} $${CAS_CPPFLAGS} $${PYTHON_INCLUDES} $${BOOST_CPPFLAGS} $${KERNEL_CXXFLAGS} $${GUI_CXXFLAGS} $${CORBA_INCLUDES} ../GEOMGUI ../DlgRef ../GEOMBase ../OBJECT ../GEOMClient ../GEOMImpl ../GEOMFiltersSelection $$(GEOM_ROOT_DIR)/idl $$(GEOM_ROOT_DIR)/salome_adm/unix - -LIBS += -L$$(GEOM_ROOT_DIR)/lib -lGEOMFiltersSelection -lGEOMBase - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS OMNIORB_VERSION=4 __x86__ __linux__ COMP_CORBA_DOUBLE COMP_CORBA_LONG - -SOURCES = PrimitiveGUI.cxx -SOURCES += PrimitiveGUI_BoxDlg.cxx -SOURCES += PrimitiveGUI_CylinderDlg.cxx -SOURCES += PrimitiveGUI_SphereDlg.cxx -SOURCES += PrimitiveGUI_TorusDlg.cxx -SOURCES += PrimitiveGUI_ConeDlg.cxx - -includes.files = $$HEADERS -includes.path = ../../include - -INSTALLS += includes diff --git a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx index 6bbc7b0f4..d06b646ab 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h b/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h index b02085093..da2ce10d6 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h +++ b/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx index ba2c4f934..f64a9667d 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h b/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h index 85b2cc83f..0e59a1481 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h +++ b/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx index 42718d046..8b810679d 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h index 35c59e121..d7035831b 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h +++ b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI_DiskDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_DiskDlg.cxx index 30e7d7cd7..f73861a4a 100755 --- a/src/PrimitiveGUI/PrimitiveGUI_DiskDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_DiskDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/PrimitiveGUI/PrimitiveGUI_DiskDlg.h b/src/PrimitiveGUI/PrimitiveGUI_DiskDlg.h index 258c04bb5..ae22d2e36 100755 --- a/src/PrimitiveGUI/PrimitiveGUI_DiskDlg.h +++ b/src/PrimitiveGUI/PrimitiveGUI_DiskDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx index 1e1004b01..d73c69b08 100755 --- a/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.h b/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.h index 450d0fad5..dc2dc600f 100755 --- a/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.h +++ b/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx index ed0664120..0279654c9 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h b/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h index 363cf5c15..870828ad7 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h +++ b/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx index 4e9651d6f..632a99ae8 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h b/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h index f6e2ffa21..96c3d6396 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h +++ b/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/Makefile.am b/src/RepairGUI/Makefile.am index 924fd58aa..a4453ae5c 100644 --- a/src/RepairGUI/Makefile.am +++ b/src/RepairGUI/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/RepairGUI/RepairGUI.cxx b/src/RepairGUI/RepairGUI.cxx index 197c96e78..3c72cbac3 100644 --- a/src/RepairGUI/RepairGUI.cxx +++ b/src/RepairGUI/RepairGUI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI.h b/src/RepairGUI/RepairGUI.h index a5c5bdf6c..97ac66b0c 100644 --- a/src/RepairGUI/RepairGUI.h +++ b/src/RepairGUI/RepairGUI.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx index d7fe9d2f7..60173a643 100644 --- a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx +++ b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.h b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.h index 29a5912e3..35b43d85d 100644 --- a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.h +++ b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_CloseContourDlg.cxx b/src/RepairGUI/RepairGUI_CloseContourDlg.cxx index e9eab46cc..562c94cf6 100644 --- a/src/RepairGUI/RepairGUI_CloseContourDlg.cxx +++ b/src/RepairGUI/RepairGUI_CloseContourDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_CloseContourDlg.h b/src/RepairGUI/RepairGUI_CloseContourDlg.h index d001b9c8a..079ea5cb4 100644 --- a/src/RepairGUI/RepairGUI_CloseContourDlg.h +++ b/src/RepairGUI/RepairGUI_CloseContourDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx b/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx index 61fd7ed5b..522f4e87b 100644 --- a/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx +++ b/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_DivideEdgeDlg.h b/src/RepairGUI/RepairGUI_DivideEdgeDlg.h index fb0541641..5b39121e3 100644 --- a/src/RepairGUI/RepairGUI_DivideEdgeDlg.h +++ b/src/RepairGUI/RepairGUI_DivideEdgeDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx b/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx index c408ab0fa..3ef492fcc 100644 --- a/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx +++ b/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_FreeBoundDlg.h b/src/RepairGUI/RepairGUI_FreeBoundDlg.h index 462f84389..af65e1602 100644 --- a/src/RepairGUI/RepairGUI_FreeBoundDlg.h +++ b/src/RepairGUI/RepairGUI_FreeBoundDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx b/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx index 845df5ee8..399182766 100644 --- a/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx +++ b/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_FreeFacesDlg.h b/src/RepairGUI/RepairGUI_FreeFacesDlg.h index e2f061bc8..2987c7c1f 100644 --- a/src/RepairGUI/RepairGUI_FreeFacesDlg.h +++ b/src/RepairGUI/RepairGUI_FreeFacesDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_GlueDlg.cxx b/src/RepairGUI/RepairGUI_GlueDlg.cxx index e84841a64..77a027681 100644 --- a/src/RepairGUI/RepairGUI_GlueDlg.cxx +++ b/src/RepairGUI/RepairGUI_GlueDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_GlueDlg.h b/src/RepairGUI/RepairGUI_GlueDlg.h index 863e398e9..99febef76 100644 --- a/src/RepairGUI/RepairGUI_GlueDlg.h +++ b/src/RepairGUI/RepairGUI_GlueDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_LimitToleranceDlg.cxx b/src/RepairGUI/RepairGUI_LimitToleranceDlg.cxx index 74a1a6cb6..c275fc64c 100644 --- a/src/RepairGUI/RepairGUI_LimitToleranceDlg.cxx +++ b/src/RepairGUI/RepairGUI_LimitToleranceDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_LimitToleranceDlg.h b/src/RepairGUI/RepairGUI_LimitToleranceDlg.h index 252dab9ca..7d5d8d549 100644 --- a/src/RepairGUI/RepairGUI_LimitToleranceDlg.h +++ b/src/RepairGUI/RepairGUI_LimitToleranceDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx index dec139b8d..3861e384a 100644 --- a/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx +++ b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h index ede1de943..3e8d7ba81 100644 --- a/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h +++ b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx b/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx index adbae952a..2fc819511 100644 --- a/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx +++ b/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_RemoveHolesDlg.h b/src/RepairGUI/RepairGUI_RemoveHolesDlg.h index 3bb1d905b..834ebf531 100644 --- a/src/RepairGUI/RepairGUI_RemoveHolesDlg.h +++ b/src/RepairGUI/RepairGUI_RemoveHolesDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx index 99193aaf9..44ffc7e1f 100644 --- a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx +++ b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h index af6f99260..2eab1b48d 100644 --- a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h +++ b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_SewingDlg.cxx b/src/RepairGUI/RepairGUI_SewingDlg.cxx index f9ba58a86..15648d3e1 100644 --- a/src/RepairGUI/RepairGUI_SewingDlg.cxx +++ b/src/RepairGUI/RepairGUI_SewingDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_SewingDlg.h b/src/RepairGUI/RepairGUI_SewingDlg.h index 1d76fdb95..fa8158057 100644 --- a/src/RepairGUI/RepairGUI_SewingDlg.h +++ b/src/RepairGUI/RepairGUI_SewingDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx b/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx index 17739eb7b..81321e9e0 100755 --- a/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx +++ b/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM GEOMGUI : GUI for Geometry component // File : RepairGUI_ShapeProcessDlg.cxx @@ -40,6 +41,8 @@ #include #include +#include + #include #include @@ -459,14 +462,14 @@ const char* get_convert( const char* theParam, const QString& theValue ) // function : set_convert // purpose : conversion of angle values to degrees (non-angle values are not converted) //================================================================================= -const char* set_convert( const char* theParam, const char* theValue ) +QString set_convert( const char* theParam, const char* theValue ) { if ( !strcmp( theParam, "SplitAngle.Angle" ) ) { + Kernel_Utils::Localizer loc; double doubleValue = atof( theValue ) * 180. / M_PI; - TCollection_AsciiString str( doubleValue ); - return CORBA::string_dup( str.ToCString() ); + return QString::number( doubleValue ); } - return CORBA::string_dup( theValue ); + return QString( theValue ); } //================================================================================= @@ -498,8 +501,7 @@ void RepairGUI_ShapeProcessDlg::loadDefaults() for ( int j = 0; j < aParams->length(); j++ ) { QWidget* aCtrl = getControl( (const char*)aParams[j] ); - const char* aValue = set_convert( (const char*)aParams[j], aValues[j] ); - setValue( aCtrl, aValue ); + setValue( aCtrl, set_convert( (const char*)aParams[j], aValues[j] ) ); } } } diff --git a/src/RepairGUI/RepairGUI_ShapeProcessDlg.h b/src/RepairGUI/RepairGUI_ShapeProcessDlg.h index ded1923c9..4ca7e9a8d 100755 --- a/src/RepairGUI/RepairGUI_ShapeProcessDlg.h +++ b/src/RepairGUI/RepairGUI_ShapeProcessDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx b/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx index 77fa409bc..5af3c37d6 100644 --- a/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx +++ b/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/RepairGUI/RepairGUI_SuppressFacesDlg.h b/src/RepairGUI/RepairGUI_SuppressFacesDlg.h index 2738dbb49..837036dc8 100644 --- a/src/RepairGUI/RepairGUI_SuppressFacesDlg.h +++ b/src/RepairGUI/RepairGUI_SuppressFacesDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/SKETCHER/Makefile.am b/src/SKETCHER/Makefile.am index 470936a5a..503d0b9b5 100644 --- a/src/SKETCHER/Makefile.am +++ b/src/SKETCHER/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/SKETCHER/SKETCHER.pro b/src/SKETCHER/SKETCHER.pro deleted file mode 100644 index 52fbbccb7..000000000 --- a/src/SKETCHER/SKETCHER.pro +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = GEOMSketcher -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -KERNEL_LDFLAGS = -L$$(KERNEL_ROOT_DIR)/lib/salome - -STDLIB = -lstdc++ - -CAS_KERNEL = -L$${CASROOT}/Linux/lib -lTKernel - -CAS_MODELER = -L$${CASROOT}/Linux/lib -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo -lTKPrim -lTKBO -lTKBool -lTKHLR -lTKFillet -lTKOffset -lTKFeat - -INCLUDEPATH += $${CAS_CPPFLAGS} $${KERNEL_CXXFLAGS} - -LIBS += $${KERNEL_LDFLAGS} -lSALOMELocalTrace $${STDLIB} $${CAS_KERNEL} $${CAS_MODELER} - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS - -HEADERS = Sketcher_Profile.hxx - -SOURCES = Sketcher_Profile.cxx - -includes.files = $$HEADERS -includes.path = ../../include - -INSTALLS += includes diff --git a/src/SKETCHER/Sketcher_Profile.cxx b/src/SKETCHER/Sketcher_Profile.cxx index ff396a44b..163829d20 100644 --- a/src/SKETCHER/Sketcher_Profile.cxx +++ b/src/SKETCHER/Sketcher_Profile.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM SKETCHER : basic sketcher // File : Sketcher_Profile.cxx diff --git a/src/SKETCHER/Sketcher_Profile.hxx b/src/SKETCHER/Sketcher_Profile.hxx index 2a2585bac..f323a058e 100644 --- a/src/SKETCHER/Sketcher_Profile.hxx +++ b/src/SKETCHER/Sketcher_Profile.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/STEPExport/Makefile.am b/src/STEPExport/Makefile.am index 851d258f8..96bf0e2b5 100644 --- a/src/STEPExport/Makefile.am +++ b/src/STEPExport/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/STEPExport/STEPExport.cxx b/src/STEPExport/STEPExport.cxx index b36772eb8..4a0805c84 100644 --- a/src/STEPExport/STEPExport.cxx +++ b/src/STEPExport/STEPExport.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/STEPExport/STEPExport.pro b/src/STEPExport/STEPExport.pro deleted file mode 100644 index 5ccadf8a3..000000000 --- a/src/STEPExport/STEPExport.pro +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = STEPExport -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -KERNEL_LDFLAGS = -L$$(KERNEL_ROOT_DIR)/lib/salome - -STDLIB = -lstdc++ - -CAS_LDPATH = -L$$(CASROOT)/Linux/lib - -INCLUDEPATH += $${CAS_CPPFLAGS} $${KERNEL_CXXFLAGS} - -LIBS += $${STDLIB} $${CAS_LDPATH} -lTKSTEP $${KERNEL_LDFLAGS} -lSALOMELocalTrace - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += STEPEXPORT_EXPORTS OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS - -SOURCES = STEPExport.cxx diff --git a/src/STEPImport/Makefile.am b/src/STEPImport/Makefile.am index 7b8b8e0cc..c96d2fa5c 100644 --- a/src/STEPImport/Makefile.am +++ b/src/STEPImport/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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 @@ -15,6 +15,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Pavel TELKOV diff --git a/src/STEPImport/STEPImport.cxx b/src/STEPImport/STEPImport.cxx index 4bccba460..3b51c6e57 100644 --- a/src/STEPImport/STEPImport.cxx +++ b/src/STEPImport/STEPImport.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // 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: STEPImport.cxx // Created: Wed May 19 14:41:10 2004 diff --git a/src/STEPImport/STEPImport.pro b/src/STEPImport/STEPImport.pro deleted file mode 100644 index d132ae966..000000000 --- a/src/STEPImport/STEPImport.pro +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = STEPImport -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -KERNEL_LDFLAGS = -L$$(KERNEL_ROOT_DIR)/lib/salome - -STDLIB = -lstdc++ - -CAS_LDPATH = -L$$(CASROOT)/Linux/lib - -INCLUDEPATH += $${CAS_CPPFLAGS} $${KERNEL_CXXFLAGS} - -LIBS += $${STDLIB} $${CAS_LDPATH} -lTKSTEP $${KERNEL_LDFLAGS} -lSALOMELocalTrace - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += STEPIMPORT_EXPORTS OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS - -SOURCES = STEPImport.cxx diff --git a/src/STLExport/Makefile.am b/src/STLExport/Makefile.am index 9a11a6a77..d482d48fe 100644 --- a/src/STLExport/Makefile.am +++ b/src/STLExport/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/STLExport/STLExport.cxx b/src/STLExport/STLExport.cxx index d7135b94d..9d0fc1f1b 100644 --- a/src/STLExport/STLExport.cxx +++ b/src/STLExport/STLExport.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/STLExport/STLExport.pro b/src/STLExport/STLExport.pro deleted file mode 100644 index b1f9936b8..000000000 --- a/src/STLExport/STLExport.pro +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = STLExport -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -KERNEL_LDFLAGS = -L$$(KERNEL_ROOT_DIR)/lib/salome - -STDLIB = -lstdc++ - -CAS_LDPATH = -L$$(CASROOT)/Linux/lib - -INCLUDEPATH += $${CAS_CPPFLAGS} $${KERNEL_CXXFLAGS} - -LIBS += $${STDLIB} $${CAS_LDPATH} -lTKSTL $${KERNEL_LDFLAGS} -lSALOMELocalTrace - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS - -SOURCES = STLExport.cxx diff --git a/src/ShHealOper/Makefile.am b/src/ShHealOper/Makefile.am index 4f35d0e87..d2f1cd4ae 100644 --- a/src/ShHealOper/Makefile.am +++ b/src/ShHealOper/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/ShHealOper/ShHealOper.pro b/src/ShHealOper/ShHealOper.pro deleted file mode 100644 index ea93ca4c4..000000000 --- a/src/ShHealOper/ShHealOper.pro +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = ShHealOper -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -STDLIB = -lstdc++ - -CAS_KERNEL = -L$${CASROOT}/Linux/lib -lTKernel - -CAS_MATH = -L$${CASROOT}/Linux/lib -lTKMath - -CAS_TKTopAlgo = -L$${CASROOT}/Linux/lib -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo - -CAS_LDPATH = -L$$(CASROOT)/Linux/lib - -INCLUDEPATH += $${CAS_CPPFLAGS} $${KERNEL_CXXFLAGS} - -LIBS += $${STDLIB} $${CAS_KERNEL} $${CAS_MATH} $${CAS_TKTopAlgo} $${CAS_LDPATH} -lTKBool -lTKShHealing -lTKLCAF - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS - -HEADERS = ShHealOper_CloseContour.hxx -HEADERS += ShHealOper_EdgeDivide.hxx -HEADERS += ShHealOper_FillHoles.hxx -HEADERS += ShHealOper_RemoveFace.hxx -HEADERS += ShHealOper_RemoveInternalWires.hxx -HEADERS += ShHealOper_Sewing.hxx -HEADERS += ShHealOper_ShapeProcess.hxx -HEADERS += ShHealOper_SpiltCurve2d.hxx -HEADERS += ShHealOper_SplitCurve2d.hxx -HEADERS += ShHealOper_SplitCurve3d.hxx -HEADERS += ShHealOper_ChangeOrientation.hxx -HEADERS += ShHealOper_Tool.hxx - -SOURCES = ShHealOper_CloseContour.cxx -SOURCES += ShHealOper_EdgeDivide.cxx -SOURCES += ShHealOper_FillHoles.cxx -SOURCES += ShHealOper_RemoveFace.cxx -SOURCES += ShHealOper_RemoveInternalWires.cxx -SOURCES += ShHealOper_Sewing.cxx -SOURCES += ShHealOper_ShapeProcess.cxx -SOURCES += ShHealOper_SplitCurve2d.cxx -SOURCES += ShHealOper_SplitCurve3d.cxx -SOURCES += ShHealOper_ChangeOrientation.cxx -SOURCES += ShHealOper_Tool.cxx - -includes.files = $$HEADERS -includes.path = ../../include - -INSTALLS += includes diff --git a/src/ShHealOper/ShHealOper_ChangeOrientation.cxx b/src/ShHealOper/ShHealOper_ChangeOrientation.cxx index b81fccd57..4d2fba884 100644 --- a/src/ShHealOper/ShHealOper_ChangeOrientation.cxx +++ b/src/ShHealOper/ShHealOper_ChangeOrientation.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // 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: ShHealOper_ChangeOrientation.cxx // Created: 11.07.06 11:46:45 diff --git a/src/ShHealOper/ShHealOper_ChangeOrientation.hxx b/src/ShHealOper/ShHealOper_ChangeOrientation.hxx index 18d928a30..bed7feb8f 100644 --- a/src/ShHealOper/ShHealOper_ChangeOrientation.hxx +++ b/src/ShHealOper/ShHealOper_ChangeOrientation.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_CloseContour.cxx b/src/ShHealOper/ShHealOper_CloseContour.cxx index cac90361f..64749f18c 100644 --- a/src/ShHealOper/ShHealOper_CloseContour.cxx +++ b/src/ShHealOper/ShHealOper_CloseContour.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_CloseContour.hxx b/src/ShHealOper/ShHealOper_CloseContour.hxx index 0c187f2a8..d2b149a29 100644 --- a/src/ShHealOper/ShHealOper_CloseContour.hxx +++ b/src/ShHealOper/ShHealOper_CloseContour.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_EdgeDivide.cxx b/src/ShHealOper/ShHealOper_EdgeDivide.cxx index 775d27147..e776429d0 100644 --- a/src/ShHealOper/ShHealOper_EdgeDivide.cxx +++ b/src/ShHealOper/ShHealOper_EdgeDivide.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_EdgeDivide.hxx b/src/ShHealOper/ShHealOper_EdgeDivide.hxx index 21444370e..9aa94e1ae 100644 --- a/src/ShHealOper/ShHealOper_EdgeDivide.hxx +++ b/src/ShHealOper/ShHealOper_EdgeDivide.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_FillHoles.cxx b/src/ShHealOper/ShHealOper_FillHoles.cxx index 2e55b642f..2aa0c38f4 100644 --- a/src/ShHealOper/ShHealOper_FillHoles.cxx +++ b/src/ShHealOper/ShHealOper_FillHoles.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // 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: ShHealOper_FillHoles.cxx // Created: 26.04.04 17:35:30 diff --git a/src/ShHealOper/ShHealOper_FillHoles.hxx b/src/ShHealOper/ShHealOper_FillHoles.hxx index 74a299d6f..9504973c1 100644 --- a/src/ShHealOper/ShHealOper_FillHoles.hxx +++ b/src/ShHealOper/ShHealOper_FillHoles.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_RemoveFace.cxx b/src/ShHealOper/ShHealOper_RemoveFace.cxx index a0db08707..d11850acd 100644 --- a/src/ShHealOper/ShHealOper_RemoveFace.cxx +++ b/src/ShHealOper/ShHealOper_RemoveFace.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_RemoveFace.hxx b/src/ShHealOper/ShHealOper_RemoveFace.hxx index 0d5700bb5..be87f1ada 100644 --- a/src/ShHealOper/ShHealOper_RemoveFace.hxx +++ b/src/ShHealOper/ShHealOper_RemoveFace.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_RemoveInternalWires.cxx b/src/ShHealOper/ShHealOper_RemoveInternalWires.cxx index 400090442..7ec7adf9c 100644 --- a/src/ShHealOper/ShHealOper_RemoveInternalWires.cxx +++ b/src/ShHealOper/ShHealOper_RemoveInternalWires.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_RemoveInternalWires.hxx b/src/ShHealOper/ShHealOper_RemoveInternalWires.hxx index 9fa2303b4..1667fbd12 100644 --- a/src/ShHealOper/ShHealOper_RemoveInternalWires.hxx +++ b/src/ShHealOper/ShHealOper_RemoveInternalWires.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_Sewing.cxx b/src/ShHealOper/ShHealOper_Sewing.cxx index a5320584e..6974f5a6c 100644 --- a/src/ShHealOper/ShHealOper_Sewing.cxx +++ b/src/ShHealOper/ShHealOper_Sewing.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_Sewing.hxx b/src/ShHealOper/ShHealOper_Sewing.hxx index ff2b7223f..26640b5f9 100644 --- a/src/ShHealOper/ShHealOper_Sewing.hxx +++ b/src/ShHealOper/ShHealOper_Sewing.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_ShapeProcess.cxx b/src/ShHealOper/ShHealOper_ShapeProcess.cxx index 3657c1bf0..4adbe27ac 100644 --- a/src/ShHealOper/ShHealOper_ShapeProcess.cxx +++ b/src/ShHealOper/ShHealOper_ShapeProcess.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_ShapeProcess.hxx b/src/ShHealOper/ShHealOper_ShapeProcess.hxx index 95f3951ec..0f05f8407 100644 --- a/src/ShHealOper/ShHealOper_ShapeProcess.hxx +++ b/src/ShHealOper/ShHealOper_ShapeProcess.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_SpiltCurve2d.hxx b/src/ShHealOper/ShHealOper_SpiltCurve2d.hxx index b411d11f2..52fef06d7 100644 --- a/src/ShHealOper/ShHealOper_SpiltCurve2d.hxx +++ b/src/ShHealOper/ShHealOper_SpiltCurve2d.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_SplitCurve2d.cxx b/src/ShHealOper/ShHealOper_SplitCurve2d.cxx index 03ddaa3d9..e89520e22 100644 --- a/src/ShHealOper/ShHealOper_SplitCurve2d.cxx +++ b/src/ShHealOper/ShHealOper_SplitCurve2d.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_SplitCurve2d.hxx b/src/ShHealOper/ShHealOper_SplitCurve2d.hxx index a8dc97296..179ec0cac 100644 --- a/src/ShHealOper/ShHealOper_SplitCurve2d.hxx +++ b/src/ShHealOper/ShHealOper_SplitCurve2d.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_SplitCurve3d.cxx b/src/ShHealOper/ShHealOper_SplitCurve3d.cxx index b7357db68..16833bdeb 100644 --- a/src/ShHealOper/ShHealOper_SplitCurve3d.cxx +++ b/src/ShHealOper/ShHealOper_SplitCurve3d.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_SplitCurve3d.hxx b/src/ShHealOper/ShHealOper_SplitCurve3d.hxx index aa05aecd4..22fa4929d 100644 --- a/src/ShHealOper/ShHealOper_SplitCurve3d.hxx +++ b/src/ShHealOper/ShHealOper_SplitCurve3d.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_Tool.cxx b/src/ShHealOper/ShHealOper_Tool.cxx index 859ea2612..ed741cc6e 100644 --- a/src/ShHealOper/ShHealOper_Tool.cxx +++ b/src/ShHealOper/ShHealOper_Tool.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShHealOper/ShHealOper_Tool.hxx b/src/ShHealOper/ShHealOper_Tool.hxx index cefcc4203..f89da9a50 100644 --- a/src/ShHealOper/ShHealOper_Tool.hxx +++ b/src/ShHealOper/ShHealOper_Tool.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/ShapeRecognition/Makefile.am b/src/ShapeRecognition/Makefile.am index 214987055..4d7017204 100644 --- a/src/ShapeRecognition/Makefile.am +++ b/src/ShapeRecognition/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/ShapeRecognition/ShapeRec_FeatureDetector.cxx b/src/ShapeRecognition/ShapeRec_FeatureDetector.cxx index 48207cc77..b405135e5 100644 --- a/src/ShapeRecognition/ShapeRec_FeatureDetector.cxx +++ b/src/ShapeRecognition/ShapeRec_FeatureDetector.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // 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 : ShapeRec_FeatureDetector.cxx // Author : Renaud NEDELEC, Open CASCADE S.A.S. @@ -50,7 +51,7 @@ ShapeRec_FeatureDetector::ShapeRec_FeatureDetector(): } /*! - Sets the path of the image file to be proccesed + Sets the path of the image file to be processed \param thePath - Location of the image file */ void ShapeRec_FeatureDetector::SetPath( const std::string& thePath ) diff --git a/src/ShapeRecognition/ShapeRec_FeatureDetector.hxx b/src/ShapeRecognition/ShapeRec_FeatureDetector.hxx index a3ebeebb2..c4b050bde 100644 --- a/src/ShapeRecognition/ShapeRec_FeatureDetector.hxx +++ b/src/ShapeRecognition/ShapeRec_FeatureDetector.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // 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 : ShapeRec_FeatureDetector.h // Author : Renaud NEDELEC, Open CASCADE S.A.S. diff --git a/src/TransformationGUI/Makefile.am b/src/TransformationGUI/Makefile.am index 6b476c9bc..c8f0c2980 100644 --- a/src/TransformationGUI/Makefile.am +++ b/src/TransformationGUI/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/TransformationGUI/TransformationGUI.cxx b/src/TransformationGUI/TransformationGUI.cxx index bdf39e64e..e18967620 100644 --- a/src/TransformationGUI/TransformationGUI.cxx +++ b/src/TransformationGUI/TransformationGUI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI.h b/src/TransformationGUI/TransformationGUI.h index 1dee7d542..fcb4240ee 100644 --- a/src/TransformationGUI/TransformationGUI.h +++ b/src/TransformationGUI/TransformationGUI.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI.pro b/src/TransformationGUI/TransformationGUI.pro deleted file mode 100644 index 2e2bdc981..000000000 --- a/src/TransformationGUI/TransformationGUI.pro +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = TransformationGUI -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -QT_INCLUDES = $$(QTDIR)/include $$(QTDIR)/include/QtCore $$(QTDIR)/include/QtGui $$(QTDIR)/include/QtOpenGL $$(QTDIR)/include/QtXml - -VTK_INCLUDES = $$(VTKHOME)/include/vtk - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -PYTHON_INCLUDES = $$(PYTHONHOME)/include/python2.4 - -BOOST_CPPFLAGS = $$(BOOSTDIR)/include - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -GUI_CXXFLAGS = $$(GUI_ROOT_DIR)/include/salome - -CORBA_INCLUDES = $$(OMNIORBDIR)/include $$(OMNIORBDIR)/include/omniORB4 $$(OMNIORBDIR)/include/COS - -INCLUDEPATH += $${QT_INCLUDES} $${VTK_INCLUDES} $${CAS_CPPFLAGS} $${PYTHON_INCLUDES} $${BOOST_CPPFLAGS} $${KERNEL_CXXFLAGS} $${GUI_CXXFLAGS} $${CORBA_INCLUDES} ../GEOMGUI ../DlgRef ../GEOMBase ../OBJECT ../GEOMClient ../GEOMImpl ../GEOMFiltersSelection $$(GEOM_ROOT_DIR)/idl $$(GEOM_ROOT_DIR)/salome_adm/unix - -LIBS += -L$$(GEOM_ROOT_DIR)/lib -lGEOMFiltersSelection -lGEOMBase - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS OMNIORB_VERSION=4 __x86__ __linux__ COMP_CORBA_DOUBLE COMP_CORBA_LONG - -SOURCES = TransformationGUI.cxx -SOURCES += TransformationGUI_MultiTranslationDlg.cxx -SOURCES += TransformationGUI_MultiRotationDlg.cxx -SOURCES += TransformationGUI_TranslationDlg.cxx -SOURCES += TransformationGUI_RotationDlg.cxx -SOURCES += TransformationGUI_MirrorDlg.cxx -SOURCES += TransformationGUI_ScaleDlg.cxx -SOURCES += TransformationGUI_OffsetDlg.cxx -SOURCES += TransformationGUI_PositionDlg.cxx - -includes.files = $$HEADERS -includes.path = ../../include - -INSTALLS += includes diff --git a/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx b/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx index e94b688f3..635935a05 100644 --- a/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_MirrorDlg.h b/src/TransformationGUI/TransformationGUI_MirrorDlg.h index a5215a0ea..2a114d2c6 100644 --- a/src/TransformationGUI/TransformationGUI_MirrorDlg.h +++ b/src/TransformationGUI/TransformationGUI_MirrorDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx b/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx index 4d2a54f49..f450a2f8c 100644 --- a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.h b/src/TransformationGUI/TransformationGUI_MultiRotationDlg.h index b7482926e..fac7bd502 100644 --- a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.h +++ b/src/TransformationGUI/TransformationGUI_MultiRotationDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx b/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx index 5684d0a94..352f88c2e 100644 --- a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.h b/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.h index c9f5cbc1d..6a7ce6e08 100644 --- a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.h +++ b/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx b/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx index 786d6a2c5..8ea9dec4a 100644 --- a/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_OffsetDlg.h b/src/TransformationGUI/TransformationGUI_OffsetDlg.h index 0f9b6dac1..e0aac63b6 100644 --- a/src/TransformationGUI/TransformationGUI_OffsetDlg.h +++ b/src/TransformationGUI/TransformationGUI_OffsetDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_PositionDlg.cxx b/src/TransformationGUI/TransformationGUI_PositionDlg.cxx index 8ccca18e2..f31214417 100644 --- a/src/TransformationGUI/TransformationGUI_PositionDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_PositionDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_PositionDlg.h b/src/TransformationGUI/TransformationGUI_PositionDlg.h index 6b980153c..1cfa81705 100644 --- a/src/TransformationGUI/TransformationGUI_PositionDlg.h +++ b/src/TransformationGUI/TransformationGUI_PositionDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_ProjectionDlg.cxx b/src/TransformationGUI/TransformationGUI_ProjectionDlg.cxx index bfb230dff..48edd3efa 100644 --- a/src/TransformationGUI/TransformationGUI_ProjectionDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_ProjectionDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -29,12 +29,15 @@ #include #include #include +#include #include #include #include #include +#include + //================================================================================= // class : TransformationGUI_ProjectionDlg() // purpose : Constructs a TransformationGUI_ProjectionDlg which is a child of 'parent', with the @@ -205,12 +208,20 @@ void TransformationGUI_ProjectionDlg::SetEditCurrentArgument() myGroup->PushButton2->setDown(false); myGroup->LineEdit2->setEnabled(false); + + TColStd_MapOfInteger aMap; + aMap.Add( GEOM_POINT ); + aMap.Add( GEOM_EDGE ); + aMap.Add( GEOM_WIRE ); + globalSelection( aMap ); } else if (send == myGroup->PushButton2) { myEditCurrentArgument = myGroup->LineEdit2; myGroup->PushButton1->setDown(false); myGroup->LineEdit1->setEnabled(false); + + globalSelection( GEOM_FACE ); } // enable line edit diff --git a/src/TransformationGUI/TransformationGUI_ProjectionDlg.h b/src/TransformationGUI/TransformationGUI_ProjectionDlg.h index f1fba92d8..43541b48a 100644 --- a/src/TransformationGUI/TransformationGUI_ProjectionDlg.h +++ b/src/TransformationGUI/TransformationGUI_ProjectionDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_RotationDlg.cxx b/src/TransformationGUI/TransformationGUI_RotationDlg.cxx index 4dd135d4c..945ca796b 100644 --- a/src/TransformationGUI/TransformationGUI_RotationDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_RotationDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // GEOM GEOMGUI : GUI for Geometry component // File : TransformationGUI_RotationDlg.cxx diff --git a/src/TransformationGUI/TransformationGUI_RotationDlg.h b/src/TransformationGUI/TransformationGUI_RotationDlg.h index 13e3237a2..1232e0d6a 100644 --- a/src/TransformationGUI/TransformationGUI_RotationDlg.h +++ b/src/TransformationGUI/TransformationGUI_RotationDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx b/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx index 90df363ca..ff31ede29 100644 --- a/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_ScaleDlg.h b/src/TransformationGUI/TransformationGUI_ScaleDlg.h index 76f2a85e5..4f4e104aa 100644 --- a/src/TransformationGUI/TransformationGUI_ScaleDlg.h +++ b/src/TransformationGUI/TransformationGUI_ScaleDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx b/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx index 945a643ab..d14cc37cf 100644 --- a/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/TransformationGUI/TransformationGUI_TranslationDlg.h b/src/TransformationGUI/TransformationGUI_TranslationDlg.h index 6959b5d6e..2bf0a91af 100644 --- a/src/TransformationGUI/TransformationGUI_TranslationDlg.h +++ b/src/TransformationGUI/TransformationGUI_TranslationDlg.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/VTKExport/Makefile.am b/src/VTKExport/Makefile.am index 357315e63..a3485f69e 100644 --- a/src/VTKExport/Makefile.am +++ b/src/VTKExport/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 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/src/VTKExport/VTKExport.cxx b/src/VTKExport/VTKExport.cxx index 4b2f27b5c..d7ab92002 100644 --- a/src/VTKExport/VTKExport.cxx +++ b/src/VTKExport/VTKExport.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS diff --git a/src/VTKExport/VTKExport.pro b/src/VTKExport/VTKExport.pro deleted file mode 100644 index e11bb9310..000000000 --- a/src/VTKExport/VTKExport.pro +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = lib -TARGET = VTKExport -DESTDIR = ../../lib -MOC_DIR = ../../moc -OBJECTS_DIR = ../../obj/$$TARGET - -CASROOT = $$(CASROOT) -CAS_CPPFLAGS = $${CASROOT}/inc - -KERNEL_CXXFLAGS = $$(KERNEL_ROOT_DIR)/include/salome - -KERNEL_LDFLAGS = -L$$(KERNEL_ROOT_DIR)/lib/salome - -STDLIB = -lstdc++ - -CAS_LDPATH = -L$$(CASROOT)/Linux/lib - -INCLUDEPATH += $${CAS_CPPFLAGS} $${KERNEL_CXXFLAGS} - -LIBS += $${STDLIB} $${CAS_LDPATH} $${KERNEL_LDFLAGS} -lSALOMELocalTrace - -CONFIG -= debug release debug_and_release -CONFIG += qt thread debug dll shared - -win32:DEFINES += WIN32 -DEFINES += OCC_VERSION_MAJOR=6 OCC_VERSION_MINOR=1 OCC_VERSION_MAINTENANCE=1 LIN LINTEL CSFDB No_exception HAVE_CONFIG_H HAVE_LIMITS_H HAVE_WOK_CONFIG_H OCC_CONVERT_SIGNALS - -SOURCES = VTKExport.cxx diff --git a/src/src.pro b/src/src.pro deleted file mode 100644 index 2aa844412..000000000 --- a/src/src.pro +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (C) 2007-2011 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 -# - -TEMPLATE = subdirs -CONFIG += ordered - -SUBDIRS = OBJECT -SUBDIRS += ARCHIMEDE -SUBDIRS += NMTDS -SUBDIRS += NMTTools -SUBDIRS += NMTAlgo -SUBDIRS += GEOMAlgo -SUBDIRS += SKETCHER -SUBDIRS += GEOM -SUBDIRS += BREPExport -SUBDIRS += BREPImport -SUBDIRS += IGESExport -SUBDIRS += IGESImport -SUBDIRS += STEPExport -SUBDIRS += STEPImport -SUBDIRS += STLExport -SUBDIRS += ShHealOper -SUBDIRS += GEOMImpl -SUBDIRS += GEOM_I -SUBDIRS += GEOMClient -SUBDIRS += DlgRef -SUBDIRS += GEOMFiltersSelection -SUBDIRS += GEOMGUI -SUBDIRS += GEOMBase -SUBDIRS += GEOMToolsGUI -SUBDIRS += DisplayGUI -SUBDIRS += BasicGUI -SUBDIRS += PrimitiveGUI -SUBDIRS += GenerationGUI -SUBDIRS += EntityGUI -SUBDIRS += BuildGUI -SUBDIRS += BooleanGUI -SUBDIRS += TransformationGUI -#SUBDIRS += OperationGUI -#SUBDIRS += RepairGUI -#SUBDIRS += MeasureGUI -#SUBDIRS += GroupGUI -#SUBDIRS += BlocksGUI -#SUBDIRS += GEOM_I_Superv -#SUBDIRS += GEOM_SWIG -- 2.39.2

    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 Bk8c0~ literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/sketcher_dlg.png b/doc/salome/gui/GEOM/images/sketcher_dlg.png index 16329d9dc86938e4127fb1e0d831574459c30efa..32105409f42d120f938d499e7eb0abe571aea78a 100644 GIT binary patch literal 40318 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 literal 39913 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 WyU+Dn&xa`lyj+gDIXpiSl>9%Jc%^{= diff --git a/doc/salome/gui/GEOM/images/sketcher_dlg2.png b/doc/salome/gui/GEOM/images/sketcher_dlg2.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0daf36f3921c329cc28913d00b23431f58a745 GIT binary patch literal 28647 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, the angle is computed in + accordance with their orientations, otherwise the minimum angle + is computed. + +\n TUI Command: geompy.GetAngle(shape1, shape2), where +Shape1 and Shape2 are shapes between which the angle is computed. +Another TUI command is geompy.GetAngleRadians(shape1,shape2), +which returns the value of angle in radians. + +See also a \ref tui_angle_page "TUI example". + +\image html angle.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/basic_prop.doc b/doc/salome/gui/GEOM/input/basic_prop.doc new file mode 100644 index 000000000..2821eabd3 --- /dev/null +++ b/doc/salome/gui/GEOM/input/basic_prop.doc @@ -0,0 +1,17 @@ +/*! + +\page basic_prop_page Basic Properties + +Returns the properties (Length, Surface & Volume) for the selected +geometrical object. + +Result: Display Length, Surface & Volume in the form of +Python Tuple. +\nTUI Command: geompy.BasicProperties(Shape), where +\em Shape is a shape whose properties are inquired. + +See also a \ref tui_basic_properties_page "TUI example". + +\image html neo-basicprop.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/boudaries.doc b/doc/salome/gui/GEOM/input/boudaries.doc new file mode 100644 index 000000000..65acdc06a --- /dev/null +++ b/doc/salome/gui/GEOM/input/boudaries.doc @@ -0,0 +1,18 @@ +/*! + +\page boundaries_page Check Free Boundaries + +Detects and highlights wires and edges that are not shared between +two faces and are considered a shape's boundary. + +TUI Command: (NoError, ClosedWires, OpenWires) = +geompy.GetFreeBoundary(Shape), where \em Shape is a shape to be +checked, \em NoError is false if an error occurred while checking free +boundaries, \em ClosedWires is a list of closed free boundary wires, +\em OpenWires is a list of open free boundary wires. + +See also a \ref tui_free_boundaries_page "TUI example". + +\image html repair9.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/bounding_box.doc b/doc/salome/gui/GEOM/input/bounding_box.doc new file mode 100644 index 000000000..eeb16c4ff --- /dev/null +++ b/doc/salome/gui/GEOM/input/bounding_box.doc @@ -0,0 +1,25 @@ +/*! + +\page bounding_box_page Bounding Box + +Returns the dimensions of the bounding box for the selected +geometrical object. + +\note To take into account any possible shape distortion +that affects the resulting bounding box, the algorithm enlarges +the bounding box to the maximum deflection value of +faces (by iterating through all faces of a shape). +This functionallity is implemented in such a way to have +a satisfactory performance. + +Result: Displays the bounding box dimensions of a +geometrical object in form of a Python Tuple (Xmin, Xmax, Ymin, +Ymax, Zmin, Zmax). +\n TUI Command: geompy.BoundingBox(Shape), where \em Shape +is the shape for which a bounding box is computed. + +See also a \ref tui_bounding_box_page "TUI example". + +\image html measures5.png + +*/ diff --git a/doc/salome/gui/GEOM/input/bring_to_front.doc b/doc/salome/gui/GEOM/input/bring_to_front.doc index efb29e1f0..e53e74e20 100644 --- a/doc/salome/gui/GEOM/input/bring_to_front.doc +++ b/doc/salome/gui/GEOM/input/bring_to_front.doc @@ -2,9 +2,20 @@ \page bring_to_front_page Bring To Front -\n This option is relevant for better viewing of the complex 3D models. -This item allow to bring to front of viewer selected geometrical object. +\n This option is relevant for better viewing of complex 3D models. +It allows to bring to the viewer foreground the selected geometrical object. -\image html bring_example.png +Let's take for example two coincident primitives: a box and a cylinder. + +In the first picture the box has been visually superimposed over the +cylinder using Bring to front option. + +\image html front1.png + +In the second picture the box has been returned to its normal state +using Clear Top Level State context menu command, however, the +cylinder has been brought to front. + + \image html front2.png */ diff --git a/doc/salome/gui/GEOM/input/center_mass.doc b/doc/salome/gui/GEOM/input/center_mass.doc new file mode 100644 index 000000000..b4d8ce4e7 --- /dev/null +++ b/doc/salome/gui/GEOM/input/center_mass.doc @@ -0,0 +1,16 @@ +/*! + +\page center_mass_page Center of Mass + +Calculates and returns the coordinates of the gravity center for +the selected geometrical object. + +Result: GEOM_Object (vertex). +\n TUI Command: geompy.MakeCDG(Shape), where \em Shape is +the shape for which a center of gravity is computed. + +See also a \ref tui_center_of_mass_page "TUI example". + +\image html measures3.png + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/check_compound_of_blocks.doc b/doc/salome/gui/GEOM/input/check_compound_of_blocks.doc new file mode 100644 index 000000000..81d8379a0 --- /dev/null +++ b/doc/salome/gui/GEOM/input/check_compound_of_blocks.doc @@ -0,0 +1,33 @@ +/*! + +\page check_compound_of_blocks_page Check Compound of Blocks + +Checks whether a shape is a compound of glued blocks. To be +considered as a compound of blocks, the given shape must satisfy the +following conditions: +

  • xtg1{`T-;MioRYZRJT(ly67-~ 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%0DhwV~u}5gXJO3Hp9X#?$$pa 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 Mwd_NmntII^YaWq?~K^9p|hrp56Kn0=d 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