return MY_SOLVER_DOF;
}
+ /// Action ID to remove links to external entities while changing the sketch plane.
+ inline static const std::string& ACTION_REMOVE_EXTERNAL()
+ {
+ static const std::string MY_ACTION_REMOVE_EXTERNAL("RemoveExternalLinks");
+ return MY_ACTION_REMOVE_EXTERNAL;
+ }
+
/// Returns the kind of a feature
SKETCHPLUGIN_EXPORT virtual const std::string& getKind()
{
std::shared_ptr<GeomDataAPI_Dir> aNorm = std::dynamic_pointer_cast<GeomDataAPI_Dir>(
aData->attribute(NORM_ID()));
+ if (!aNorm->isInitialized() || !aX->isInitialized() ||
+ aNorm->dir()->cross(aX->dir())->squareModulus() < 1.e-14)
+ return std::shared_ptr<GeomAPI_Ax3>();
+
return std::shared_ptr<GeomAPI_Ax3>(new GeomAPI_Ax3(aC->pnt(), aX->dir(), aNorm->dir()));
}
SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
+ /// Performs some custom feature specific functionality (normally called by some GUI button)
+ /// \param theActionId an action key
+ /// \return a boolean value about it is performed
+ SKETCHPLUGIN_EXPORT virtual bool customAction(const std::string& theActionId);
+
/// \brief Create a result for the point in the attribute if the attribute is initialized
/// \param theFeature a source feature
/// \param theSketch a sketch intance
SketchPlugin_Sketch* theSketch,
const std::string& theAttributeID, const int theIndex);
+ /// \brief Create a result for the segment given by a pair of attributes
+ /// \param theFeature a source feature
+ /// \param theSketch a sketch intance
+ /// \param theStartAttrID an attribute string
+ /// \param theEndAttrID an attribute string
+ /// \param theIndex an index of the result
+ static void createLine2DResult(ModelAPI_Feature* theFeature,
+ SketchPlugin_Sketch* theSketch,
+ const std::string& theStartAttrID,
+ const std::string& theEndAttrID,
+ const int theIndex = 0);
+
/// Add new feature and fill the data of the feature by the data of the parameter feature.
/// The name of the created feature stays unique.
/// \param theFeature a source feature
return isCustomized;
}
+private:
+ /// Substitute all links to external objects by newly created features.
+ /// \return \c true, if all links updated.
+ bool removeLinksToExternal();
+
+ /// Update projected coordinate axes
+ void updateCoordinateAxis(ObjectPtr theSub, std::shared_ptr<GeomAPI_Ax3> thePlane);
+
+private:
+ std::shared_ptr<GeomAPI_Ax3> myPlane;
};
#endif