#pragma once #include "DbBlockAction.h" /** \details Block action that stretches it's selection set using OdDbEntity::moveStretchPoints */ class DYNBLOCKS_EXPORT OdDbBlockStretchAction : public OdDbBlockAction { public: ODDB_EVAL_DECLARE_MEMBERS(OdDbBlockStretchAction); /** \details Default constructor */ OdDbBlockStretchAction(); /** \details Returns angle offset applied to the stretch vector */ double angleOffset() const; /** \details Sets angle offset applied to the stretch vector */ void setAngleOffset(double); /** \details Returns the distance multiplier applied to the stretch vector */ double distanceMultiplier() const; /** \details Sets the distance multiplier applied to the stretch vector */ void setDistanceMultiplier(double); /** \details Returns the restriction applied to the stretch vector */ OdDbBlockActionXYType distanceType() const; /** \details Sets the restriction applied to the stretch vector */ void setDistanceType(OdDbBlockActionXYType); /** \details Returns the rectangle defining which entities will be stretched (and by which points) */ OdGePoint2dArray stretchFrame() const; /** \details Sets the rectangle defining which entities will be stretched (and by which points) */ void setStretchFrame(const OdGePoint2dArray&); /** \details Sets the action entity selection set. \remarks Returns false if setting this selection set will produce cycles in the evaluation graph. Block elements selection is also taken from that set. Stretch points information is determined using the stretch frame. */ bool setSelectionSet(const OdDbObjectIdArray&) override; /** \details Event fired by the block editor at the beginning of the block editor closing */ void onEndEditStarted(OdDbObjectId, OdDbObjectId) override; }; typedef OdSmartPtr OdDbBlockStretchActionPtr;