/* GeomDataAPI.i */
%module GeomDataAPI
%{
+ #include <boost/shared_ptr.hpp>
+
+ #include "ModelAPI_Attribute.h"
#include "GeomDataAPI.h"
#include "GeomDataAPI_Point.h"
#include "GeomDataAPI_Dir.h"
#include "GeomDataAPI_Point2D.h"
- #include <boost/shared_ptr.hpp>
+
+ template<class T> boost::shared_ptr<T> castTo(boost::shared_ptr<ModelAPI_Attribute> theObject)
+ {
+ return boost::dynamic_pointer_cast<T>(theObject);
+ }
%}
// to avoid error on this
#define GEOMDATAAPI_EXPORT
+#define MODELAPI_EXPORT
// standard definitions
%include "typemaps.i"
%include "std_string.i"
-//%include <std_shared_ptr.i>
+%include "std_list.i"
// boost pointers
%include <boost_shared_ptr.i>
+%shared_ptr(ModelAPI_Attribute)
%shared_ptr(GeomDataAPI_Point)
%shared_ptr(GeomDataAPI_Dir)
%shared_ptr(GeomDataAPI_Point2D)
// all supported interfaces
+%include "ModelAPI_Attribute.h"
%include "GeomDataAPI_Point.h"
%include "GeomDataAPI_Dir.h"
%include "GeomDataAPI_Point2D.h"
+
+template<class T> boost::shared_ptr<T> castTo(boost::shared_ptr<ModelAPI_Attribute> theObject);
+%template(geomDataAPI_Point) castTo<GeomDataAPI_Point>;
+%template(geomDataAPI_Dir) castTo<GeomDataAPI_Dir>;
+%template(geomDataAPI_Point2D) castTo<GeomDataAPI_Point2D>;
#include "ModelAPI_AttributeReference.h"
#include "ModelAPI_AttributeRefAttr.h"
#include "ModelAPI_Validator.h"
+ #include "ModelAPI_AttributeRefList.h"
+ #include "ModelAPI_Result.h"
%}
// to avoid error on this
// standard definitions
%include "typemaps.i"
%include "std_string.i"
-//%include <std_shared_ptr.i>
+%include "std_list.i"
// boost pointers
%include <boost_shared_ptr.i>
%shared_ptr(ModelAPI_AttributeDouble)
%shared_ptr(ModelAPI_AttributeReference)
%shared_ptr(ModelAPI_AttributeRefAttr)
+%shared_ptr(ModelAPI_AttributeRefList)
+%shared_ptr(ModelAPI_Result)
// all supported interfaces
%include "ModelAPI_Document.h"
%include "ModelAPI_AttributeDouble.h"
%include "ModelAPI_AttributeReference.h"
%include "ModelAPI_AttributeRefAttr.h"
-%include "ModelAPI_Validator.h"
\ No newline at end of file
+%include "ModelAPI_Validator.h"
+%include "ModelAPI_AttributeRefList.h"
+%include "ModelAPI_Result.h"
+
+%template(ObjectList) std::list<boost::shared_ptr<ModelAPI_Object> >;
--- /dev/null
+#=========================================================================
+# Initialization of the test
+#=========================================================================
+from GeomDataAPI import *
+from ModelAPI import *
+
+__updated__ = "2014-07-23"
+
+aPluginManager = ModelAPI_PluginManager.get()
+aDocument = aPluginManager.rootDocument()
+aDocument.startOperation()
+#===============================================================================
+# Test ModelAPI static methods
+# TODO: Move this test in the ModelAPI progect
+#===============================================================================
+assert (ModelAPI_Feature.group() == "Features")
+assert (ModelAPI_AttributeDocRef.type() == "DocRef")
+assert (ModelAPI_AttributeDouble.type() == "Double")
+assert (ModelAPI_AttributeReference.type() == "Reference")
+assert (ModelAPI_AttributeRefAttr.type() == "RefAttr")
+assert (ModelAPI_AttributeRefList.type() == "RefList")
+#===============================================================================
+# Test GeomDataAPI static methods
+# TODO: Move this test in the GeomDataAPI progect
+#===============================================================================
+assert (GeomDataAPI_Point.type() == "Point")
+assert (GeomDataAPI_Dir.type() == "Dir")
+assert (GeomDataAPI_Point2D.type() == "Point2D")
+#=========================================================================
+# Creation of a sketch
+#=========================================================================
+aSketchFeature = aDocument.addFeature("Sketch")
+assert (aSketchFeature.getKind() == "Sketch")
+aSketchFeatureData = aSketchFeature.data()
+origin = geomDataAPI_Point(aSketchFeatureData.attribute("Origin"))
+origin.setValue(0, 0, 0)
+dirx = geomDataAPI_Dir(aSketchFeatureData.attribute("DirX"))
+dirx.setValue(1, 0, 0)
+diry = geomDataAPI_Dir(aSketchFeatureData.attribute("DirY"))
+diry.setValue(0, 1, 0)
+norm = geomDataAPI_Dir(aSketchFeatureData.attribute("Norm"))
+norm.setValue(0, 0, 1)
+# check that values have been changed
+origin = geomDataAPI_Point(aSketchFeatureData.attribute("Origin"))
+assert (origin.x() == 0)
+assert (origin.y() == 0)
+assert (origin.z() == 0)
+dirx = geomDataAPI_Dir(aSketchFeatureData.attribute("DirX"))
+assert (dirx.x() == 1)
+assert (dirx.y() == 0)
+assert (dirx.z() == 0)
+diry = geomDataAPI_Dir(aSketchFeatureData.attribute("DirY"))
+assert (diry.x() == 0)
+assert (diry.y() == 1)
+assert (diry.z() == 0)
+norm = geomDataAPI_Dir(aSketchFeatureData.attribute("Norm"))
+assert (norm.x() == 0)
+assert (norm.y() == 0)
+assert (norm.z() == 1)
+#=========================================================================
+# Creation of a point
+#=========================================================================
+aSketchReflist = aSketchFeatureData.reflist("Features")
+assert (not aSketchReflist.isInitialized())
+assert(aSketchReflist.size() == 0)
+assert (len(aSketchReflist.list()) == 0)
+aSketchPoint = aDocument.addFeature("SketchPoint")
+assert (aSketchPoint.getKind() == "SketchPoint")
+aSketchReflist.append(aSketchPoint)
+aSketchPointData = aSketchPoint.data()
+coords = geomDataAPI_Point2D(aSketchPointData.attribute("PointCoordindates"))
+assert (coords.x() == 0)
+assert (coords.y() == 0)
+assert (not coords.isInitialized())
+# Simulate SketchPlugin_Point::move(...)
+coords.setValue(10., 10.)
+assert (coords.isInitialized())
+# check that values have been changed
+aSketchReflist = aSketchFeatureData.reflist("Features")
+assert (aSketchReflist.size() == 1)
+assert (len(aSketchReflist.list()) == 1)
+aSketchPointData = aSketchPoint.data()
+coords = geomDataAPI_Point2D(aSketchPointData.attribute("PointCoordindates"))
+assert (coords.x() == 10.0)
+assert (coords.y() == 10.0)
+#===============================================================================
+# Creation of a line
+#===============================================================================
+aSketchLine = aDocument.addFeature("SketchLine")
+aSketchReflist.append(aSketchLine)
+assert (aSketchReflist.size() == 2)
+assert (len(aSketchReflist.list()) == 2)
+aSketchLineData = aSketchLine.data()
+aLineStartPoint = geomDataAPI_Point2D(aSketchLineData.attribute("StartPoint"))
+aLineEndPoint= geomDataAPI_Point2D(aSketchLineData.attribute("EndPoint"))
+assert (aLineStartPoint.x() == 0)
+assert (aLineStartPoint.y() == 0)
+assert (not aLineStartPoint.isInitialized())
+assert (aLineEndPoint.x() == 0)
+assert (aLineEndPoint.y() == 0)
+assert (not aLineEndPoint.isInitialized())
+# Simulate SketchPlugin_Line::move(...)
+aLineStartPoint.setValue(50., 50.)
+aLineEndPoint.setValue(60., 60.)
+assert (aLineStartPoint.isInitialized())
+assert (aLineEndPoint.isInitialized())
+# check that values have been changed
+aSketchLineData = aSketchLine.data()
+aLineStartPoint = geomDataAPI_Point2D(aSketchLineData.attribute("StartPoint"))
+aLineEndPoint= geomDataAPI_Point2D(aSketchLineData.attribute("EndPoint"))
+assert (aLineStartPoint.x() == 50.0)
+assert (aLineStartPoint.y() == 50.0)
+assert (aLineEndPoint.x() == 60.0)
+assert (aLineEndPoint.y() == 60.0)
+aSketchLine.firstResult()
+ #==============================================================================
+ # Finish the test
+ #==============================================================================
+aDocument.finishOperation()
+