bool empty() const;
};
+//! Pointer on attribute object
+typedef boost::shared_ptr<GeomAPI_AISObject> AISObjectPtr;
+
#endif
/** Returns the AIS preview
* \param thePrevious - defines a presentation if it was created previously
*/
- virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious) = 0;
+ virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious) = 0;
};
typedef boost::shared_ptr<GeomAPI_IPresentable> GeomPresentablePtr;
-#endif
\ No newline at end of file
+#endif
SketchPlugin_Circle.h
SketchPlugin_Arc.h
SketchPlugin_Constraint.h
+ SketchPlugin_ConstraintBase.h
SketchPlugin_ConstraintCoincidence.h
SketchPlugin_ConstraintDistance.h
SketchPlugin_ConstraintLength.h
SketchPlugin_Point.cpp
SketchPlugin_Circle.cpp
SketchPlugin_Arc.cpp
- SketchPlugin_Constraint.cpp
+ SketchPlugin_ConstraintBase.cpp
SketchPlugin_ConstraintCoincidence.cpp
SketchPlugin_ConstraintDistance.cpp
SketchPlugin_ConstraintLength.cpp
SKETCHPLUGIN_EXPORT virtual void initAttributes();
/// Returns the AIS preview
- virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+ virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious)
{return simpleAISObject(firstResult(), thePrevious);}
/// Moves the feature
SKETCHPLUGIN_EXPORT virtual void initAttributes();
/// Returns the AIS preview
- virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+ virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious)
{return simpleAISObject(firstResult(), thePrevious);}
/// Adds sub-feature of the higher level feature (sub-element of the sketch)
+++ /dev/null
-// File: SketchPlugin_Constraint.cpp
-// Created: 08 May 2014
-// Author: Artem ZHIDKOV
-
-#include "SketchPlugin_Constraint.h"
-
-boost::shared_ptr<GeomAPI_AISObject> SketchPlugin_Constraint::getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
-{
- return thePrevious;
-}
#ifndef SketchPlugin_Constraint_H_
#define SketchPlugin_Constraint_H_
-#include "SketchPlugin.h"
-#include "SketchPlugin_Feature.h"
-#include <SketchPlugin_Sketch.h>
-#include <ModelAPI_AttributeReference.h>
-#include <ModelAPI_AttributeRefAttr.h>
+#include <SketchPlugin_Feature.h>
-#include <GeomAPI_IPresentable.h>
-
-#include <list>
-
-
-/* Description:
- * Each constraint uses a set of parameters. In the SolveSpace library
- * these parameters are named "valA", "ptA", "ptB", "entityA", "entityB".
- * The "ptA" and "ptB" parameters represents a point in the constraint.
- * The "entityA" and "entityB" represents any other object (and a point too).
- * And the "valA" represents a real value.
- *
- * The attributes below are named independent of the SolveSpace.
- * Some of them may be unused.
- *
- * Also the list of possible attributes is provided to simplify assignment.
- */
+#include <string>
/// Size of the list of constraint attributes
const unsigned int CONSTRAINT_ATTR_SIZE = 4;
/** \class SketchPlugin_Constraint
- * \ingroup DataModel
- * \brief Feature for creation of a new constraint between other features.
- * Base class for all constraints.
+ * \brief Abstract interface to the SketchPlugin_ConstraintBase
+ * For more info see: SketchPlugin_ConstraintBase.h
*/
-class SketchPlugin_Constraint: public SketchPlugin_Feature,
- public GeomAPI_IPresentable
+class SketchPlugin_Constraint: public SketchPlugin_Feature
{
public:
/// The value parameter for the constraint
return EMPTY_STRING;
}
- /// \brief Returns to which group in the document must be added feature
- SKETCHPLUGIN_EXPORT virtual const std::string& getGroup()
- {static std::string MY_GROUP = SketchPlugin_Sketch::ID(); return MY_GROUP;}
-
- /** \brief Adds sub-feature of the higher level feature (sub-element of the sketch)
- * \param theFeature sub-feature
- */
- SKETCHPLUGIN_EXPORT virtual const void addSub(
- const FeaturePtr& theFeature) {}
-
- /// Returns the AIS preview
- SKETCHPLUGIN_EXPORT virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious);
-
- /// Moves the feature
- /// \param theDeltaX the delta for X coordinate is moved
- /// \param theDeltaY the delta for Y coordinate is moved
- SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY) {};
-
- /// Return the distance between the feature and the point
- /// \param thePoint the point
- virtual double distanceToPoint(const boost::shared_ptr<GeomAPI_Pnt2d>& thePoint) { return 0; };
-
protected:
/// \brief Use plugin manager for features creation
SketchPlugin_Constraint() {}
--- /dev/null
+// File: SketchPlugin_ConstraintBase.cpp
+// Created: 08 May 2014
+// Author: Artem ZHIDKOV
+
+#include "SketchPlugin_ConstraintBase.h"
+
+AISObjectPtr SketchPlugin_ConstraintBase::getAISObject(AISObjectPtr thePrevious)
+{
+ return thePrevious;
+}
+
+const void SketchPlugin_ConstraintBase::addSub(const FeaturePtr& theFeature)
+{
+
+}
+
+void SketchPlugin_ConstraintBase::move(const double theDeltaX, const double theDeltaY)
+{
+
+}
+
+double SketchPlugin_ConstraintBase::distanceToPoint(const boost::shared_ptr<GeomAPI_Pnt2d>& thePoint)
+{
+ return 0;
+}
--- /dev/null
+// File: SketchPlugin_ConstraintBase.h
+// Created: 08 May 2014
+// Author: Artem ZHIDKOV
+
+#ifndef SketchPlugin_ConstraintBase_H_
+#define SketchPlugin_ConstraintBase_H_
+
+#include "SketchPlugin.h"
+#include <SketchPlugin_Constraint.h>
+#include <SketchPlugin_Sketch.h>
+#include <ModelAPI_AttributeReference.h>
+#include <ModelAPI_AttributeRefAttr.h>
+
+#include <GeomAPI_IPresentable.h>
+
+#include <list>
+
+
+/* Description:
+ * Each constraint uses a set of parameters. In the SolveSpace library
+ * these parameters are named "valA", "ptA", "ptB", "entityA", "entityB".
+ * The "ptA" and "ptB" parameters represents a point in the constraint.
+ * The "entityA" and "entityB" represents any other object (and a point too).
+ * And the "valA" represents a real value.
+ *
+ * The attributes below are named independent of the SolveSpace.
+ * Some of them may be unused.
+ *
+ * Also the list of possible attributes is provided to simplify assignment.
+ */
+
+/** \class SketchPlugin_ConstraintBase
+ * \ingroup DataModel
+ * \brief Feature for creation of a new constraint between other features.
+ * Some feature's methods implemented here as dummy to
+ * Base class for all constraints.
+ */
+class SketchPlugin_ConstraintBase: public SketchPlugin_Constraint,
+ public GeomAPI_IPresentable
+{
+public:
+ /// Returns the AIS preview
+ SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
+
+ /** \brief Adds sub-feature of the higher level feature (sub-element of the sketch)
+ * \param theFeature sub-feature
+ */
+ SKETCHPLUGIN_EXPORT virtual const void addSub(const FeaturePtr& theFeature);
+ /// Moves the feature
+ /// \param theDeltaX the delta for X coordinate is moved
+ /// \param theDeltaY the delta for Y coordinate is moved
+ SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
+
+ /// Return the distance between the feature and the point
+ /// \param thePoint the point
+ virtual double distanceToPoint(const boost::shared_ptr<GeomAPI_Pnt2d>& thePoint);
+
+protected:
+ /// \brief Use plugin manager for features creation
+ SketchPlugin_ConstraintBase() {}
+};
+
+#endif
#define SketchPlugin_ConstraintCoincidence_H_
#include "SketchPlugin.h"
-#include "SketchPlugin_Constraint.h"
+#include "SketchPlugin_ConstraintBase.h"
#include <SketchPlugin_Sketch.h>
#include <list>
* These constraint has two attributes:
* SketchPlugin_Constraint::ENTITY_A() and SketchPlugin_Constraint::ENTITY_B()
*/
-class SketchPlugin_ConstraintCoincidence: public SketchPlugin_Constraint
+class SketchPlugin_ConstraintCoincidence: public SketchPlugin_ConstraintBase
{
public:
/// Parallel constraint kind
}
//*************************************************************************************
-boost::shared_ptr<GeomAPI_AISObject> SketchPlugin_ConstraintDistance::getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+AISObjectPtr SketchPlugin_ConstraintDistance::getAISObject(AISObjectPtr thePrevious)
{
if (!sketch())
return thePrevious;
boost::dynamic_pointer_cast<ModelAPI_AttributeDouble>(aData->attribute(SketchPlugin_Constraint::VALUE()));
double aValue = aValueAttr->value();
- boost::shared_ptr<GeomAPI_AISObject> anAIS = thePrevious;
+ AISObjectPtr anAIS = thePrevious;
if (!anAIS)
- anAIS = boost::shared_ptr<GeomAPI_AISObject>(new GeomAPI_AISObject);
+ anAIS = AISObjectPtr(new GeomAPI_AISObject);
anAIS->createDistance(aPoint1, aPoint2, aFlyoutPnt, aPlane, aValue);
// Set color from preferences
GeomAPI_Lin2d aLin2d(aPoint1->x(), aPoint1->y(), aPoint2->x(), aPoint2->y());
return aLin2d.project(thePoint);
-}
\ No newline at end of file
+}
#define SketchPlugin_ConstraintDistance_H_
#include "SketchPlugin.h"
-#include "SketchPlugin_Constraint.h"
+#include "SketchPlugin_ConstraintBase.h"
#include "SketchPlugin_Sketch.h"
#include "ModelAPI_Data.h"
* These constraint has three attributes:
* SketchPlugin_Constraint::VALUE(), SketchPlugin_Constraint::ENTITY_A() and SketchPlugin_Constraint::ENTITY_B()
*/
-class SketchPlugin_ConstraintDistance: public SketchPlugin_Constraint
+class SketchPlugin_ConstraintDistance: public SketchPlugin_ConstraintBase
{
public:
/// Distance constraint kind
SKETCHPLUGIN_EXPORT virtual void initAttributes();
/// Returns the AIS preview
- SKETCHPLUGIN_EXPORT virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious);
+ SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
/// Moves the feature
/// \param theDeltaX the delta for X coordinate is moved
}
}
-boost::shared_ptr<GeomAPI_AISObject> SketchPlugin_ConstraintLength::getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+AISObjectPtr SketchPlugin_ConstraintLength::getAISObject(AISObjectPtr thePrevious)
{
if (!sketch())
return thePrevious;
boost::dynamic_pointer_cast<ModelAPI_AttributeDouble>(data()->attribute(SketchPlugin_Constraint::VALUE()));
double aValue = aValueAttr->value();
- boost::shared_ptr<GeomAPI_AISObject> anAIS = thePrevious;
+ AISObjectPtr anAIS = thePrevious;
if (!anAIS)
- anAIS = boost::shared_ptr<GeomAPI_AISObject>(new GeomAPI_AISObject);
+ anAIS = AISObjectPtr(new GeomAPI_AISObject);
anAIS->createDistance(aPoint1, aPoint2, aFlyoutPnt, aPlane, aValue);
// Set color from preferences
#define SketchPlugin_ConstraintLength_H_
#include "SketchPlugin.h"
-#include "SketchPlugin_Constraint.h"
+#include "SketchPlugin_ConstraintBase.h"
#include <SketchPlugin_Sketch.h>
#include <list>
* SketchPlugin_Constraint::VALUE() (length) and SketchPlugin_Constraint::ENTITY_A() (segment),
* SketchPlugin_Constraint::FLYOUT_VALUE_PNT() (distance of a constraints handle)
*/
-class SketchPlugin_ConstraintLength: public SketchPlugin_Constraint
+class SketchPlugin_ConstraintLength: public SketchPlugin_ConstraintBase
{
public:
/// Length constraint kind
SKETCHPLUGIN_EXPORT virtual void initAttributes();
/// Returns the AIS preview
- SKETCHPLUGIN_EXPORT virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious);
+ SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
/// Moves the feature
/// \param theDeltaX the delta for X coordinate is moved
{
}
-boost::shared_ptr<GeomAPI_AISObject> SketchPlugin_ConstraintParallel::getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+AISObjectPtr SketchPlugin_ConstraintParallel::getAISObject(AISObjectPtr thePrevious)
{
if (!sketch())
return thePrevious;
boost::dynamic_pointer_cast<GeomDataAPI_Point2D>(aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
boost::shared_ptr<GeomAPI_Pnt> aFlyoutPnt = sketch()->to3D(aFlyoutAttr->x(), aFlyoutAttr->y());
- boost::shared_ptr<GeomAPI_AISObject> anAIS = thePrevious;
+ AISObjectPtr anAIS = thePrevious;
if (!anAIS)
- anAIS = boost::shared_ptr<GeomAPI_AISObject>(new GeomAPI_AISObject);
+ anAIS = AISObjectPtr(new GeomAPI_AISObject);
anAIS->createParallel(aLine1, aLine2, aFlyoutPnt, aPlane);
// Set color from preferences
#include "SketchPlugin.h"
#include <SketchPlugin_Sketch.h>
-#include "SketchPlugin_Constraint.h"
+#include "SketchPlugin_ConstraintBase.h"
#define PARALLEL_COLOR "#ffff00"
* These constraint has two attributes:
* SketchPlugin_Constraint::ENTITY_A() and SketchPlugin_Constraint::ENTITY_B()
*/
-class SketchPlugin_ConstraintParallel: public SketchPlugin_Constraint
+class SketchPlugin_ConstraintParallel: public SketchPlugin_ConstraintBase
{
public:
/// Parallel constraint kind
SKETCHPLUGIN_EXPORT virtual void initAttributes();
/// Returns the AIS preview
- SKETCHPLUGIN_EXPORT virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious);
+ SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
/// Moves the feature
/// \param theDeltaX the delta for X coordinate is moved
{
}
-boost::shared_ptr<GeomAPI_AISObject> SketchPlugin_ConstraintPerpendicular::getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+AISObjectPtr SketchPlugin_ConstraintPerpendicular::getAISObject(AISObjectPtr thePrevious)
{
if (!sketch())
return thePrevious;
boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(anAttr2->object());
if (aConst2) aLine2 = aConst2->shape();
- boost::shared_ptr<GeomAPI_AISObject> anAIS = thePrevious;
+ AISObjectPtr anAIS = thePrevious;
if (!anAIS)
- anAIS = boost::shared_ptr<GeomAPI_AISObject>(new GeomAPI_AISObject);
+ anAIS = AISObjectPtr(new GeomAPI_AISObject);
anAIS->createPerpendicular(aLine1, aLine2, aPlane);
// Set color from preferences
#include "SketchPlugin.h"
#include <SketchPlugin_Sketch.h>
-#include "SketchPlugin_Constraint.h"
+#include "SketchPlugin_ConstraintBase.h"
#define PERPENDICULAR_COLOR "#ffff00"
* These constraint has two attributes:
* SketchPlugin_Constraint::ENTITY_A() and SketchPlugin_Constraint::ENTITY_B()
*/
-class SketchPlugin_ConstraintPerpendicular: public SketchPlugin_Constraint
+class SketchPlugin_ConstraintPerpendicular: public SketchPlugin_ConstraintBase
{
public:
/// Perpendicular constraint kind
SKETCHPLUGIN_EXPORT virtual void initAttributes();
/// Returns the AIS preview
- SKETCHPLUGIN_EXPORT virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious);
+ SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
/// Moves the feature
/// \param theDeltaX the delta for X coordinate is moved
}
}
-boost::shared_ptr<GeomAPI_AISObject> SketchPlugin_ConstraintRadius::getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+AISObjectPtr SketchPlugin_ConstraintRadius::getAISObject(AISObjectPtr thePrevious)
{
if (!sketch())
return thePrevious;
if (aValueAttr && aValueAttr->isInitialized())
aValue = aValueAttr->value();
- boost::shared_ptr<GeomAPI_AISObject> anAIS = thePrevious;
+ AISObjectPtr anAIS = thePrevious;
if (!anAIS)
- anAIS = boost::shared_ptr<GeomAPI_AISObject>(new GeomAPI_AISObject);
+ anAIS = AISObjectPtr(new GeomAPI_AISObject);
anAIS->createRadius(aCircle, aFlyoutPnt, aValue);
// Set color from preferences
#include "SketchPlugin.h"
#include <SketchPlugin_Sketch.h>
-#include "SketchPlugin_Constraint.h"
+#include "SketchPlugin_ConstraintBase.h"
#define RADIUS_COLOR "#ff00ff"
* These constraint has two attributes:
* SketchPlugin_Constraint::VALUE() (radius), SketchPlugin_Constraint::ENTITY_A() (a circle)
*/
-class SketchPlugin_ConstraintRadius: public SketchPlugin_Constraint
+class SketchPlugin_ConstraintRadius: public SketchPlugin_ConstraintBase
{
public:
/// Radius constraint kind
SKETCHPLUGIN_EXPORT virtual void initAttributes();
/// Returns the AIS preview
- SKETCHPLUGIN_EXPORT virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious);
+ SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
/// Moves the feature
/// \param theDeltaX the delta for X coordinate is moved
return mySketch;
}
-boost::shared_ptr<GeomAPI_AISObject> SketchPlugin_Feature::simpleAISObject(
- boost::shared_ptr<ModelAPI_Result> theRes, boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+AISObjectPtr SketchPlugin_Feature::simpleAISObject(
+ boost::shared_ptr<ModelAPI_Result> theRes, AISObjectPtr thePrevious)
{
boost::shared_ptr<ModelAPI_ResultConstruction> aConstr =
boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(theRes);
boost::shared_ptr<GeomAPI_Shape> aPreview;
if (aConstr) aPreview = aConstr->shape();
- boost::shared_ptr<GeomAPI_AISObject> aResult = thePrevious;
+ AISObjectPtr aResult = thePrevious;
if (!aResult)
- aResult = boost::shared_ptr<GeomAPI_AISObject>(new GeomAPI_AISObject());
+ aResult = AISObjectPtr(new GeomAPI_AISObject());
aResult->createShape(aPreview);
return aResult;
}
{
public:
/// Simple creation of interactive object by the result of the object
- static boost::shared_ptr<GeomAPI_AISObject> simpleAISObject(
- boost::shared_ptr<ModelAPI_Result> theRes, boost::shared_ptr<GeomAPI_AISObject> thePrevious);
+ static AISObjectPtr simpleAISObject(
+ boost::shared_ptr<ModelAPI_Result> theRes, AISObjectPtr thePrevious);
/// Adds sub-feature of the higher level feature (sub-element of the sketch)
/// \param theFeature sub-feature
SKETCHPLUGIN_EXPORT virtual void initAttributes();
/// Returns the AIS preview
- SKETCHPLUGIN_EXPORT virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+ SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious)
{return simpleAISObject(firstResult(), thePrevious);}
/// Moves the feature
SKETCHPLUGIN_EXPORT virtual void initAttributes();
/// Returns the AIS preview
- virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+ virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious)
{return simpleAISObject(firstResult(), thePrevious);}
/// Moves the feature
theShapes.push_back(aFace);
}
-boost::shared_ptr<GeomAPI_AISObject> SketchPlugin_Sketch::
- getAISObject(boost::shared_ptr<GeomAPI_AISObject> thePrevious)
+AISObjectPtr SketchPlugin_Sketch::getAISObject(AISObjectPtr thePrevious)
{
boost::shared_ptr<GeomDataAPI_Dir> aNorm =
boost::dynamic_pointer_cast<GeomDataAPI_Dir>(data()->attribute(SketchPlugin_Sketch::NORM_ID()));
if (!aNorm || (aNorm->x() == 0 && aNorm->y() == 0 && aNorm->z() == 0)) {
- boost::shared_ptr<GeomAPI_AISObject> aAIS = thePrevious;
+ AISObjectPtr aAIS = thePrevious;
if (!aAIS) {
std::list<boost::shared_ptr<GeomAPI_Shape> > aFaces;
addPlane(0, 1, 0, aFaces); // XZ plane
addPlane(0, 0, 1, aFaces); // XY plane
boost::shared_ptr<GeomAPI_Shape> aCompound = GeomAlgoAPI_CompoundBuilder::compound(aFaces);
- aAIS = boost::shared_ptr<GeomAPI_AISObject>(new GeomAPI_AISObject());
+ aAIS = AISObjectPtr(new GeomAPI_AISObject());
aAIS->createShape(aCompound);
std::vector<int> aRGB = Config_PropManager::color("Sketch definition",
}
return aAIS;
}
- return boost::shared_ptr<GeomAPI_AISObject>();
+ return AISObjectPtr();
}
/// Returns the basis plane for the sketch
boost::shared_ptr<GeomAPI_Pln> plane();
- virtual boost::shared_ptr<GeomAPI_AISObject> getAISObject(
- boost::shared_ptr<GeomAPI_AISObject> thePrevious);
+ virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
protected:
/// Creates a plane and append it to the list
ADD_DEFINITIONS(-DSKETCHSOLVER_EXPORTS ${BOOST_DEFINITIONS})
-ADD_LIBRARY(SketchSolver SHARED ${PROJECT_SOURCES} ${PROJECT_HEADERS}
+ADD_LIBRARY(SketchSolver MODULE ${PROJECT_SOURCES} ${PROJECT_HEADERS}
)
TARGET_LINK_LIBRARIES(SketchSolver ${PROJECT_LIBRARIES}