]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Add the GDML primitive "Cone Segment".
authorClarisse Genrault <clarisse.genrault@cea.fr>
Wed, 30 Nov 2016 13:41:49 +0000 (14:41 +0100)
committerClarisse Genrault <clarisse.genrault@cea.fr>
Wed, 30 Nov 2016 13:41:49 +0000 (14:41 +0100)
28 files changed:
src/GDMLAPI/CMakeLists.txt [new file with mode: 0644]
src/GDMLAPI/GDMLAPI.h [new file with mode: 0644]
src/GDMLAPI/GDMLAPI.i [new file with mode: 0644]
src/GDMLAPI/GDMLAPI_ConeSegment.cpp [new file with mode: 0644]
src/GDMLAPI/GDMLAPI_ConeSegment.h [new file with mode: 0644]
src/GDMLAPI/GDMLAPI_swig.h [new file with mode: 0644]
src/GDMLAPI/Test/TestConeSegment.py [new file with mode: 0644]
src/GDMLPlugin/CMakeLists.txt [new file with mode: 0644]
src/GDMLPlugin/GDMLPlugin.h [new file with mode: 0644]
src/GDMLPlugin/GDMLPlugin_ConeSegment.cpp [new file with mode: 0644]
src/GDMLPlugin/GDMLPlugin_ConeSegment.h [new file with mode: 0644]
src/GDMLPlugin/GDMLPlugin_Plugin.cpp [new file with mode: 0644]
src/GDMLPlugin/GDMLPlugin_Plugin.h [new file with mode: 0644]
src/GDMLPlugin/conesegment_widget.xml [new file with mode: 0644]
src/GDMLPlugin/icons.cgt/SVG/dessin.svg [new file with mode: 0644]
src/GDMLPlugin/icons.cgt/SVG/tytysvg.svg [new file with mode: 0644]
src/GDMLPlugin/icons.cgt/cone_segment.png [new file with mode: 0644]
src/GDMLPlugin/icons.cgt/cone_segment.png.ok [new file with mode: 0644]
src/GDMLPlugin/icons.cgt/gui_cone_segment.png [new file with mode: 0644]
src/GDMLPlugin/icons/SVG/cone_segment.svg [new file with mode: 0644]
src/GDMLPlugin/icons/cone_segment.png [new file with mode: 0644]
src/GDMLPlugin/icons/gui_cone_segment.png [new file with mode: 0644]
src/GDMLPlugin/plugin-GDML.xml [new file with mode: 0644]
src/GeomAlgoAPI/GeomAlgoAPI_ConeSegment.cpp [new file with mode: 0644]
src/GeomAlgoAPI/GeomAlgoAPI_ConeSegment.h [new file with mode: 0644]
src/GeomAlgoAPI/Test/TestAPI_GDMLConeSegment.py [new file with mode: 0644]
src/PrimitivesAPI/Test/TestBox.py [new file with mode: 0644]
src/PythonAPI/model/gdml/__init__.py [new file with mode: 0644]

