#pragma once #include "ActionItem.h" /** * 线和网格曲线z值反转的撤消和恢复 */ class CActionReverseZItem : public CActionItem { public: CActionReverseZItem(); /** * 构造函数 * * \param ppDoc * \param actionType * \param elements 要反转z值的元素 */ CActionReverseZItem(CSigmaDoc* ppDoc, UINT actionType, const CPositionList &elements); std::string GetActionName() const override { return typeid(*this).name(); } void Undo() override; void Redo() override; void Do() override; void accept(CActionVisitor& visitor) override; friend class BlobSerializer; private: void Reverse(); /** * 反转网格 z 值 * * \param pMesh */ void ReverseMesh(CMesh* pMesh); /** * 更新网格,把更新单独拎出来是因为得等其它数据都反转完了,它们才能正常工作 * * \param pMesh */ void UpdateMesh(CMesh* pMesh); /** * 反转颜色标尺 * * \param pMesh */ void ReverseColorRuler(CMesh* pMesh); /** * 反转颜色模板 * * \param pMesh */ void ReverseColorBase(CMesh* pMesh); /** * 反转网格节点 z 值 * * \param pMesh */ void ReverseDfg(CMesh* pMesh); /** * 反转曲线 z 值 * * \param pCurve */ void ReverseCurve(CCurveEx *pCurve); CPositionList m_elements; };