#pragma once #include "DbBlockAction.h" /** \details Block action that stretches and rotates it's selection set It is a combination of OdDbBlockStretchAction and OdDbBlockRotateAction */ class DYNBLOCKS_EXPORT OdDbBlockPolarStretchAction : public OdDbBlockAction { public: ODDB_EVAL_DECLARE_MEMBERS(OdDbBlockPolarStretchAction); /** \details Default constructor */ OdDbBlockPolarStretchAction(); /** \details Returns the angle offset applied to the stretch vector */ double angleOffset() const; /** \details Sets the 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 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 selection set. \remarks Block elements selection is also taken from that set Stretch points information is determined using the stretch frame. */ bool setSelectionSet(const OdDbObjectIdArray&) override; /** \details Sets the selection set of the entities and block elements that will be only rotated (even if they intersect the stretch frame). */ bool setRotateOnlySelectionSet(const OdDbObjectIdArray&); /** \details Returns the block elements that will be only rotated by the action */ OdDbObjectIdArray rotateOnlyElementSelectionSet() const; /** \details Returns the entities that will be only rotated by the action */ OdDbObjectIdArray rotateOnlySelectionSet() const; /** \details Event fired by the block editor at the beginning of the block editor closing */ void onEndEditStarted(OdDbObjectId, OdDbObjectId) override; }; typedef OdSmartPtr OdDbBlockPolarStretchActionPtr;