diff --git a/src/GDMLAPI/CMakeLists.txt b/src/GDMLAPI/CMakeLists.txt
new file mode 100644 (file)
index 0000000..9084ba8
--- /dev/null
@@ -0,0 +1,70 @@
+## Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+INCLUDE(Common)
+INCLUDE(UnitTest)
+
+SET(PROJECT_HEADERS
+  GDMLAPI.h
+  GDMLAPI_ConeSegment.h
+)
+
+SET(PROJECT_SOURCES
+  GDMLAPI_ConeSegment.cpp
+)
+
+SET(PROJECT_LIBRARIES
+  ModelAPI
+  ModelHighAPI
+)
+
+INCLUDE_DIRECTORIES(
+  ${PROJECT_SOURCE_DIR}/src/Events
+  ${PROJECT_SOURCE_DIR}/src/ModelAPI
+  ${PROJECT_SOURCE_DIR}/src/ModelHighAPI
+)
+
+# Plugin headers dependency
+INCLUDE_DIRECTORIES(
+  ${PROJECT_SOURCE_DIR}/src/GeomAPI
+  ${PROJECT_SOURCE_DIR}/src/GeomAlgoAPI
+  ${PROJECT_SOURCE_DIR}/src/GeomDataAPI
+  ${PROJECT_SOURCE_DIR}/src/GDMLPlugin
+)
+
+ADD_DEFINITIONS(-DGDMLAPI_EXPORTS ${CAS_DEFINITIONS})
+ADD_LIBRARY(GDMLAPI SHARED ${PROJECT_SOURCES} ${PROJECT_HEADERS})
+TARGET_LINK_LIBRARIES(GDMLAPI ${PROJECT_LIBRARIES})
+
+# SWIG wrapper
+
+INCLUDE(PythonAPI)
+
+SET_SOURCE_FILES_PROPERTIES(GDMLAPI.i PROPERTIES CPLUSPLUS ON)
+SET_SOURCE_FILES_PROPERTIES(GDMLAPI.i PROPERTIES SWIG_DEFINITIONS "-shadow")
+
+SET(SWIG_LINK_LIBRARIES
+  GDMLAPI
+  ModelHighAPI
+  ModelAPI
+  ${PYTHON_LIBRARIES}
+)
+
+SET(SWIG_MODULE_GDMLAPI_EXTRA_DEPS ${SWIG_MODULE_GDMLAPI_EXTRA_DEPS}
+  ${PROJECT_SOURCE_DIR}/src/ModelHighAPI/ModelHighAPI.i
+  doxyhelp.i
+  ${PROJECT_HEADERS}
+)
+
+SWIG_ADD_MODULE(GDMLAPI python GDMLAPI.i ${PROJECT_HEADERS})
+SWIG_LINK_LIBRARIES(GDMLAPI ${SWIG_LINK_LIBRARIES})
+
+IF(WIN32)
+  SET_TARGET_PROPERTIES(_GDMLAPI PROPERTIES DEBUG_OUTPUT_NAME _GDMLAPI_d)
+ENDIF(WIN32)
+
+INSTALL(TARGETS _GDMLAPI DESTINATION ${SHAPER_INSTALL_SWIG})
+INSTALL(TARGETS GDMLAPI DESTINATION ${SHAPER_INSTALL_BIN})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/GDMLAPI.py DESTINATION ${SHAPER_INSTALL_SWIG})
+
+# Tests
+ADD_UNIT_TESTS(TestConeSegment.py)
\ No newline at end of file
diff --git a/src/GDMLAPI/GDMLAPI.h b/src/GDMLAPI/GDMLAPI.h
new file mode 100644 (file)
index 0000000..82a7f1c
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GDMLAPI.h
+// Created:     29 Nov 2016
+// Author:      Clarisse Genrault (CEA)
+
+#ifndef GDMLAPI_H
+#define GDMLAPI_H
+
+#if defined GDMLAPI_EXPORTS
+#if defined WIN32
+#define GDMLAPI_EXPORT __declspec( dllexport )
+#else
+#define GDMLAPI_EXPORT
+#endif
+#else
+#if defined WIN32
+#define GDMLAPI_EXPORT __declspec( dllimport )
+#else
+#define GDMLAPI_EXPORT
+#endif
+#endif
+
+#endif // GDMLAPI_H
diff --git a/src/GDMLAPI/GDMLAPI.i b/src/GDMLAPI/GDMLAPI.i
new file mode 100644 (file)
index 0000000..55b04e8
--- /dev/null
@@ -0,0 +1,31 @@
+/* GDMLAPI.i */
+// File:        GDMLAPI.i
+// Created:     29 Nov 2016
+// Author:      Clarisse Genrault (CEA)
+
+%module GDMLAPI
+
+%{
+  #include "GDMLAPI_swig.h"
+%}
+
+%include "doxyhelp.i"
+
+// import other modules
+%import "ModelHighAPI.i"
+
+// to avoid error on this
+#define GDMLAPI_EXPORT
+
+// standard definitions
+%include "typemaps.i"
+%include "std_string.i"
+%include "std_shared_ptr.i"
+%include "std_list.i"
+
+// shared pointers
+%shared_ptr(GDMLAPI_ConeSegment)
+
+// all supported interfaces
+%include "GDMLAPI_ConeSegment.h"
+
diff --git a/src/GDMLAPI/GDMLAPI_ConeSegment.cpp b/src/GDMLAPI/GDMLAPI_ConeSegment.cpp
new file mode 100644 (file)
index 0000000..f37e931
--- /dev/null
@@ -0,0 +1,72 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D -->
+
+// File:        GDMLAPI_ConeSegment.cpp
+// Created:     29 Nov. 2016
+// Author:      Clarisse Genrault
+
+#include "GDMLAPI_ConeSegment.h"
+
+#include <ModelHighAPI_Tools.h>
+
+//==================================================================================================
+GDMLAPI_ConeSegment::GDMLAPI_ConeSegment(const std::shared_ptr<ModelAPI_Feature>& theFeature)
+: ModelHighAPI_Interface(theFeature)
+{
+  initialize();
+}
+
+//==================================================================================================
+GDMLAPI_ConeSegment::GDMLAPI_ConeSegment(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                                         const ModelHighAPI_Double& theRMin1,
+                                         const ModelHighAPI_Double& theRMax1,
+                                         const ModelHighAPI_Double& theRMin2,
+                                         const ModelHighAPI_Double& theRMax2,
+                                         const ModelHighAPI_Double& theZ,
+                                         const ModelHighAPI_Double& theStartPhi,
+                                         const ModelHighAPI_Double& theDeltaPhi)
+: ModelHighAPI_Interface(theFeature)
+{
+  if (initialize())
+    setAttributes(theRMin1, theRMax1, theRMin2, theRMax2, theZ, theStartPhi, theDeltaPhi);
+}
+
+//==================================================================================================
+GDMLAPI_ConeSegment::~GDMLAPI_ConeSegment()
+{
+
+}
+
+//==================================================================================================
+void GDMLAPI_ConeSegment::setAttributes(const ModelHighAPI_Double& theRMin1,
+                                        const ModelHighAPI_Double& theRMax1,
+                                        const ModelHighAPI_Double& theRMin2,
+                                        const ModelHighAPI_Double& theRMax2,
+                                        const ModelHighAPI_Double& theZ,
+                                        const ModelHighAPI_Double& theStartPhi,
+                                        const ModelHighAPI_Double& theDeltaPhi)
+{
+  fillAttribute(theRMin1, rmin1());
+  fillAttribute(theRMax1, rmax1());
+  fillAttribute(theRMin2, rmin2());
+  fillAttribute(theRMax2, rmax2());
+  fillAttribute(theZ, z());
+  fillAttribute(theStartPhi, startphi());
+  fillAttribute(theDeltaPhi, deltaphi());
+
+  execute();
+}
+
+//==================================================================================================
+ConeSegmentPtr addConeSegment(const std::shared_ptr<ModelAPI_Document>& thePart,
+                              const ModelHighAPI_Double& theRMin1,
+                              const ModelHighAPI_Double& theRMax1,
+                              const ModelHighAPI_Double& theRMin2,
+                              const ModelHighAPI_Double& theRMax2,
+                              const ModelHighAPI_Double& theZ,
+                              const ModelHighAPI_Double& theStartPhi,
+                              const ModelHighAPI_Double& theDeltaPhi)
+{
+  std::shared_ptr<ModelAPI_Feature> aFeature = thePart->addFeature(GDMLAPI_ConeSegment::ID());
+  return ConeSegmentPtr(new GDMLAPI_ConeSegment(aFeature, theRMin1, theRMax1, theRMin2, theRMax2,
+                                                theZ, theStartPhi, theDeltaPhi));
+}
diff --git a/src/GDMLAPI/GDMLAPI_ConeSegment.h b/src/GDMLAPI/GDMLAPI_ConeSegment.h
new file mode 100644 (file)
index 0000000..bd0ea75
--- /dev/null
@@ -0,0 +1,86 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D -->
+
+// File:        GDMLAPI_ConeSegment.h
+// Created:     29 Nov. 2016
+// Author:      Clarisse Genrault (CEA)
+
+#ifndef GDMLAPI_ConeSegment_H_
+#define GDMLAPI_ConeSegment_H_
+
+#include "GDMLAPI.h"
+
+#include <GDMLPlugin_ConeSegment.h>
+
+#include <ModelHighAPI_Interface.h>
+#include <ModelHighAPI_Macro.h>
+
+class ModelHighAPI_Double;
+
+/// \class GDMLPlugin_ConeSegment
+/// \ingroup CPPHighAPI
+/// \brief Interface for primitive ConeSegment feature.
+class GDMLAPI_ConeSegment: public ModelHighAPI_Interface
+{
+public:
+  /// Constructor without values.
+  GDMLAPI_EXPORT
+  explicit GDMLAPI_ConeSegment(const std::shared_ptr<ModelAPI_Feature>& theFeature);
+
+  /// Constructor with values.
+  GDMLAPI_EXPORT
+  explicit GDMLAPI_ConeSegment(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                               const ModelHighAPI_Double& theRMin1,
+                               const ModelHighAPI_Double& theRMax1,
+                               const ModelHighAPI_Double& theRMin2,
+                               const ModelHighAPI_Double& theRMax2,
+                               const ModelHighAPI_Double& theZ,
+                               const ModelHighAPI_Double& theStartPhi,
+                               const ModelHighAPI_Double& theDeltaPhi);
+
+  /// Destructor.
+  GDMLAPI_EXPORT
+  virtual ~GDMLAPI_ConeSegment();
+
+  INTERFACE_7(GDMLPlugin_ConeSegment::ID(),
+              rmin1, GDMLPlugin_ConeSegment::RMIN1_ID(),
+              ModelAPI_AttributeDouble, /** Inner radius at base of cone */,
+              rmax1, GDMLPlugin_ConeSegment::RMAX1_ID(),
+              ModelAPI_AttributeDouble, /** Outer radius at base of cone */,
+              rmin2, GDMLPlugin_ConeSegment::RMIN2_ID(),
+              ModelAPI_AttributeDouble, /** Inner radius at top of cone */,
+              rmax2, GDMLPlugin_ConeSegment::RMAX2_ID(),
+              ModelAPI_AttributeDouble, /** Outer radius at top of cone */,
+              z, GDMLPlugin_ConeSegment::Z_ID(),
+              ModelAPI_AttributeDouble, /** Height of the cone segment */,
+              startphi, GDMLPlugin_ConeSegment::STARTPHI_ID(),
+              ModelAPI_AttributeDouble, /** Start angle of the segment */,
+              deltaphi, GDMLPlugin_ConeSegment::DELTAPHI_ID(),
+              ModelAPI_AttributeDouble, /** Angle of the segment */)
+
+  /// Set dimensions
+  GDMLAPI_EXPORT
+  void setAttributes(const ModelHighAPI_Double& theRMin1,
+                     const ModelHighAPI_Double& theRMax1,
+                     const ModelHighAPI_Double& theRMin2,
+                     const ModelHighAPI_Double& theRMax2,
+                     const ModelHighAPI_Double& theZ,
+                     const ModelHighAPI_Double& theStartPhi,
+                     const ModelHighAPI_Double& theDeltaPhi);
+};
+
+/// Pointer on primitive ConeSegment object
+typedef std::shared_ptr<GDMLAPI_ConeSegment> ConeSegmentPtr;
+
+/// \ingroup CPPHighAPI
+/// \brief Create GDML ConeSegment feature.
+GDMLAPI_EXPORT
+ConeSegmentPtr addConeSegment(const std::shared_ptr<ModelAPI_Document>& thePart,
+                              const ModelHighAPI_Double& theRMin1,
+                              const ModelHighAPI_Double& theRMax1,
+                              const ModelHighAPI_Double& theRMin2,
+                              const ModelHighAPI_Double& theRMax2,
+                              const ModelHighAPI_Double& theZ,
+                              const ModelHighAPI_Double& theStartPhi,
+                              const ModelHighAPI_Double& theDeltaPhi);
+
+#endif // GDMLAPI_ConeSegment_H_
diff --git a/src/GDMLAPI/GDMLAPI_swig.h b/src/GDMLAPI/GDMLAPI_swig.h
new file mode 100644 (file)
index 0000000..b441741
--- /dev/null
@@ -0,0 +1,16 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:    GDMLAPI_swig.h
+// Created: 29 Nov 2016
+// Author:  Clarisse Genrault (CEA)
+
+#ifndef GDMLAPI_swig_H_
+#define GDMLAPI_swig_H_
+
+  #include <ModelHighAPI_swig.h>
+
+  #include "GDMLAPI.h"
+  #include "GDMLAPI_ConeSegment.h"
+
+#endif // GDMLAPI_swig_H_
+
diff --git a/src/GDMLAPI/Test/TestConeSegment.py b/src/GDMLAPI/Test/TestConeSegment.py
new file mode 100644 (file)
index 0000000..ee5d0c4
--- /dev/null
@@ -0,0 +1,106 @@
+"""
+Test case for GDML Primitive Cone Segment feature. 
+Written on High API.
+"""
+from ModelAPI import *
+from GeomAPI import *
+
+import model
+
+# Get session
+aSession = ModelAPI_Session.get()
+
+# Create a part
+aDocument = aSession.activeDocument()
+aSession.startOperation()
+model.addPart(aDocument)
+aDocument = aSession.activeDocument()
+aSession.finishOperation()
+
+# Create several "cone segment"
+aSession.startOperation()
+aCS1 = model.addConeSegment(aDocument,7.,11.,5.,8.,12.,0.,270.).result()
+aSession.finishOperation()
+assert (aCS1 is not None)
+
+aSession.startOperation()
+aCS2 = model.addConeSegment(aDocument,5.,10.,7.,15.,15.,45.,180.).result()
+aSession.finishOperation()
+assert (aCS2 is not None)
+
+aSession.startOperation()
+aCS3 = model.addConeSegment(aDocument,5.,10.,7.,15.,15.,-45.,180.).result()
+aSession.finishOperation()
+assert (aCS3 is not None)
+
+aSession.startOperation()
+aCS4 = model.addConeSegment(aDocument,0.,10.,2.,7.,3.,0.,270.).result()
+aSession.finishOperation()
+assert (aCS4 is not None)
+
+aSession.startOperation()
+aCS5 = model.addConeSegment(aDocument,5.,8.,0.,6.,10.,45.,270.).result()
+aSession.finishOperation()
+assert (aCS5 is not None)
+
+aSession.startOperation()
+aCS6 = model.addConeSegment(aDocument,0.,6.,0.,4.,17.,0.,270.).result()
+aSession.finishOperation()
+assert (aCS6 is not None)
+
+aSession.startOperation()
+aCS7 = model.addConeSegment(aDocument,7.,11.,5.,8.,12.,0.,360.).result()
+aSession.finishOperation()
+assert (aCS7 is not None)
+
+aSession.startOperation()
+aCS8 = model.addConeSegment(aDocument,-5.,11.,5.,8.,12.,0.,270.)
+aSession.finishOperation()
+assert (len(aCS8.results()) == 0)
+
+aSession.startOperation()
+aCS9 = model.addConeSegment(aDocument,11.,7.,5.,8.,12.,0.,270.)
+aSession.finishOperation()
+assert (len(aCS9.results()) == 0)
+
+aSession.startOperation()
+aCS10 = model.addConeSegment(aDocument,7.,11.,8.,5.,12.,0.,270.)
+aSession.finishOperation()
+assert (len(aCS10.results()) == 0)
+
+aSession.startOperation()
+aCS11 = model.addConeSegment(aDocument,7.,11.,-3.,5.,12.,0.,270.)
+aSession.finishOperation()
+assert (len(aCS11.results()) == 0)
+
+aSession.startOperation()
+aCS12 = model.addConeSegment(aDocument,7.,11.,5.,8.,0.,0.,270.)
+aSession.finishOperation()
+assert (len(aCS12.results()) == 0)
+
+aSession.startOperation()
+aCS13 = model.addConeSegment(aDocument,7.,11.,5.,8.,-10.,0.,270.)
+aSession.finishOperation()
+assert (len(aCS13.results()) == 0)
+
+aSession.startOperation()
+aCS14 = model.addConeSegment(aDocument,7.,11.,5.,8.,12.,-45.,-45.)
+aSession.finishOperation()
+assert (len(aCS14.results()) == 0)
+
+aSession.startOperation()
+aCS15 = model.addConeSegment(aDocument,7.,11.,5.,8.,12.,45.,450.)
+aSession.finishOperation()
+assert (len(aCS15.results()) == 0)
+
+aSession.startOperation()
+model.addParameter(aDocument,"rmin1","7.")
+model.addParameter(aDocument,"rmax1","11.")
+model.addParameter(aDocument,"rmin2","5.")
+model.addParameter(aDocument,"rmax2","8.")
+model.addParameter(aDocument,"z","12.")
+model.addParameter(aDocument,"startphi","0.")
+model.addParameter(aDocument,"deltaphi","270.")
+aCS16 = model.addConeSegment(aDocument,"rmin1","rmax1","rmin2","rmax2","z","startphi","deltaphi").result()
+aSession.finishOperation()
+assert (aCS16 is not None)
diff --git a/src/GDMLPlugin/CMakeLists.txt b/src/GDMLPlugin/CMakeLists.txt
new file mode 100644 (file)
index 0000000..8da061a
--- /dev/null
@@ -0,0 +1,57 @@
+# Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+# File:        CMakeLists.txt
+# Created:     23 Nov 2016
+# Author:      Clarisse Genrault (CEA)
+
+INCLUDE(Common)
+INCLUDE(UnitTest)
+
+SET(CMAKE_AUTOMOC ON)
+
+SET(PROJECT_HEADERS
+    GDMLPlugin.h
+    GDMLPlugin_Plugin.h
+    GDMLPlugin_ConeSegment.h
+)
+
+SET(PROJECT_SOURCES
+    GDMLPlugin_Plugin.cpp
+    GDMLPlugin_ConeSegment.cpp
+)
+
+SET(XML_RESOURCES
+  plugin-GDML.xml
+  conesegment_widget.xml
+)
+
+INCLUDE_DIRECTORIES(
+  ../ModelAPI
+  ../GeomAPI
+  ../GeomAlgoAPI
+  ../Events
+  ../Config
+  ../ModuleBase
+  ${CAS_INCLUDE_DIRS}
+)
+
+SET(PROJECT_LIBRARIES
+    Events
+    Config
+    ModelAPI 
+    GeomAPI 
+    GeomAlgoAPI
+    ModuleBase
+    ${QT_LIBRARIES}
+)
+
+ADD_DEFINITIONS(-DGDMLPLUGIN_EXPORTS)
+ADD_LIBRARY(GDMLPlugin MODULE ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${XML_RESOURCES})
+TARGET_LINK_LIBRARIES(GDMLPlugin ${PROJECT_LIBRARIES})
+
+INSTALL(TARGETS GDMLPlugin DESTINATION ${SHAPER_INSTALL_PLUGIN_FILES})
+INSTALL(FILES ${XML_RESOURCES} DESTINATION ${SHAPER_INSTALL_XML_RESOURCES})
+INSTALL(DIRECTORY icons/ DESTINATION ${SHAPER_INSTALL_XML_RESOURCES}/icons/GDML)
+
+ADD_UNIT_TESTS()
+
diff --git a/src/GDMLPlugin/GDMLPlugin.h b/src/GDMLPlugin/GDMLPlugin.h
new file mode 100644 (file)
index 0000000..e567010
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GDMLPlugin.h
+// Created:     23 Nov 2016
+// Author:      Clarisse Genrault (CEA)
+
+#ifndef GDMLPLUGIN_H
+#define GDMLPLUGIN_H
+
+#if defined GDMLPLUGIN_EXPORTS
+#if defined WIN32
+#define GDMLPLUGIN_EXPORT              __declspec( dllexport )
+#else
+#define GDMLPLUGIN_EXPORT
+#endif
+#else
+#if defined WIN32
+#define GDMLPLUGIN_EXPORT              __declspec( dllimport )
+#else
+#define GDMLPLUGIN_EXPORT
+#endif
+#endif
+
+#endif // GDMLPLUGIN_H
diff --git a/src/GDMLPlugin/GDMLPlugin_ConeSegment.cpp b/src/GDMLPlugin/GDMLPlugin_ConeSegment.cpp
new file mode 100644 (file)
index 0000000..bbc4ade
--- /dev/null
@@ -0,0 +1,93 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GDMLPlugin_ConeSegment.cpp
+// Created:     23 Nov 2016
+// Author:      Clarisse Genrault (CEA)
+
+#include <GDMLPlugin_ConeSegment.h>
+
+#include <ModelAPI_Data.h>
+#include <ModelAPI_ResultBody.h>
+#include <ModelAPI_AttributeDouble.h>
+#include <ModelAPI_AttributeString.h>
+
+//=================================================================================================
+GDMLPlugin_ConeSegment::GDMLPlugin_ConeSegment() // Nothing to do during instantiation
+{
+}
+
+//=================================================================================================
+void GDMLPlugin_ConeSegment::initAttributes()
+{
+  data()->addAttribute(GDMLPlugin_ConeSegment::RMIN1_ID(), ModelAPI_AttributeDouble::typeId());
+  data()->addAttribute(GDMLPlugin_ConeSegment::RMAX1_ID(), ModelAPI_AttributeDouble::typeId());
+  data()->addAttribute(GDMLPlugin_ConeSegment::RMIN2_ID(), ModelAPI_AttributeDouble::typeId());
+  data()->addAttribute(GDMLPlugin_ConeSegment::RMAX2_ID(), ModelAPI_AttributeDouble::typeId());
+  data()->addAttribute(GDMLPlugin_ConeSegment::Z_ID(), ModelAPI_AttributeDouble::typeId());
+  data()->addAttribute(GDMLPlugin_ConeSegment::STARTPHI_ID(), ModelAPI_AttributeDouble::typeId());
+  data()->addAttribute(GDMLPlugin_ConeSegment::DELTAPHI_ID(), ModelAPI_AttributeDouble::typeId());
+}
+
+//=================================================================================================
+void GDMLPlugin_ConeSegment::execute()
+{
+  double aRMin1 = real(GDMLPlugin_ConeSegment::RMIN1_ID())->value();
+  double aRMax1 = real(GDMLPlugin_ConeSegment::RMAX1_ID())->value();
+  double aRMin2 = real(GDMLPlugin_ConeSegment::RMIN2_ID())->value();
+  double aRMax2 = real(GDMLPlugin_ConeSegment::RMAX2_ID())->value();
+  double aZ = real(GDMLPlugin_ConeSegment::Z_ID())->value();
+  double aStartPhi = real(GDMLPlugin_ConeSegment::STARTPHI_ID())->value();
+  double aDeltaPhi = real(GDMLPlugin_ConeSegment::DELTAPHI_ID())->value();
+
+  std::shared_ptr<GeomAlgoAPI_ConeSegment> aConeSegmentAlgo =
+    std::shared_ptr<GeomAlgoAPI_ConeSegment>(new GeomAlgoAPI_ConeSegment(aRMin1, aRMax1,
+                                                                         aRMin2, aRMax2,
+                                                                         aZ,
+                                                                         aStartPhi, aDeltaPhi));
+
+  // Check with that the arguments for aConeSegmentAlgo are correct
+  if (!aConeSegmentAlgo->check()){
+    setError(aConeSegmentAlgo->getError());
+    return;
+  }
+
+  aConeSegmentAlgo->build();
+
+  // Check if the creation of the cone segment went well
+  if(!aConeSegmentAlgo->isDone()) {
+    setError(aConeSegmentAlgo->getError());
+    return;
+  }
+  if (!aConeSegmentAlgo->checkValid("Cone Segment builder")) {
+    setError(aConeSegmentAlgo->getError());
+    return;
+  }
+
+  int aResultIndex = 0;
+  ResultBodyPtr aResultConeSegment = document()->createBody(data(), aResultIndex);
+  loadNamingDS(aConeSegmentAlgo, aResultConeSegment);
+  setResult(aResultConeSegment, aResultIndex);
+}
+
+//=================================================================================================
+void GDMLPlugin_ConeSegment::loadNamingDS(
+    std::shared_ptr<GeomAlgoAPI_ConeSegment> theConeSegmentAlgo,
+    std::shared_ptr<ModelAPI_ResultBody> theResultConeSegment)
+{
+  // Load the result
+  theResultConeSegment->store(theConeSegmentAlgo->shape());
+
+  // Prepare the naming
+  theConeSegmentAlgo->prepareNamingFaces();
+
+  // Insert to faces
+  int num = 1;
+  std::map< std::string, std::shared_ptr<GeomAPI_Shape> > listOfFaces =
+    theConeSegmentAlgo->getCreatedFaces();
+  for (std::map< std::string, std::shared_ptr<GeomAPI_Shape> >::iterator
+       it=listOfFaces.begin(); it!=listOfFaces.end(); ++it) {
+    std::shared_ptr<GeomAPI_Shape> aFace = (*it).second;
+    theResultConeSegment->generated(aFace, (*it).first, num++);
+  }
+}
+
diff --git a/src/GDMLPlugin/GDMLPlugin_ConeSegment.h b/src/GDMLPlugin/GDMLPlugin_ConeSegment.h
new file mode 100644 (file)
index 0000000..2eb5806
--- /dev/null
@@ -0,0 +1,96 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GDMLPlugin_ConeSegment.h
+// Created:     23 Nov 2016
+// Author:      Clarisse Genrault (CEA)
+
+#ifndef GDMLPLUGIN_CONESEGMENT_H_
+#define GDMLPLUGIN_CONESEGMENT_H_
+
+#include <GDMLPlugin.h>
+#include <ModelAPI_Feature.h>
+#include <GeomAlgoAPI_ConeSegment.h>
+
+class GeomAPI_Shape;
+class ModelAPI_ResultBody;
+
+/**\class GDMLPlugin_ConeSegment
+ * \ingroup Plugins
+ * \brief Feature for creation of a GDML ConeSegment solid.
+ */
+class GDMLPlugin_ConeSegment : public ModelAPI_Feature
+{
+ public:
+  /// Cone segment kind
+  inline static const std::string& ID()
+  {
+    static const std::string MY_CONESEGMENT_ID("ConeSegment");
+    return MY_CONESEGMENT_ID;
+  }
+  /// attribute name of the inner radius at base of cone
+  inline static const std::string& RMIN1_ID()
+  {
+    static const std::string MY_RMIN1_ID("rmin1");
+    return MY_RMIN1_ID;
+  }
+  /// attribute name of the outer radius at base of cone
+  inline static const std::string& RMAX1_ID()
+  {
+    static const std::string MY_RMAX1_ID("rmax1");
+    return MY_RMAX1_ID;
+  }
+  /// attribute name of the inner radius at top of cone
+  inline static const std::string& RMIN2_ID()
+  {
+    static const std::string MY_RMIN2_ID("rmin2");
+    return MY_RMIN2_ID;
+  }
+  /// attribute name of the outer radius at top of cone
+  inline static const std::string& RMAX2_ID()
+  {
+    static const std::string MY_RMAX2_ID("rmax2");
+    return MY_RMAX2_ID;
+  }
+  /// attribute name of the height of the cone segment
+  inline static const std::string& Z_ID()
+  {
+    static const std::string MY_Z_ID("z");
+    return MY_Z_ID;
+  }
+  /// attribute name of the start angle of the segment
+  inline static const std::string& STARTPHI_ID()
+  {
+    static const std::string MY_STARTPHI_ID("startphi");
+    return MY_STARTPHI_ID;
+  }
+  /// attribute name of the angle of the segment
+  inline static const std::string& DELTAPHI_ID()
+  {
+    static const std::string MY_DELTAPHI_ID("deltaphi");
+    return MY_DELTAPHI_ID;
+  }
+
+  /// Returns the kind of a feature
+  GDMLPLUGIN_EXPORT virtual const std::string& getKind()
+  {
+    static std::string MY_KIND = GDMLPlugin_ConeSegment::ID();
+    return MY_KIND;
+  }
+
+  /// Creates a new part document if needed
+  GDMLPLUGIN_EXPORT virtual void execute();
+
+  /// Request for initialization of data model of the feature: adding all attributes
+  GDMLPLUGIN_EXPORT virtual void initAttributes();
+
+  /// Use plugin manager for features creation
+  GDMLPlugin_ConeSegment();
+
+ private:
+  /// Load Naming data structure of the feature to the document
+  void loadNamingDS(std::shared_ptr<GeomAlgoAPI_ConeSegment> theConeSegmentAlgo,
+                    std::shared_ptr<ModelAPI_ResultBody> theResultConeSegment);
+
+};
+
+#endif // GDMLPLUGIN_CONESEGMENT_H_
diff --git a/src/GDMLPlugin/GDMLPlugin_Plugin.cpp b/src/GDMLPlugin/GDMLPlugin_Plugin.cpp
new file mode 100644 (file)
index 0000000..e4e0423
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GDMLPlugin_Plugin.cpp
+// Created:     23 Nov 2016
+// Author:      Clarisse Genrault (CEA)
+
+#include <ModelAPI_Session.h>
+
+#include <GDMLPlugin_Plugin.h>
+
+#include <GDMLPlugin_ConeSegment.h>
+
+// the only created instance of this plugin
+static GDMLPlugin_Plugin* MY_GDML_INSTANCE = new GDMLPlugin_Plugin();
+
+GDMLPlugin_Plugin::GDMLPlugin_Plugin()
+{
+  // register this plugin
+  ModelAPI_Session::get()->registerPlugin(this);
+}
+
+FeaturePtr GDMLPlugin_Plugin::createFeature(std::string theFeatureID)
+{
+  if (theFeatureID == GDMLPlugin_ConeSegment::ID()) {
+    return FeaturePtr(new GDMLPlugin_ConeSegment);
+  }
+  // feature of such kind is not found
+  return FeaturePtr();
+}
+
diff --git a/src/GDMLPlugin/GDMLPlugin_Plugin.h b/src/GDMLPlugin/GDMLPlugin_Plugin.h
new file mode 100644 (file)
index 0000000..f91809a
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GDMLPlugin_Plugin.h
+// Created:     23 Nov 2016
+// Author:      Clarisse Genrault (CEA)
+
+#ifndef GDMLPLUGIN_PLUGIN_H_
+#define GDMLPLUGIN_PLUGIN_H_
+
+#include "GDMLPlugin.h"
+#include <ModelAPI_Plugin.h>
+#include <ModelAPI_Feature.h>
+
+/**\class GDMLPlugin_Plugin
+ * \ingroup Plugins
+ * \brief The main class managing GDML Features as plugins.
+ */
+class GDMLPLUGIN_EXPORT GDMLPlugin_Plugin : public ModelAPI_Plugin
+{
+ public:
+  /// Creates the feature object of this plugin by the feature string ID
+  virtual FeaturePtr createFeature(std::string theFeatureID);
+
+ public:
+  /// Default constructor
+  GDMLPlugin_Plugin();
+};
+
+#endif // GDMLPLUGIN_PLUGIN_H_
diff --git a/src/GDMLPlugin/conesegment_widget.xml b/src/GDMLPlugin/conesegment_widget.xml
new file mode 100644 (file)
index 0000000..23a33b6
--- /dev/null
@@ -0,0 +1,66 @@
+<!-- Copyright (C) 2015-2016 CEA/DEN, EDF R&D -->
+
+<!-- File:        conesegment_widget.xml -->
+<!-- Created:     07 Apr 2016 -->
+<!-- Author:      CEA (delegation to Alyotech) -->
+
+<source>
+  <groupbox title="Base face">
+    <doublevalue
+      id="rmin1"
+      label="rmin1"
+      step="1.0"
+      default="7.0"
+      tooltip="Enter the lower face inner radius">
+    </doublevalue>
+    <doublevalue
+      id="rmax1"
+      label="rmax1"
+      step="1.0"
+      default="11.0"
+      tooltip="Enter the lower face outer radius">
+    </doublevalue>
+  </groupbox>
+  <groupbox title="Top face">
+    <doublevalue
+      id="rmin2"
+      label="rmin2"
+      step="1.0"
+      default="5.0"
+      tooltip="Enter the higher face inner radius">
+    </doublevalue>
+    <doublevalue
+      id="rmax2"
+      label="rmax2"
+      step="1.0"
+      default="8.0"
+      tooltip="Enter the higher face outer radius">
+    </doublevalue>
+  </groupbox>
+  <groupbox title="Crop">
+    <doublevalue
+      id="z"
+      label="z"
+      step="1.0"
+      default="12.0"
+      tooltip="Enter the height">
+      <validator id="GeomValidators_Positive"/>
+    </doublevalue>
+    <doublevalue
+      id="startphi"
+      label="startphi"
+      step="15.0"
+      default="0."
+      tooltip="Enter the starting angle">
+    </doublevalue>
+    <doublevalue
+      id="deltaphi"
+      label="deltaphi"
+      step="15.0"
+      default="270."
+      tooltip="Enter the revolution angle">
+      <validator id="GeomValidators_Positive"/>
+    </doublevalue>
+  </groupbox>
+  <label title="" icon="icons/GDML/gui_cone_segment.png"/>
+</source>
diff --git a/src/GDMLPlugin/icons.cgt/SVG/dessin.svg b/src/GDMLPlugin/icons.cgt/SVG/dessin.svg
new file mode 100644 (file)
index 0000000..79bcc1f
--- /dev/null
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="16px"
+   height="16px"
+   id="svg2985"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="dessin.svg">
+  <defs
+     id="defs2987" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.197802"
+     inkscape:cx="2.0873764"
+     inkscape:cy="7.5275175"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     showborder="true"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="1033"
+     inkscape:window-height="818"
+     inkscape:window-x="442"
+     inkscape:window-y="72"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2993"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2990">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       sodipodi:type="arc"
+       style="fill:#b7d9ea;fill-opacity:0;stroke:#1b4955;stroke-width:0.72416042999999986;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:3.29999999999999982"
+       id="path2999"
+       sodipodi:cx="10"
+       sodipodi:cy="4"
+       sodipodi:rx="2.5771508"
+       sodipodi:ry="1"
+       d="M 12.526438,3.8025952 A 2.5771508,1 0 1 1 7.4861101,3.779793"
+       sodipodi:start="6.0844754"
+       sodipodi:end="9.6468046"
+       transform="matrix(1.1825725,0,0,-1.032007,-3.8265977,7.8174475)"
+       sodipodi:open="true" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#b7d9ea;fill-opacity:0;stroke:#1b4955;stroke-width:0.26987207000000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:3.29999999999999982"
+       id="path2999-5"
+       sodipodi:cx="10"
+       sodipodi:cy="4"
+       sodipodi:rx="2"
+       sodipodi:ry="1"
+       d="M 11.716367,3.4866567 A 2,1 0 1 1 8.4680645,3.357121"
+       sodipodi:start="5.7441093"
+       sodipodi:end="10.123029"
+       transform="matrix(3.1993882,0,0,-2.7466112,-23.901843,14.300651)"
+       sodipodi:open="true" />
+    <path
+       style="fill:#b7d9ea;stroke:#1b4955;stroke-width:0.85904389999999986;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
+       d="M 1.681441,3.2120623 0.46004907,13.723473"
+       id="path3918"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:1.10663950000000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 14.495349,3.3590323 15.003806,14.003806"
+       id="path3938"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 11.991921,5.6392928 0.398414,6.9125432"
+       id="path3940"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:0.96687031000000001px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 12.301983,12.983435 2.714582,1.03313"
+       id="path3942"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 11,4 1,2"
+       id="path3944"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#b7d9ea;stroke:#1b4955;stroke-width:0.80000000000000004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
+       d="M 5.0481804,3.7716216 3.2336797,4.9605892"
+       id="path3946"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 10,4 1,9"
+       id="path3948"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#b7d9ea;stroke:#1b4955;stroke-width:0.84762846999999986;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
+       d="M 4.8713879,4.0154481 4.1286121,14.641002"
+       id="path3950"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#b7d9ea;stroke:#1b4955;stroke-width:0.87382132000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
+       d="M 3.4090568,5.0787586 2.482878,15.384055"
+       id="path3952"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#b7d9ea;stroke:#1b4955;stroke-width:0.75108206000000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
+       d="M 2.4200757,15.65383 4.1082613,14.799173"
+       id="path3954"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#b7d9ea;fill-opacity:1;stroke:#1b4955;stroke-width:0.99581575000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:3.29999999999999982"
+       id="path3956"
+       sodipodi:cx="-1.5"
+       sodipodi:cy="16.5"
+       sodipodi:rx="2.5"
+       sodipodi:ry="1.5"
+       d="M -0.72754819,17.926602 A 2.5,1.5 0 0 1 -3.7857499,15.892443"
+       sodipodi:start="1.2566752"
+       sodipodi:end="3.5586128"
+       transform="matrix(0.64289672,0,0,1.0038776,2.9560751,-2.3816378)"
+       sodipodi:open="true" />
+  </g>
+</svg>
diff --git a/src/GDMLPlugin/icons.cgt/SVG/tytysvg.svg b/src/GDMLPlugin/icons.cgt/SVG/tytysvg.svg
new file mode 100644 (file)
index 0000000..2a6f0be
--- /dev/null
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg3906"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   width="16"
+   height="16"
+   sodipodi:docname="cone_segment.png">
+  <metadata
+     id="metadata3912">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3910" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview3908"
+     showgrid="false"
+     inkscape:zoom="14.75"
+     inkscape:cx="8"
+     inkscape:cy="8"
+     inkscape:window-x="158"
+     inkscape:window-y="246"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3906" />
+  <image
+     width="16"
+     height="16"
+     xlink:href="file:///export/home/cgenraul/SHAPER-CEA-FD20_64/SOURCES/SHAPER/src/GDMLPlugin/icons/cone_segment.png"
+     id="image3914"
+     x="0"
+     y="0" />
+</svg>
diff --git a/src/GDMLPlugin/icons.cgt/cone_segment.png b/src/GDMLPlugin/icons.cgt/cone_segment.png
new file mode 100644 (file)
index 0000000..004981c
Binary files /dev/null and b/src/GDMLPlugin/icons.cgt/cone_segment.png differ
diff --git a/src/GDMLPlugin/icons.cgt/cone_segment.png.ok b/src/GDMLPlugin/icons.cgt/cone_segment.png.ok
new file mode 100644 (file)
index 0000000..9df4671
Binary files /dev/null and b/src/GDMLPlugin/icons.cgt/cone_segment.png.ok differ
diff --git a/src/GDMLPlugin/icons.cgt/gui_cone_segment.png b/src/GDMLPlugin/icons.cgt/gui_cone_segment.png
new file mode 100644 (file)
index 0000000..b9fb4fd
Binary files /dev/null and b/src/GDMLPlugin/icons.cgt/gui_cone_segment.png differ
diff --git a/src/GDMLPlugin/icons/SVG/cone_segment.svg b/src/GDMLPlugin/icons/SVG/cone_segment.svg
new file mode 100644 (file)
index 0000000..b2efe61
--- /dev/null
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="16"
+   height="16"
+   id="svg4157"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   viewBox="0 0 16 16"
+   sodipodi:docname="cone_segment_20161130_bis.svg"
+   inkscape:export-filename="/export/home/cgenraul/SHAPER-CEA-FD20_64/SOURCES/SHAPER/src/GDMLPlugin/icons/cone_segment.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs4159" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="36.390891"
+     inkscape:cx="20.659746"
+     inkscape:cy="7.9830251"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     showguides="true"
+     inkscape:snap-others="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-text-baseline="false"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-intersection-paths="false"
+     inkscape:snap-page="false"
+     inkscape:snap-grids="false"
+     inkscape:object-paths="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1110"
+     inkscape:window-x="-2"
+     inkscape:window-y="32"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true"
+     inkscape:snap-bbox="true"
+     inkscape:snap-midpoints="false"
+     inkscape:showpageshadow="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4705"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4162">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     transform="translate(0,-16)">
+    <path
+       style="fill:#b7d9ea;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
+       d="m 3.0007101,2.1560876 c 0.025661,-0.029382 0.047601,-0.1138065 0.076983,-0.088146 0.029382,0.025661 -0.1118748,0.1055913 -0.076983,0.088146 0.052305,-0.026152 0.084603,-0.081291 0.131942,-0.1156249 0.00741,-0.00538 0.019287,0.0041 0.027479,0 0.023173,-0.011586 0.033402,-0.040588 0.054959,-0.054959 0.017042,-0.011361 0.037917,-0.016118 0.054959,-0.027479 0.021557,-0.014371 0.031786,-0.043373 0.054959,-0.054959 0.00819,-0.0041 0.01832,0 0.027479,0 0.01832,-0.00916 0.037917,-0.016118 0.054959,-0.027479 0.021557,-0.014371 0.036639,-0.036639 0.054959,-0.054959 0.036639,-0.036639 0.073278,-0.073278 0.1099176,-0.1099176 0.00916,-0.00916 0.01832,-0.01832 0.027479,-0.027479 0.00916,-0.00916 0.015893,-0.021686 0.027479,-0.027479 0.016386,-0.00819 0.038573,0.00819 0.054959,0 0.027041,-0.01352 0.082877,-0.096397 0.1099176,-0.1099177 0.080867,-0.040433 -0.036179,0.063658 0.054959,-0.027479 0.033956,-0.033956 0.014525,-0.027479 0.054959,-0.027479 0.00916,0 0.036639,0 0.027479,0 -0.1053368,0 -0.050294,0.00819 0.054959,-0.054959 0.011108,-0.00666 0.015893,-0.021686 0.027479,-0.027479 0.016386,-0.00819 0.038573,0.00819 0.054959,0 0.011586,-0.00579 0.015893,-0.021686 0.027479,-0.027479 0.00819,-0.0041 0.01832,0 0.027479,0 0.01832,0 0.037579,0.00579 0.054959,0 0.012289,-0.0041 0.015893,-0.021686 0.027479,-0.027479 0.00819,-0.0041 0.01832,0 0.027479,0 0.01832,-0.00916 0.037917,-0.016118 0.054959,-0.027479 0.078633,-0.052422 -0.042088,-0.00515 0.082438,-0.054959 0.014301,-0.064265 0.077767,-0.016763 0.1099176,-0.027479 0.019431,-0.00648 0.035088,-0.022512 0.054959,-0.027479 0.017773,-0.00444 0.038573,0.00819 0.054959,0 0.023173,-0.011586 0.034232,-0.039414 0.054959,-0.054959 0.067696,-0.050772 0.078808,-0.011925 0.1099176,-0.027479 0.011586,-0.00579 0.015893,-0.021686 0.027479,-0.027479 0.00819,-0.0041 0.01832,0 0.027479,0 0.022464,0 0.1784284,0.00464 0.1923558,0 0.1018691,-0.033956 -0.033496,-0.027479 0.054959,-0.027479 0.017716,0 0.1040133,0.00394 0.1099176,0 0.021557,-0.014371 0.031786,-0.043373 0.054959,-0.054959 0.016386,-0.00819 0.037579,0.00579 0.054959,0 0.012289,-0.0041 0.015893,-0.021686 0.027479,-0.0274795 0.00819,-0.004096 0.019287,0.004096 0.027479,0 0.011586,-0.005793 0.01519,-0.023383 0.027479,-0.0274794 0.017379,-0.005793 0.036639,0 0.054959,0 0.00916,0 0.019287,0.004096 0.027479,0 0.011586,-0.005793 0.015893,-0.0216862 0.027479,-0.0274794 0.00819,-0.004096 0.01832,0 0.027479,0 0.027479,0 0.055492,0.005389 0.082438,0 0.1105805,-0.0221161 0.012626,-0.0200525 0.082438,-0.0549588 0.00817,-0.004087 0.1533169,0 0.1648765,0 0.1190774,0 0.2381548,0 0.3572322,0 0.1099176,0 0.2198353,0 0.3297529,0 0.025881,0 0.121765,0.005211 0.137397,0 0.012289,-0.004096 0.015893,-0.0216862 0.027479,-0.0274794 0.00819,-0.004096 0.01832,0 0.027479,0 0.00916,0 0.01832,0 0.027479,0 0.036639,0 0.073278,0 0.1099176,0 0.1282372,0 0.2564745,0 0.3847117,0 0.1007578,0 0.2015156,0 0.3022734,0 0.018975,0 0.1015629,0.004177 0.1099176,0 0.011586,-0.005793 0.015893,-0.0216862 0.027479,-0.0274794 0.018211,-0.009106 0.086887,0.007677 0.1099177,0 0.019431,-0.006477 0.035088,-0.0225118 0.054959,-0.0274794 0.026659,-0.006665 0.054959,0 0.082438,0 0.054959,0 0.1099176,0 0.1648764,0 0.00568,0 0.1622332,0.001762 0.1648764,0 0.021557,-0.0143711 0.033402,-0.0405877 0.054959,-0.0549588 0.00762,-0.005081 0.01832,0 0.027479,0 0.00916,0 0.01832,0 0.02748,0 0.036639,0 0.073278,0 0.1099176,0 0.01832,0 0.037579,0.005793 0.054959,0 0.019431,-0.006477 0.035528,-0.0210024 0.054959,-0.0274794 0.015504,-0.005168 0.064381,0 0.082438,0 0.045799,0 0.091598,0 0.137397,0 0.00653,0 0.1037587,-0.003079 0.1099176,0 0.011586,0.005793 0.01519,0.023383 0.027479,0.0274794 0.017379,0.005793 0.036639,0 0.054959,0 0.00916,0 0.019287,-0.004096 0.02748,0 0.011586,0.005793 0.015893,0.0216862 0.027479,0.0274794 0.00819,0.004096 0.01832,0 0.027479,0 0.01832,0 0.037579,-0.005793 0.054959,0 0.012289,0.004096 0.015893,0.0216862 0.027479,0.0274794 0.016386,0.008193 0.037186,-0.004443 0.054959,0 0.028101,0.007025 0.054337,0.0204542 0.082438,0.0274794 0.017773,0.004443 0.038573,-0.008193 0.054959,0 0.02954,0.0147697 0.052899,0.0401891 0.082438,0.0549588 0.016386,0.008193 0.037186,-0.004443 0.054959,0 0.028101,0.007025 0.054337,0.0204541 0.082438,0.0274794 0.017773,0.004443 0.036639,0 0.054959,0 0.027479,0 0.054959,0 0.082438,0 0.01832,0 0.037579,-0.005793 0.054959,0 0.012289,0.004096 0.01519,0.023383 0.027479,0.0274794 0.0292,0.009733 0.080718,-0.009733 0.1099176,0 0.019431,0.006477 0.035528,0.0210025 0.054959,0.0274794 0.015504,0.005168 0.064382,0 0.082439,0 0.0068,0 0.107657,-0.001507 0.109917,0 0.02156,0.0143711 0.0334,0.0405877 0.05496,0.0549589 0.0095,0.00635 0.146414,-0.00615 0.164876,0 0.01229,0.0041 0.01589,0.021686 0.02748,0.027479 0.01639,0.00819 0.03758,-0.00579 0.05496,0 0.01943,0.00648 0.03553,0.021002 0.05496,0.027479 0.01738,0.00579 0.03857,-0.00819 0.05496,0 0.01159,0.00579 0.01519,0.023383 0.02748,0.027479 0.01738,0.00579 0.03857,-0.00819 0.05496,0 0.02317,0.011586 0.03664,0.036639 0.05496,0.054959 0.0092,0.00916 0.01491,0.024338 0.02748,0.027479 0.02666,0.00666 0.05496,0 0.08244,0 0.0092,0 0.01929,-0.0041 0.02748,0 0.01159,0.00579 0.01589,0.021686 0.02748,0.027479 0.01638,0.00819 0.03857,-0.00819 0.05496,0 0.01159,0.00579 0.01589,0.021686 0.02748,0.027479 0.01743,0.00872 0.119546,-0.00893 0.137397,0 0.02317,0.011586 0.03038,0.046766 0.05496,0.054959 0.01477,0.00492 0.08665,0 0.109917,0 0.0916,0 0.183196,0 0.274794,0 0.02748,0 0.05637,-0.00869 0.08244,0 0.01229,0.0041 0.01589,0.021686 0.02748,0.027479 0.01621,0.00811 0.06354,-0.0063 0.08244,0 0.01943,0.00648 0.03553,0.021002 0.05496,0.027479 0.0087,0.0029 0.01929,-0.0041 0.02748,0 0.01159,0.00579 0.01519,0.023383 0.02748,0.027479 0.01738,0.00579 0.03664,0 0.05496,0 0.0092,0 0.01986,-0.00508 0.02748,0 0.02156,0.014371 0.0309,0.045337 0.05496,0.054959 0.02551,0.010206 0.05578,-0.00666 0.08244,0 0.01257,0.00314 0.01589,0.021686 0.02748,0.027479 0.0082,0.0041 0.01832,0 0.02748,0 0.01832,0 0.03758,-0.00579 0.05496,0 0.01229,0.0041 0.01589,0.021686 0.02748,0.027479 0.0082,0.0041 0.01929,-0.0041 0.02748,0 0.01159,0.00579 0.01519,0.023383 0.02748,0.027479 0.01738,0.00579 0.03857,-0.00819 0.05496,0 0.178937,0.089469 -0.05478,0.02754 0.109917,0.082438 0.0292,0.00973 0.08072,-0.00973 0.109918,0 0.199045,0.066348 -0.04332,-0.00792 0.08244,0.054959 0.0082,0.0041 0.01929,-0.0041 0.02748,0 0.04377,0.021884 0.01119,0.033074 0.05496,0.054959 0.0082,0.0041 0.01929,-0.0041 0.02748,0 0.01159,0.00579 0.01589,0.021686 0.02748,0.027479 0.0082,0.0041 0.01929,-0.0041 0.02748,0 0.05889,0.029448 -0.0039,0.025511 0.05496,0.054959 0.0082,0.0041 0.01986,-0.00508 0.02748,0 0.03233,0.021557 0.05496,0.054959 0.08244,0.082438 0.0458,0.045799 0.0916,0.091598 0.137397,0.137397 0.01832,0.01832 0.0334,0.040588 0.05496,0.054959 0.01704,0.011361 0.04048,0.012997 0.05496,0.027479 0.0065,0.00648 -0.0041,0.019287 0,0.027479 0.01159,0.023173 0.04677,0.030381 0.05496,0.054959 0.0058,0.01738 -0.0058,0.037579 0,0.054959 0.0041,0.012289 0.01832,0.01832 0.02748,0.027479 0.01616,0.016162 0.103555,0.097193 0.109917,0.1099177 0.0082,0.016386 -0.0082,0.038573 0,0.054959 0.01159,0.023173 0.04059,0.033402 0.05496,0.054959 0.09962,0.1992416 -0.02897,-0.043449 0.05496,0.082438 0.0675,0.0098 0.01141,0.058337 0.02748,0.082438 0.01437,0.021557 0.03664,0.036639 0.05496,0.054959 0.0092,0.00916 0.02338,0.01519 0.02748,0.027479 0.0058,0.017379 -0.0044,0.037186 0,0.054959 -0.01656,0.049736 0.04452,0.051107 0.05496,0.082438 0.0058,0.017379 -0.0044,0.037186 0,0.054959 -0.01656,0.049736 0.04451,0.051107 0.05496,0.082438 0.0042,0.012569 -0.0061,0.09769 0,0.1099176 0.0058,0.011586 0.02338,0.01519 0.02748,0.027479 0.01229,0.03686 -0.0098,0.098252 0,0.137397 0.007,0.028101 0.02045,0.054337 0.02748,0.082438 0.0054,0.021651 0,0.091992 0,0.1099176 0,0.00916 0,0.01832 0,0.027479 0,0.00916 0.0041,0.019287 0,0.027479 -0.02328,0.046559 -0.09811,0.056248 -0.137397,0.082438 -0.02156,0.014371 -0.03179,0.043372 -0.05496,0.054959 -0.0082,0.0041 -0.01929,-0.0041 -0.02748,0 -0.01159,0.00579 -0.0167,0.020294 -0.02748,0.027479 -0.01704,0.011361 -0.03792,0.016118 -0.05496,0.027479 -0.02371,0.015808 -0.06097,0.060974 -0.08244,0.082438 -0.0092,0.00916 -0.02338,0.01519 -0.02748,0.027479 -0.0058,0.01738 0,0.036639 0,0.054959 0,0.00916 0.0041,0.019287 0,0.027479 -0.0058,0.011586 -0.01832,0.01832 -0.02748,0.027479 -0.0092,0.00916 -0.01832,0.01832 -0.02748,0.027479 -0.01447,0.014467 -0.06776,0.0751 -0.08244,0.082438 -0.0082,0.0041 -0.01929,-0.0041 -0.02748,0 -0.02317,0.011586 -0.03179,0.043373 -0.05496,0.054959 -0.0082,0.0041 -0.01929,-0.0041 -0.02748,0 -0.01159,0.00579 -0.01589,0.021686 -0.02748,0.027479 -0.0082,0.0041 -0.01929,-0.0041 -0.02748,0 -0.02099,0.010496 -0.06383,0.076236 -0.08244,0.082438 -0.01738,0.00579 -0.03758,-0.00579 -0.05496,0 -0.02458,0.00819 -0.03179,0.043373 -0.05496,0.054959 -0.0082,0.0041 -0.01929,-0.0041 -0.02748,0 -0.03298,0.016488 -0.04946,0.065951 -0.08244,0.082438 -0.0082,0.0041 -0.01929,-0.0041 -0.02748,0 -0.02317,0.011586 -0.03423,0.039414 -0.05496,0.054959 -0.02642,0.019816 -0.05602,0.035143 -0.08244,0.054959 -0.01036,0.00777 -0.0167,0.020294 -0.02748,0.027479 -0.01384,0.060542 -0.05653,0.014525 -0.08244,0.027479 -0.01159,0.00579 -0.01589,0.021686 -0.02748,0.027479 -0.01727,0.00864 -0.09265,-0.00864 -0.109918,0 -0.02317,0.011586 -0.03179,0.043373 -0.05496,0.054959 -0.01945,0.083786 -0.07614,0.01059 -0.109917,0.027479 -0.01159,0.00579 -0.01519,0.023383 -0.02748,0.027479 -0.01257,0.00419 -0.09769,-0.00611 -0.109917,0 -0.01159,0.00579 -0.01519,0.023383 -0.02748,0.027479 -0.02473,0.00824 -0.05771,-0.00824 -0.08244,0 -0.04974,-0.016563 -0.05111,0.044515 -0.08244,0.054959 -0.02063,0.00688 -0.147649,-0.00345 -0.164877,0 -0.02008,0.00402 -0.03553,0.021002 -0.05496,0.027479 -0.0087,0.0029 -0.01832,0 -0.02748,0 -0.01832,0 -0.03664,0 -0.05496,0 -0.06412,0 -0.128237,0 -0.192356,0 -0.02193,0 -0.12091,0.0055 -0.137397,0 -0.170567,-0.056856 0.09133,0.00222 -0.137397,-0.054959 -0.05496,-0.01374 0,0.027479 -0.08244,0 -0.01229,-0.0041 -0.01589,-0.021686 -0.02748,-0.027479 -0.0082,-0.0041 -0.01929,0.0041 -0.02748,0 -0.01159,-0.00579 -0.01519,-0.023383 -0.02748,-0.027479 -0.01738,-0.00579 -0.03664,0 -0.05496,0 -0.0092,0 -0.01986,0.00508 -0.02748,0 -0.02156,-0.014371 -0.03423,-0.039414 -0.05496,-0.054959 0.0031,-0.052058 -0.06412,-0.01832 -0.08244,-0.027479 -0.01159,-0.00579 -0.01589,-0.021686 -0.02748,-0.027479 -0.0082,-0.0041 -0.01929,0.0041 -0.02748,0 -0.01159,-0.00579 -0.01589,-0.021686 -0.02748,-0.027479 -0.0082,-0.0041 -0.01929,0.0041 -0.02748,0 -0.02099,-0.010496 -0.06383,-0.076236 -0.08244,-0.082438 -0.01738,-0.00579 -0.03758,0.00579 -0.05496,0 -0.01229,-0.0041 -0.0167,-0.020294 -0.02748,-0.027479 -0.01704,-0.011361 -0.03792,-0.016118 -0.05496,-0.027479 -0.02371,-0.015808 -0.06097,-0.060975 -0.08244,-0.082438 -0.0092,-0.00916 -0.01589,-0.021686 -0.02748,-0.027479 -0.0082,-0.0041 -0.01929,0.0041 -0.02748,0 -0.01159,-0.00579 -0.02169,-0.015893 -0.02748,-0.027479 -0.0041,-0.00819 0,-0.01832 0,-0.027479 0,-0.00916 0,-0.01832 0,-0.027479 0,-0.00916 -0.0092,-0.027479 0,-0.027479 0.0092,0 0,0.036639 0,0.027479 0,-0.01832 0,-0.036639 0,-0.054959 0,-0.01832 0.0082,-0.038573 0,-0.054959 -0.0083,-0.016653 -0.07374,-0.044884 -0.05496,-0.082438 0.0058,-0.011586 0.02169,-0.015893 0.02748,-0.027479 0.0082,-0.016386 -0.0082,-0.038573 0,-0.054959 0.0058,-0.011586 0.02434,-0.014912 0.02748,-0.027479 0.0089,-0.035545 0,-0.073278 0,-0.1099176 0,-0.064119 0,-0.1282373 0,-0.1923559 0,-0.028431 0.0052,-0.1714161 0,-0.1923558 -0.01109,-0.044363 -0.02703,-0.054505 -0.05496,-0.082438 -0.0092,-0.00916 -0.02169,-0.015893 -0.02748,-0.027479 -0.0041,-0.00819 0.0041,-0.019287 0,-0.027479 -0.01159,-0.023173 -0.04059,-0.033402 -0.05496,-0.054959 -0.01136,-0.017042 -0.013,-0.040476 -0.02748,-0.054959 -0.00648,-0.00648 -0.019858,0.00508 -0.027479,0 -0.021557,-0.014371 -0.036639,-0.036639 -0.054959,-0.054959 -0.00916,-0.00916 -0.01519,-0.023383 -0.027479,-0.027479 -0.017379,-0.00579 -0.037579,0.00579 -0.054959,0 C 9.8253261,3.053099 9.8209141,3.036905 9.8101361,3.02972 9.7930941,3.018359 9.7746081,3.008718 9.7551771,3.002241 c -0.017379,-0.00579 -0.039716,0.010162 -0.054959,0 -0.021557,-0.014371 -0.031786,-0.043372 -0.054959,-0.054959 -0.016386,-0.00819 -0.037579,0.00579 -0.054959,0 -0.012289,-0.0041 -0.015893,-0.021686 -0.027479,-0.027479 -0.01453,-0.00727 -0.09653,0.00335 -0.1099176,0 -0.01987,-0.00497 -0.035528,-0.021002 -0.054959,-0.027479 -0.00869,-0.0029 -0.01832,0 -0.027479,0 -0.01832,0 -0.036639,0 -0.054959,0 -0.073278,0 -0.1465568,0 -0.2198352,0 -0.2289951,0 -0.4579901,0 -0.6869851,0 -0.3663921,0 -0.7327841,0 -1.0991762,0 -0.1282372,0 -0.2564744,0 -0.3847117,0 -0.036639,0 -0.073278,0 -0.1099176,0 -0.01832,0 -0.037186,-0.00444 -0.054959,0 -0.2776412,0.06941 0.019845,-0.00992 -0.1099176,0.054959 -0.00819,0.0041 -0.019287,-0.0041 -0.027479,0 -0.011586,0.00579 -0.015893,0.021686 -0.027479,0.027479 -0.00819,0.0041 -0.01879,-0.0029 -0.027479,0 -0.019431,0.00648 -0.035528,0.021003 -0.054959,0.02748 -0.00869,0.0029 -0.019287,-0.0041 -0.027479,0 -0.011586,0.00579 -0.015893,0.021686 -0.027479,0.027479 -0.029091,0.014545 -0.025868,-0.014545 -0.054959,0 -0.011586,0.00579 -0.01832,0.01832 -0.027479,0.027479 -0.00916,0.00916 -0.01832,0.01832 -0.027479,0.027479 -0.00916,0.00916 -0.01832,0.01832 -0.027479,0.027479 -0.00916,0.00916 -0.015893,0.021686 -0.027479,0.027479 -0.00819,0.0041 -0.019287,-0.0041 -0.027479,0 -0.032975,0.016488 -0.049463,0.065951 -0.082438,0.082438 -0.00819,0.0041 -0.01879,-0.0029 -0.027479,0 -0.1990447,0.066348 0.043324,-0.00792 -0.082438,0.054959 -0.025908,0.012954 -0.0576,0.012577 -0.082438,0.027479 -0.019014,0.011408 -0.1116708,0.1116708 -0.137397,0.137397 -0.030641,0.030641 -0.1192966,0.1102464 -0.137397,0.137397 -0.00508,0.00762 0.0029,0.01879 0,0.027479 -0.00648,0.019431 -0.021002,0.035528 -0.027479,0.054959 -0.0029,0.00869 0.0041,0.019287 0,0.027479 -0.00579,0.011586 -0.021686,0.015893 -0.02748,0.027479 -0.00409,0.00817 0,0.1533168 0,0.1648764 0,0.023028 -0.00584,0.1257178 0,0.137397 0.011586,0.023173 0.036639,0.036639 0.054959,0.054959 0.00916,0.00916 0.023383,0.01519 0.027479,0.027479 0.00579,0.01738 -0.00579,0.037579 0,0.054959 0.0041,0.012289 0.021686,0.015893 0.027479,0.027479 0.0041,0.00819 -0.0041,0.019287 0,0.027479 0.00579,0.011586 0.023383,0.01519 0.027479,0.027479 0.00579,0.01738 -0.00579,0.037579 0,0.054959 0.0041,0.012289 0.027479,0.014525 0.027479,0.027479 0,0.042963 -0.071707,0.023902 -0.082438,0.02748 -0.012289,0.0041 -0.015893,0.021686 -0.027479,0.027479 -0.00616,0.00308 -0.1033877,0 -0.1099177,0 -0.064119,0 -0.1282372,0 -0.1923558,0 -0.01468,0 -0.1295323,-0.00393 -0.137397,0 -0.011586,0.00579 -0.014912,0.024338 -0.027479,0.027479 -0.023505,0.00588 -0.1572766,0 -0.1923558,0 -0.01832,0 -0.037579,-0.00579 -0.054959,0 -0.049909,0.016636 -0.050998,0.023518 -0.082438,0.054959 -0.00916,0.00916 -0.015893,0.021686 -0.027479,0.027479 -0.00819,0.0041 -0.019287,-0.0041 -0.027479,0 -0.011586,0.00579 -0.015893,0.021686 -0.027479,0.027479 -0.025908,0.012954 -0.05653,0.014525 -0.082438,0.027479 -0.032975,0.016488 -0.049463,0.065951 -0.082438,0.082438 -0.00819,0.0041 -0.019287,-0.0041 -0.027479,0 -0.011586,0.00579 -0.015893,0.021686 -0.027479,0.027479 -0.00819,0.0041 -0.01832,0 -0.027479,0 -0.00916,0 -0.01832,0 -0.027479,0 -0.045799,0 -0.091598,0 -0.137397,0 -0.073278,0 -0.1465569,0 -0.2198353,0 -0.03151,0 -0.081452,0.00712 -0.1099176,0 -0.044363,-0.011091 -0.054505,-0.027025 -0.082438,-0.054959 -0.00916,-0.00916 -0.015893,-0.021686 -0.027479,-0.027479 -0.016386,-0.00819 -0.038573,0.00819 -0.054959,0 -0.011586,-0.00579 -0.015893,-0.021686 -0.027479,-0.027479 -0.00819,-0.0041 -0.019287,0.0041 -0.027479,0 -0.011586,-0.00579 -0.015893,-0.021686 -0.027479,-0.027479 -0.00819,-0.0041 -0.019858,0.00508 -0.027479,0 C 3.7889124,4.4931259 3.7396291,4.433601 3.7097196,4.4036915 3.6730804,4.3670523 3.6364411,4.3304131 3.5998019,4.2937738 3.5814823,4.2754542 3.5663997,4.2531861 3.5448431,4.238815 3.5278011,4.2274537 3.5069263,4.222697 3.4898843,4.2113356 3.4718311,4.1993001 3.422319,4.1338551 3.4074461,4.1288974 c -0.01738,-0.00579 -0.037579,0.00579 -0.054959,0 -0.012289,-0.0041 -0.01519,-0.023383 -0.027479,-0.027479 -0.01738,-0.00579 -0.037579,0.00579 -0.054959,0 -0.020851,-0.00695 -0.084662,-0.09729 -0.1099176,-0.1099176 -0.00819,-0.0041 -0.01832,0 -0.027479,0 -0.01832,-0.00916 -0.038573,-0.01519 -0.054959,-0.027479 C 2.9588369,3.8451646 3.0849729,3.9597143 2.9677756,3.8815828 2.9273404,3.854626 2.8982932,3.798622 2.857858,3.7716652 2.840816,3.7603038 2.8199412,3.7555471 2.8028992,3.7441858 c -0.010778,-0.00719 -0.01832,-0.01832 -0.027479,-0.027479 -0.00916,-0.00916 -0.021686,-0.015893 -0.027479,-0.027479 -0.00819,-0.016386 0.00819,-0.038573 0,-0.054959 -0.016488,-0.032975 -0.065951,-0.049463 -0.082438,-0.082438 -0.0041,-0.00819 0.0041,-0.019287 0,-0.027479 -0.00579,-0.011586 -0.021686,-0.015893 -0.027479,-0.027479 -0.0041,-0.00819 0.0041,-0.019287 0,-0.027479 -0.00579,-0.011586 -0.023383,-0.01519 -0.027479,-0.027479 -0.00579,-0.017379 0.00819,-0.038573 0,-0.054959 -0.01352,-0.027041 -0.096397,-0.082877 -0.1099176,-0.1099176 -0.00819,-0.016386 0.00579,-0.037579 0,-0.054959 -0.077845,-0.1556897 0.010241,0.040964 -0.027479,-0.1099176 0.016563,-0.049736 -0.044515,-0.051107 -0.054959,-0.082438 -0.00579,-0.017379 0.00579,-0.037579 0,-0.054959 -0.0041,-0.012289 -0.021686,-0.015893 -0.027479,-0.027479 -0.00264,-0.00529 -5.134e-4,-0.1358569 0,-0.137397 0.00669,-0.020082 0.029806,-0.069862 0.054959,-0.082438 0.00819,-0.0041 0.019287,0.0041 0.027479,0 0.023173,-0.011586 0.033402,-0.040588 0.054959,-0.054959 0.017042,-0.011361 0.037917,-0.016118 0.054959,-0.027479 0.021557,-0.014371 0.031786,-0.043372 0.054959,-0.054959 0.00819,-0.0041 0.01879,0.0029 0.027479,0 0.049909,-0.016636 0.050998,-0.023518 0.082438,-0.054959 0.063006,-0.063006 -0.011586,0.017379 0.054959,-0.082438 0.00719,-0.010778 0.021686,-0.015893 0.027479,-0.027479 0.00366,-0.00732 0,-0.152445 0,-0.1648765 0,-0.00916 -0.0041,-0.019287 0,-0.027479 0.011586,-0.023173 0.043372,-0.031786 0.054959,-0.054959 0.0041,-0.00819 -0.009,-0.025781 0,-0.027479 0.037837,-0.00714 0.076915,0.0038 0.1153727,0.00571 z"
+       id="path4122"
+       inkscape:connector-curvature="0"
+       transform="translate(0,16)" />
+    <path
+       style="fill:#b7d9ea;fill-opacity:1;stroke:#000000;stroke-width:0.01;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 6.0211537,26.231901 c 0.072224,0.04494 0.152682,0.07877 0.216671,0.134821 0.00153,0.0013 0,0.122615 0,0.137397 0,0.03664 0,0.07328 0,0.109918 0,0.0092 -0.00222,0.01859 0,0.02748 0.00703,0.0281 0.020454,0.05434 0.027479,0.08244 0.00444,0.01777 0,0.03664 0,0.05496 0,0.02748 0,0.05496 0,0.08244 0,0.0092 0,0.01832 0,0.02748 0,0.0092 -0.0041,0.01929 0,0.02748 0.00579,0.01159 0.021686,0.01589 0.027479,0.02748 0.0041,0.0082 0,0.01832 0,0.02748 0,0.0092 0,0.01832 0,0.02748 0,0.04751 -0.00287,0.06439 0.027479,0.109917 0.00719,0.01078 0.015893,0.02169 0.027479,0.02748 0.00819,0.0041 0.01832,0 0.027479,0 0.01832,0 0.036639,0 0.054959,0 0.091598,0 0.1831961,0 0.2747941,0 0.274794,0 0.5495881,0 0.8243821,0 0.2564745,0 0.5129489,0 0.7694233,0 0.1007578,0 0.2015157,0 0.3022735,0 0.023265,0 0.095144,0.0049 0.1099176,0 0.012289,-0.0041 0.015893,-0.02169 0.027479,-0.02748 0.00819,-0.0041 0.01832,0 0.027479,0 0.00916,0 0.01832,0 0.027479,0 0.036639,0 0.073278,0 0.1099176,0 0.073278,0 0.1465568,0 0.2198353,0 0.027479,0 0.055492,0.0054 0.082438,0 0.028403,-0.0057 0.054337,-0.02045 0.082438,-0.02748 0.017773,-0.0044 0.038573,0.0082 0.054959,0 0.011586,-0.0058 0.015893,-0.02169 0.027479,-0.02748 0.00817,-0.0041 0.1533169,0 0.1648764,0 0.00916,0 0.019858,0.0051 0.027479,0 0.021557,-0.01437 0.031786,-0.04337 0.054959,-0.05496 0.021983,-0.01099 0.060455,0.01099 0.082438,0 0.011586,-0.0058 0.016701,-0.02029 0.027479,-0.02748 0.017042,-0.01136 0.040476,-0.013 0.054959,-0.02748 0.023353,-0.02335 0.040189,-0.0529 0.054959,-0.08244 0.0041,-0.0082 0,-0.01832 0,-0.02748 0,-0.0092 0,-0.01832 0,-0.02748 0,-0.03664 0,-0.07328 0,-0.109918 0,-0.100758 0,-0.201515 0,-0.302273 0,-0.201516 0,-0.403031 0,-0.604547 0,-0.07328 0,-0.146557 0,-0.219835 0,-0.0196 0.00507,-0.117112 0,-0.137397 -0.00703,-0.0281 -0.020454,-0.05434 -0.027479,-0.08244 -0.00444,-0.01777 0.00579,-0.03758 0,-0.05496 -0.00648,-0.01943 -0.021002,-0.03553 -0.02748,-0.05496 -0.0063,-0.0189 0.00811,-0.06622 0,-0.08244 -0.00579,-0.01159 -0.021686,-0.01589 -0.027479,-0.02748 -0.0041,-0.0082 0.0041,-0.01929 0,-0.02748 -0.00579,-0.01159 -0.01832,-0.01832 -0.027479,-0.02748 -0.00916,-0.0092 -0.015893,-0.02169 -0.027479,-0.02748 -0.016386,-0.0082 -0.038573,0.0082 -0.054959,0 -0.011586,-0.0058 -0.015893,-0.02169 -0.027479,-0.02748 -0.016213,-0.0081 -0.063537,0.0063 -0.082438,0 -0.1556897,-0.07784 0.040964,0.01024 -0.1099176,-0.02748 -0.1326965,-0.03317 0.00136,-0.01306 -0.082438,-0.05496 -0.015122,-0.0076 -0.1433932,0.0072 -0.1648764,0 -0.012289,-0.0041 -0.01519,-0.02338 -0.027479,-0.02748 -0.01738,-0.0058 -0.036639,0 -0.054959,0 -0.010745,0 -0.1805038,0.0039 -0.1923558,0 -0.012289,-0.0041 -0.015893,-0.02169 -0.027479,-0.02748 -0.00819,-0.0041 -0.01832,0 -0.027479,0 -0.021223,0 -0.1481115,0.0056 -0.1648764,0 -0.019431,-0.0065 -0.035088,-0.02251 -0.054959,-0.02748 -0.022346,-0.0056 -0.1361099,0 -0.1648764,0 -0.00916,0 -0.01879,0.0029 -0.02748,0 -0.1990447,-0.06635 0.043324,0.0079 -0.082438,-0.05496 -0.011736,-0.0059 -0.126534,0 -0.137397,0 -0.1190774,0 -0.2381548,0 -0.3572322,0 -0.064119,0 -0.1282373,0 -0.1923559,0 -0.00916,0 -0.01832,0 -0.027479,0 -0.00916,0 -0.019287,-0.0041 -0.027479,0 -0.011586,0.0058 -0.01519,0.02338 -0.027479,0.02748 -0.024731,0.0082 -0.057707,-0.0082 -0.082438,0 -0.038862,0.01295 -0.071056,0.042 -0.1099176,0.05496 -0.017379,0.0058 -0.038573,-0.0082 -0.054959,0 -0.02954,0.01477 -0.052899,0.04019 -0.082438,0.05496 -0.016386,0.0082 -0.037579,-0.0058 -0.054959,0 -0.019431,0.0065 -0.035528,0.021 -0.054959,0.02748 -0.017379,0.0058 -0.038573,-0.0082 -0.054959,0 -0.011586,0.0058 -0.015893,0.02169 -0.027479,0.02748 -0.00819,0.0041 -0.01879,-0.0029 -0.027479,0 -0.019431,0.0065 -0.036639,0.01832 -0.054959,0.02748 -0.01832,0.0092 -0.037917,0.01612 -0.054959,0.02748 -0.021557,0.01437 -0.031786,0.04337 -0.054959,0.05496 -0.016386,0.0082 -0.038573,-0.0082 -0.054959,0 -0.011586,0.0058 -0.01832,0.01832 -0.027479,0.02748 -0.027479,0 -0.055779,-0.0067 -0.082438,0 -0.012567,0.0031 -0.015893,0.02169 -0.027479,0.02748 -0.00819,0.0041 -0.019287,-0.0041 -0.027479,0 -0.023173,0.01159 -0.031786,0.04337 -0.054959,0.05496 -0.00819,0.0041 -0.019287,-0.0041 -0.027479,0 -0.011586,0.0058 -0.01519,0.02338 -0.027479,0.02748 -0.034759,0.01159 -0.075159,-0.01159 -0.1099177,0 -0.012289,0.0041 -0.015893,0.02169 -0.027479,0.02748 -0.00819,0.0041 -0.01832,0 -0.027479,0 -0.00916,0 -0.01832,0 -0.027479,0 -0.027466,0 -0.1138874,-0.0059 -0.137397,0 -0.028101,0.007 -0.054337,0.02045 -0.082438,0.02748 -0.00889,0.0022 -0.01832,0 -0.027479,0 -0.046839,0 -0.049166,-0.0029 -0.1099176,0.02748 -0.023173,0.01159 -0.03038,0.04677 -0.054959,0.05496 -0.017379,0.0058 -0.037579,-0.0058 -0.054959,0 -0.012289,0.0041 -0.01832,0.01832 -0.027479,0.02748 -0.00916,0.0092 -0.021686,0.01589 -0.027479,0.02748 -0.0041,0.0082 0.0041,0.01929 0,0.02748 -0.00579,0.01159 -0.021686,0.01589 -0.027479,0.02748 -0.0041,0.0082 0,0.01832 0,0.02748 0,0.0092 0,0.01832 0,0.02748 0,0.0065 -0.00308,0.103758 0,0.109917 0.00579,0.01159 0.01832,0.01832 0.027479,0.02748 0.00916,0.0092 0.015893,0.02169 0.027479,0.02748 0.037904,0.01895 0.02458,-0.03328 0.054959,0.02748 0.0041,0.0082 -0.0029,0.01879 0,0.02748 0.00648,0.01943 0.022512,0.03509 0.027479,0.05496 0.00444,0.01777 0,0.03664 0,0.05496 0,0.0092 -0.0041,0.01929 0,0.02748 0.011586,0.02317 0.046766,0.03038 0.054959,0.05496 0.00869,0.02607 0,0.05496 0,0.08244 0,0.0092 0.0041,0.01929 0,0.02748 -0.00579,0.01159 -0.029811,0.01474 -0.027479,0.02748 0.00909,0.0497 0.038749,0.09332 0.058123,0.139973 z"
+       id="path3903"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#b7d9ea;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 5.8647996,18.952636 c 0.1100274,-0.06233 0.2199078,-0.134133 0.3300823,-0.187024 0.055934,-0.02686 0.1234287,0 0.1784406,0 0.109047,0 0.2180942,0 0.3271411,0 0.3469677,0 0.6939355,0 1.0409032,0 0.1090471,0 0.2180941,0 0.3271411,0 0.029375,0 0.1369758,0.03402 0.1487005,0 0.03197,-0.0927 0.057251,-0.252241 0.08922,-0.344943 0.00886,-0.02573 0.019828,0 0.029739,0 0.0099,0 0.019828,0 0.029739,0 0.059481,0 0.1189604,0 0.1784407,0 0.1883539,0 0.3767077,0 0.5650618,0 0.1288738,0 0.2577476,0 0.3866211,0 0.034425,0 0.1221491,-0.03847 0.1487005,0 0.021504,0.03119 0.03845,0.131817 0.059481,0.172469 0.0094,0.0182 0.019828,0 0.029739,0 0.019828,0.05749 0.03845,0.131816 0.059481,0.172468 0.01881,0.03634 0.041745,-0.0514 0.059481,0 0.041281,0.119697 0.029739,0.306883 0.029739,0.517412 0,0.862355 0,1.724709 0,2.587064 0,0.287458 0,0.574916 0,0.862355 0,0.05774 0,0.114983 0,0.172474 0,0.05774 -0.00444,0.121072 0,0.172475 0.00627,0.07274 0.023471,0.09973 0.029739,0.172475 0.00392,0.04519 0,0.599707 0,0.689886 0,0.459933 0,0.919847 0,1.379767 0,0.229966 0,0.459932 0,0.689886 0,0.05774 0,0.114983 0,0.172475 0,0.05774 0.00444,0.121071 0,0.172474 -0.00627,0.07274 -0.0172,0.136135 -0.029739,0.172475 -0.00886,0.02573 -0.019828,0 -0.029739,0 -0.0099,0 -0.019828,0 -0.029739,0 -0.0099,0 -0.019828,0 -0.029739,0 -0.0099,0 -0.020873,0.02573 -0.029739,0 -0.02508,-0.07274 -0.034401,-0.272206 -0.059481,-0.344949 -0.00886,-0.02573 -0.020873,0.02573 -0.029739,0 -0.012538,-0.0364 -0.0172,-0.136135 -0.029739,-0.172475 -0.00886,-0.02573 -0.019828,0 -0.029739,0 -0.019828,0 -0.040246,0.02762 -0.059481,0 -0.021504,-0.03138 -0.03845,-0.131804 -0.059481,-0.172475 -0.0094,-0.0182 -0.020122,0.01381 -0.029739,0 -0.030413,-0.04393 -0.058807,-0.128352 -0.08922,-0.172475 -0.034192,-0.04958 -0.088422,0.08856 -0.1189603,0 -0.02508,-0.07274 -0.036151,-0.254758 -0.059481,-0.344949 -0.00825,-0.03201 -0.019828,0 -0.029739,0 -0.019828,0 -0.039653,0 -0.059481,0 -0.069394,0 -0.1387871,0 -0.2081807,0 -0.039653,0 -0.079306,0 -0.1189603,0 -0.019828,0 -0.040246,-0.02762 -0.059481,0 -0.030412,0.04394 -0.058807,0.128352 -0.08922,0.172475 -0.019235,0.02762 -0.040246,-0.02762 -0.059481,0 -0.030413,0.04393 -0.058807,0.128352 -0.08922,0.172474 -0.039403,0.05712 -0.1078,-0.059 -0.1487004,0 -0.013602,0.01946 -0.0172,0.136135 -0.029739,0.172475 -0.010977,0.03201 -0.1525348,0 -0.1784405,0 -0.1387871,0 -0.2775742,0 -0.4163614,0 -0.029739,0 -0.059481,0 -0.08922,0 -0.0099,0 -0.020336,-0.0182 -0.029739,0 -0.2154199,0.416437 0.046888,-0.04958 -0.08922,0.34495 -0.016367,0.0477 -0.15519,-0.04519 -0.1784405,0 -0.013301,0.02573 -0.0172,0.136134 -0.029739,0.172474 -0.00886,0.02573 -0.019828,0 -0.029739,0 -0.0099,0 -0.019828,0 -0.029739,0 -0.029726,0 -0.1232569,-0.03703 -0.1487004,0 -0.030412,0.04394 -0.058807,0.128352 -0.08922,0.172475 -0.019235,0.02762 -0.039653,0 -0.059481,0 -0.049567,0 -0.099134,0 -0.1487004,0 -0.1487006,0 -0.297401,0 -0.4461014,0 -0.00541,0 -0.1960163,-0.02322 -0.2081807,0 -0.013301,0.02573 -0.01644,0.146742 -0.029739,0.172475 -0.017685,0.03389 -0.1433113,0 -0.1784405,0 -0.0099,0 -0.019828,0 -0.029739,0 -0.019828,0 -0.059481,0.114983 -0.059481,0 0,-0.114983 0.0735,-0.08128 0.059481,0 -0.031348,0.181826 -0.075951,0.282562 -0.1189604,0.344949 -0.00961,0.01381 0,-0.114983 0,-0.172475 0,-0.172474 -0.0094,-0.353799 0,-0.517424 0.00444,-0.07714 0.021964,-0.104815 0.029739,-0.172474 0.024612,-0.214087 0.049808,-0.637975 0.059481,-0.862355 0.0048,-0.111531 -0.00627,-0.235866 0,-0.34495 0.00701,-0.12195 0.022729,-0.222999 0.029739,-0.344949 0.02951,-0.513407 -0.07042,0.353862 0.029739,-0.517424 0.00778,-0.06766 0.023471,-0.09973 0.029739,-0.172475 0.00878,-0.10174 -0.00682,-0.398801 0,-0.517424 0.00701,-0.12195 0.022729,-0.223 0.029739,-0.344949 0.00559,-0.09728 0,-0.404073 0,-0.517425 0,-0.344949 0,-0.689886 0,-1.034829 0,-0.0408 0.00333,-0.651224 0,-0.68988 -0.00627,-0.07274 -0.025307,-0.09534 -0.029739,-0.172475 -0.00618,-0.107389 0.00723,-0.782306 0,-0.862355 -0.026732,-0.295931 -0.061442,-0.565187 -0.092161,-0.847804 z"
+       id="path3901"
+       inkscape:connector-curvature="0" />
+    <path
+       style="opacity:0.95999995;fill:none;stroke:#1b4955;stroke-width:0.55289942;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path4170-9-0-2"
+       sodipodi:type="arc"
+       sodipodi:cx="7.7867246"
+       sodipodi:cy="28.901749"
+       sodipodi:rx="1.7207294"
+       sodipodi:ry="0.38405609"
+       sodipodi:start="2.5307274"
+       sodipodi:end="6.8940505"
+       d="m 6.3771856,29.122034 a 1.7207294,0.38405609 0 1 1 2.819078,0"
+       transform="matrix(1.5488179,0,0,1.3517219,-4.2559533,-11.572959)"
+       sodipodi:open="true" />
+    <path
+       style="fill:#b7d9ea;fill-opacity:1;stroke:#1b4955;stroke-width:0.09596665;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 4.600876,20.747816 3.904613,31.230425 6.0668854,30.349207 5.9373083,20.345849 z"
+       id="path3859"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#b7d9ea;fill-opacity:1;stroke:#1b4955;stroke-width:0.09519828;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 10.753886,20.702278 2.356406,-0.775923 2.243459,9.926403 -3.216644,1.561092 z"
+       id="path3770"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#b7d9ea;fill-opacity:1;stroke:#1b4955;stroke-width:0.02126046;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       d="M 10.650042,30.371125 9.7023562,29.912064 9.684568,29.797974 C 9.674778,29.735224 9.638246,29.631473 9.603376,29.567416 L 9.539969,29.450952 9.730382,24.822175 c 0.1047318,-2.545826 0.1941823,-4.634445 0.1987872,-4.641373 0.012688,-0.01908 1.1082958,0.418681 1.1073728,0.442468 -4.42e-4,0.01138 0.139319,2.298023 0.310577,5.081435 0.171261,2.78341 0.310759,5.076829 0.309997,5.096487 -7.62e-4,0.01965 -0.01444,0.03422 -0.0304,0.03237 -0.01596,-0.0018 -0.455457,-0.209949 -0.976687,-0.462434 z"
+       id="path4370"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#b7d9ea;fill-opacity:1;stroke:#1b4955;stroke-width:0.10435142;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 2.6780972,19.905213 0.9813375,30.869698 3.7095335,31.307187 4.4550529,20.427491 z"
+       id="path3766"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:0.6086182;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path4165-4"
+       sodipodi:type="arc"
+       sodipodi:cx="7.8302102"
+       sodipodi:cy="18.130009"
+       sodipodi:rx="5.1149011"
+       sodipodi:ry="1.4208058"
+       sodipodi:start="2.2614725"
+       sodipodi:end="7.2010666"
+       d="m 4.5717188,19.225188 a 5.1149011,1.4208058 0 1 1 6.3658162,0.03339"
+       sodipodi:open="true"
+       transform="matrix(1.0316828,0,0,1.6659079,-0.01251233,-11.218213)" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:1.13524565;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path4163-9-8"
+       sodipodi:type="arc"
+       sodipodi:cx="7.8302102"
+       sodipodi:cy="28.709202"
+       sodipodi:rx="7.4648666"
+       sodipodi:ry="2.9470069"
+       sodipodi:start="0"
+       sodipodi:end="0.98673157"
+       d="m 15.295077,28.709202 a 7.4648666,2.9470069 0 0 1 -3.348594,2.458476"
+       sodipodi:open="true"
+       transform="matrix(0.88917751,-0.00494776,0.00357622,0.55846548,1.4789654,13.871897)" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:0.65141845px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="m 9.8888183,20.250213 1.3223667,0.567791 0.723483,10.327916 -2.221664,-1.174307 0.1758153,-9.7214"
+       id="path4362"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:0.76914734;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 2.7095992,18.979566 0.81251271,29.79873"
+       id="path4284-8-9"
+       inkscape:connector-curvature="0"
+       inkscape:export-filename="/export/home/cgenraul/SHAPER-CEA-FD20_64/SOURCES/SHAPER/src/GDMLPlugin/icons/cone_segment.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:0.68029219px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="M 5.8860988,20.326831 4.4824097,20.909169 3.7095784,31.521824 6.0679767,30.316985 5.8860988,20.326831"
+       id="path4362-5"
+       inkscape:connector-curvature="0" />
+    <path
+       style="opacity:0.95999995;fill:none;stroke:#1b4955;stroke-width:0.51512122;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker-end:none"
+       id="path4170-9-1"
+       sodipodi:type="arc"
+       sodipodi:cx="7.8302102"
+       sodipodi:cy="18.09326"
+       sodipodi:rx="1.3616623"
+       sodipodi:ry="0.60200018"
+       sodipodi:start="2.5307274"
+       sodipodi:end="6.8940505"
+       d="m 6.7148018,18.438553 a 1.3616623,0.60200018 0 1 1 2.2308169,0"
+       transform="matrix(1.7012076,0,0,1.4177634,-5.4433402,-5.776816)"
+       inkscape:export-filename="/export/home/cgenraul/SHAPER-CEA-FD20_64/SOURCES/SHAPER/src/GDMLPlugin/icons/cone_segment.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"
+       sodipodi:open="true" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:0.86699845;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path4163-9-8-3"
+       sodipodi:type="arc"
+       sodipodi:cx="7.8302102"
+       sodipodi:cy="28.709202"
+       sodipodi:rx="7.4648666"
+       sodipodi:ry="2.9470069"
+       sodipodi:start="6.121775"
+       sodipodi:end="7.1199536"
+       d="m 15.198046,28.235587 a 7.4648666,2.9470069 0 0 1 -2.367377,2.661715"
+       sodipodi:open="true"
+       transform="matrix(-0.96237087,0.20186066,0.11856233,0.85984099,12.108927,2.3939424)" />
+    <path
+       style="fill:none;stroke:#1b4955;stroke-width:0.76914734;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 13.34074,18.856572 1.804551,10.834981"
+       id="path4284-8-9-9"
+       inkscape:connector-curvature="0"
+       inkscape:export-filename="/export/home/cgenraul/SHAPER-CEA-FD20_64/SOURCES/SHAPER/src/GDMLPlugin/icons/cone_segment.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+  </g>
+</svg>
diff --git a/src/GDMLPlugin/icons/cone_segment.png b/src/GDMLPlugin/icons/cone_segment.png
new file mode 100644 (file)
index 0000000..12378d4
Binary files /dev/null and b/src/GDMLPlugin/icons/cone_segment.png differ
diff --git a/src/GDMLPlugin/icons/gui_cone_segment.png b/src/GDMLPlugin/icons/gui_cone_segment.png
new file mode 100644 (file)
index 0000000..1253969
Binary files /dev/null and b/src/GDMLPlugin/icons/gui_cone_segment.png differ
diff --git a/src/GDMLPlugin/plugin-GDML.xml b/src/GDMLPlugin/plugin-GDML.xml
new file mode 100644 (file)
index 0000000..91cf138
--- /dev/null
@@ -0,0 +1,15 @@
+<!-- Copyright (C) 2014-2016 CEA/DEN, EDF R&D -->
+
+<!-- File:        plugin-GDML.xml -->
+<!-- Created:     23 Nov 2016 -->
+<!-- Author:      Clarisse Genrault (CEA) -->
+
+<plugin> 
+  <workbench id="GDML" document="Part">
+    <group id="GDML">
+      <feature id="ConeSegment" title="Cone Segment" tooltip="Create a Cone Segment" icon="icons/GDML/cone_segment.png">
+        <source path="conesegment_widget.xml"/>
+      </feature>
+    </group>
+  </workbench>
+</plugin>
diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_ConeSegment.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_ConeSegment.cpp
new file mode 100644 (file)
index 0000000..4a4f2e9
--- /dev/null
@@ -0,0 +1,159 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GeomAlgoAPI_ConeSegment.cpp
+// Created:     24 Nov 2016
+// Author:      Clarisse Genrault (CEA)
+
+#include <GeomAlgoAPI_ConeSegment.h>
+
+#include <gp_Dir.hxx>
+#include <gp_Ax1.hxx>
+#include <gp_Pnt.hxx>
+#include <TopoDS_Edge.hxx>
+
+#include <BRepPrimAPI_MakeRevol.hxx>
+#include <BRepBuilderAPI_MakeEdge.hxx>
+#include <BRepBuilderAPI_MakeWire.hxx>
+#include <BRepBuilderAPI_MakeFace.hxx>
+#include <Precision.hxx>
+
+#include <math.h>
+
+//=================================================================================================
+GeomAlgoAPI_ConeSegment::GeomAlgoAPI_ConeSegment()
+{
+}
+
+//=================================================================================================
+
+GeomAlgoAPI_ConeSegment::GeomAlgoAPI_ConeSegment(const double theRMin1,
+                                                 const double theRMax1,
+                                                 const double theRMin2,
+                                                 const double theRMax2,
+                                                 const double theZ,
+                                                 const double theStartPhi,
+                                                 const double theDeltaPhi)
+{
+  myRMin1 = theRMin1;
+  myRMax1 = theRMax1;
+  myRMin2 = theRMin2;
+  myRMax2 = theRMax2;
+  myZ = theZ;
+  myStartPhi = theStartPhi;
+  myDeltaPhi = theDeltaPhi;
+}
+
+//=================================================================================================
+bool GeomAlgoAPI_ConeSegment::check()
+{
+  if (myRMin1 < 0.)
+  {
+    myError = "Cone Segment builder :: rmin1 is negative.";
+    return false;
+  }
+  if (myRMin2 < 0.)
+  {
+    myError = "Cone Segment builder :: rmin2 is negative.";
+    return false;
+  }
+  if ((myRMax1-myRMin1) < Precision::Confusion())
+  {
+    myError = "Cone Segment builder :: rmin1 is larger than rmax1.";
+    return false;
+  }
+  if ((myRMax2-myRMin2) < Precision::Confusion())
+  {
+    myError = "Cone Segment builder :: rmin2 is larger than rmax2.";
+    return false;
+  }
+  if (myZ < Precision::Confusion())
+  {
+    myError = "Cone Segment builder :: z is negative or null.";
+    return false;
+  }
+  if (myDeltaPhi < Precision::Angular() * 180./M_PI)
+  {
+    myError = "Cone Segment builder :: deltaphi is negative or null.";
+    return false;
+  }
+  if (myDeltaPhi > 360)
+  {
+    myError = "Cone Segment builder :: deltaphi is larger than 360 degree.";
+    return false;
+  }
+  return true;
+}
+
+//=================================================================================================
+void GeomAlgoAPI_ConeSegment::build()
+{
+  myCreatedFaces.clear();
+
+  const double aStartPhiRad = myStartPhi * M_PI/180.;
+  BRepBuilderAPI_MakeWire aWireBuilder;
+
+  // Define the section from the 4 vertices
+  gp_Pnt aPointOuterBase(myRMax1 * cos(aStartPhiRad), myRMax1 * sin(aStartPhiRad), -myZ/2.);
+  gp_Pnt aPointInnerBase(myRMin1 * cos(aStartPhiRad), myRMin1 * sin(aStartPhiRad), -myZ/2.);
+  gp_Pnt aPointOuterTop(myRMax2 * cos(aStartPhiRad), myRMax2 * sin(aStartPhiRad), myZ/2.);
+  gp_Pnt aPointInnerTop(myRMin2 * cos(aStartPhiRad), myRMin2 * sin(aStartPhiRad), myZ/2.);
+
+  if ((myRMax1 - myRMin1) >= Precision::Confusion()){
+    BRepBuilderAPI_MakeEdge anEdgeBuilderBase(aPointOuterBase, aPointInnerBase);
+    anEdgeBuilderBase.Build();
+    aWireBuilder.Add(anEdgeBuilderBase.Edge());
+  }
+
+  BRepBuilderAPI_MakeEdge anEdgeBuilderOuter(aPointOuterBase, aPointOuterTop);
+  anEdgeBuilderOuter.Build();
+  aWireBuilder.Add(anEdgeBuilderOuter.Edge());
+  if ((myRMax2 - myRMin2) >= Precision::Confusion()){
+    BRepBuilderAPI_MakeEdge anEdgeBuilderTop(aPointOuterTop, aPointInnerTop);
+    anEdgeBuilderTop.Build();
+    aWireBuilder.Add(anEdgeBuilderTop.Edge());
+  }
+
+  BRepBuilderAPI_MakeEdge anEdgeBuilderInner(aPointInnerTop, aPointInnerBase);
+  anEdgeBuilderInner.Build();
+  aWireBuilder.Add(anEdgeBuilderInner.Edge());
+
+  aWireBuilder.Build();
+  BRepBuilderAPI_MakeFace aFaceBuilder(aWireBuilder.Wire());
+  aFaceBuilder.Build();
+
+  if (!aFaceBuilder.IsDone()){
+    myError = "Cone Segment builder :: section is not valid";
+    return;
+  }
+
+  // Perform a revolution based on the section to build the solid
+  gp_Dir aZDir(0., 0., 1.);
+  gp_Pnt anOrigin(0., 0., 0.);
+  gp_Ax1 aZAxis(anOrigin, aZDir);
+  BRepPrimAPI_MakeRevol* aRevolBuilder =
+    new BRepPrimAPI_MakeRevol(aFaceBuilder.Face(), aZAxis, myDeltaPhi * M_PI/180., Standard_True);
+  if(!aRevolBuilder) {
+    return;
+    myError = "Cone Segment builder :: section revolution did not succeed";
+  }
+  if(!aRevolBuilder->IsDone()) {
+    myError = "Cone Segment builder :: section revolution did not succeed";
+    return;
+  }
+
+  setImpl(aRevolBuilder);
+  setBuilderType(OCCT_BRepBuilderAPI_MakeShape);
+
+  std::shared_ptr<GeomAPI_Shape> aResultShape =
+    std::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape());
+  aResultShape->setImpl(new TopoDS_Shape(aRevolBuilder->Shape()));
+
+  // Test on the shapes
+  if (!(aResultShape).get() || aResultShape->isNull()) {
+    myError = "Cone Segment builder  :: resulting shape is null.";
+    return;
+  }
+
+  setShape(aResultShape);
+  setDone(true);
+}
diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_ConeSegment.h b/src/GeomAlgoAPI/GeomAlgoAPI_ConeSegment.h
new file mode 100644 (file)
index 0000000..bd8f55f
--- /dev/null
@@ -0,0 +1,54 @@
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+// File:        GeomAlgoAPI_ConeSegment.h
+// Created:     24 Nov 2016
+// Author:      Clarisse Genrault (CEA)
+
+#ifndef GEOMALGOAPI_CONESEGMENT_H_
+#define GEOMALGOAPI_CONESEGMENT_H_
+
+#include <GeomAlgoAPI_MakeShape.h>
+
+/**\class GeomAlgoAPI_ConeSegment
+ * \ingroup DataAlgo
+ * \brief Allows to create Cone Segment GDML Primitives.
+ */
+class GeomAlgoAPI_ConeSegment : public GeomAlgoAPI_MakeShape
+{
+ public:
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_ConeSegment();
+
+  /// Creates a cone segment using standard GDML parameters.
+  /// \param theRMin1 Cone base inner radius.
+  /// \param theRMax1 Cone base outer radius.
+  /// \param theRMin2 Cone top inner radius.
+  /// \param theRMax2 Cone top outer radius.
+  /// \param theZ Cone height.
+  /// \param theStartPhi Start angle of the cone segment.
+  /// \param theDeltaPhi Delta angle of the cone segment.
+  GEOMALGOAPI_EXPORT GeomAlgoAPI_ConeSegment(const double theRMin1,
+                                             const double theRMax1,
+                                             const double theRMin2,
+                                             const double theRMax2,
+                                             const double theZ,
+                                             const double theStartPhi,
+                                             const double theDeltaPhi);
+
+  /// Checks if the set of parameters used to define the cone segment are OK.
+  GEOMALGOAPI_EXPORT bool check();
+
+  /// Builds the cone segment based on the parameters given in the constructor.
+  GEOMALGOAPI_EXPORT void build();
+
+ private:
+  double myRMin1; /// Cone base inner radius.
+  double myRMax1; /// Cone base outer radius.
+  double myRMin2; /// Cone top inner radius.
+  double myRMax2; /// Cone top outer radius.
+  double myZ; /// Cone height.
+  double myStartPhi; /// Start angle of the cone segment.
+  double myDeltaPhi; /// Delta angle of the cone segment.
+};
+
+#endif // GEOMALGOAPI_CONESEGMENT_H_
+
diff --git a/src/GeomAlgoAPI/Test/TestAPI_GDMLConeSegment.py b/src/GeomAlgoAPI/Test/TestAPI_GDMLConeSegment.py
new file mode 100644 (file)
index 0000000..59a58dd
--- /dev/null
@@ -0,0 +1,85 @@
+# Copyright (C) 2014-2016 CEA/DEN, EDF R&D
+
+# File:        TestAPI_Box.py
+# Created:     29 Nov 2016
+# Author:      Clarisse Genrault (CEA)
+
+from GeomAlgoAPI import GeomAlgoAPI_ShapeAPI as shaperpy
+from GeomAlgoAPI import GeomAlgoAPI_Exception as myExcept
+from GeomAPI import GeomAPI_Pnt as pnt
+
+# Create several "cone segment"
+try :    
+  CS1 = shaperpy.makeConeSegment(7.,11.,5.,8.,12.,0.,270.)
+except myExcept,ec:
+  print ec.what()
+  
+try :    
+  CS2 = shaperpy.makeConeSegment(5.,10.,7.,15.,15.,45.,180.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS3 = shaperpy.makeConeSegment(5.,10.,7.,15.,15.,-45.,180.)
+except myExcept,ec:
+  print ec.what()
+  
+try :    
+  CS4 = shaperpy.makeConeSegment(0.,10.,2.,7.,3.,0.,270.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS5 = shaperpy.makeConeSegment(5.,8.,0.,6.,10.,45.,270.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS6 = shaperpy.makeConeSegment(0.,6.,0.,4.,17.,0.,270.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS7 = shaperpy.makeConeSegment(7.,11.,5.,8.,12.,0.,360.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS8 = shaperpy.makeConeSegment(-5.,11.,5.,8.,12.,0.,270.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS9 = shaperpy.makeConeSegment(11.,7.,5.,8.,12.,0.,270.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS10 = shaperpy.makeConeSegment(7.,11.,8.,5.,12.,0.,270.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS11 = shaperpy.makeConeSegment(7.,11.,-3.,5.,12.,0.,270.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS12 = shaperpy.makeConeSegment(7.,11.,5.,8.,0.,0.,270.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS13 = shaperpy.makeConeSegment(7.,11.,5.,8.,-10.,0.,270.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS14 = shaperpy.makeConeSegment(7.,11.,5.,8.,12.,-45.,-45.)
+except myExcept,ec:
+  print ec.what()
+
+try :    
+  CS15 = shaperpy.makeConeSegment(7.,11.,5.,8.,12.,45.,450.)
+except myExcept,ec:
+  print ec.what()
\ No newline at end of file
diff --git a/src/PrimitivesAPI/Test/TestBox.py b/src/PrimitivesAPI/Test/TestBox.py
new file mode 100644 (file)
index 0000000..3caff58
--- /dev/null
@@ -0,0 +1,53 @@
+"""
+Test case for Primitive Box feature. 
+Written on High API.
+"""
+from ModelAPI import *
+from GeomAPI import *
+
+import model
+
+# Get session
+aSession = ModelAPI_Session.get()
+
+# Create a part
+aDocument = aSession.activeDocument()
+aSession.startOperation()
+model.addPart(aDocument)
+aDocument = aSession.activeDocument()
+aSession.finishOperation()
+
+# Create a box with dimensions
+aSession.startOperation()
+aBox1 = model.addBox(aDocument, 10, 10, 10).result()
+aSession.finishOperation()
+assert (aBox1 is not None)
+
+# Create a first point
+aSession.startOperation()
+aFirstPoint = model.addPoint(aDocument, 0, 0, 0).result()
+aSession.finishOperation()
+
+# Create a second point
+aSession.startOperation()
+aSecondPoint = model.addPoint(aDocument, 50, 50, 50).result()
+aSession.finishOperation()
+
+# Create a box with 2 points
+aSession.startOperation()
+aBox2 = model.addBox(aDocument, aFirstPoint, aSecondPoint).result()
+aSession.finishOperation()
+assert (aBox2 is not None)
+
+# Create a box with dimensions (error)
+aSession.startOperation()
+aBox3 = model.addBox(aDocument, -10, 10, 10).result()
+aSession.finishOperation()
+assert (aBox3 is not None)
+
+# Create a box with 2 points (error)
+aSession.startOperation()
+aBox4 = model.addBox(aDocument, aFirstPoint, aFirstPoint).result()
+aSession.finishOperation()
+assert (aBox4 is not None)
+
diff --git a/src/PythonAPI/model/gdml/__init__.py b/src/PythonAPI/model/gdml/__init__.py
new file mode 100644 (file)
index 0000000..428c1be
--- /dev/null
@@ -0,0 +1,5 @@
+"""Package for GDML plugin for the Parametric Geometry API of the Modeler.
+"""
+
+from GDMLAPI import addConeSegment
+