You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.7 KiB
C

1 month ago
#pragma once
#include "itemfocusrect.h"
namespace NItem
{
#define CURVE_NULL_EMBELLISH 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_SET_EMBELLISH 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_CONTOUR 3 //<2F><><EFBFBD>ݵ<EFBFBD>ֵ<EFBFBD><D6B5>ֵ<EFBFBD><D6B5><EFBFBD>õ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ɫ
#define CURVE_AUTO_LOCATION 4 //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׮<EFBFBD><D7AE>
#define CURVE_REVERSAL 5 //<2F><><EFBFBD>߷<EFBFBD>ת˳<D7AA><CBB3>
#define CURVE_SET_NAME 6 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_NAME_TO_Z 7 //<2F><><EFBFBD>Ʊ<EFBFBD>Ϊ<EFBFBD><CEAA>ֵ
#define CURVE_Z_TO_NAME 8 //<2F><>ֵ<EFBFBD><D6B5>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
#define CURVE_NAME_LOG 9 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
#define CURVE_NAME_EXPONENTIAL 10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡָ<C8A1><D6B8>
#define CURVE_NAME_IS_NULL 11 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_ANY_NAME 12 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ARC_TO_CURVE 13 //Բ<><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_SMOOTH 14 //<2F><EFBFBD><E2BBAC><EFBFBD><EFBFBD>
#define CURVE_TO_WAVE 15 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_OFFSET 16 //ƽ<><C6BD><EFBFBD><EFBFBD>
#define CURVE_NODE_ENCRYPT 17 //<2F><><EFBFBD>߽ڵ<DFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_REDUNDANT 18 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_CLOSE 19 //<2F><><EFBFBD>߱պ<DFB1><D5BA><EFBFBD>β
#define CURVE_LAYER_TO_NAME 20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
#define CURVE_AUTO_LINK 21 //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>CGM<47>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_FITTING 22 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD>ָ<EFBFBD><D6B8>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CURVE_SURFACE_Z 23 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><5A><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CItemCurveProcess : public CItemFocusRect
{
public:
CItemCurveProcess(CSigmaDoc * ppDoc);
virtual ~CItemCurveProcess(void);
void OnDraw(CXyDC* pDC) override;
void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) override;
void OnRButtonDown(UINT nFlags, CPoint point) override;
BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) override;
void DoLButtonUp(CDC *pDC) override;
//<2F><><EFBFBD>ܽڵ<DCBD>
//mode 0--<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>нڵ<D0BD> 1--<2D><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽڵ<C9BD>
//bRounding true <20><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>ȡ<EFBFBD><C8A1>
bool NodeEncrypt(int mode, double step, bool bRounding, CPositionList & selectionSet);
int PolygonConnect(CPositionList& selections, CString& layerName, bool deleteOriginalCurves);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹յ<EFBFBD>
*
* \param tolerance
* \param selectionSet
* \return
*/
bool ToRedundant(double tolerance, CPositionList & selectionSet);
//<2F><EFBFBD><E2BBAC><EFBFBD><EFBFBD>
//mode 0--B<><42><EFBFBD><EFBFBD> 1--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool SmoothCurve(int mode, double step, CPositionList & selecctionSet);
int SetProcessIdea(int nIdea);
CString name;
int GetProcessResult() { return m_processResult; }
void SetCurveStyle(CHowToViewCurve& curveStyle);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><>Բ<EFBFBD><D4B2>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>:step <20><><EFBFBD><EFBFBD>
// bDeletion <20>Ƿ<EFBFBD>ɾ<EFBFBD><C9BE>ԭʼԪ<CABC><D4AA>
//<2F><><EFBFBD><EFBFBD>ֵ:
int ArcToCurve(CPositionList & select, double step);
void SetCurveName(CString curveName, CPositionList & selectionSet);
std::string FindNameIsNull(CPositionList & selecctionSet);
protected:
int SetNullEmbellish(void);
int SetEmbellish(void);
int CurveContour(void);
int AutoLocation(void);
int Reversal(void);
int SetName(void);
int NameToZ(void);
int SetZFromSurface(void);
int ZToName(void);
int LayerToName(void);
int NameLog(void);
int NameExponential(void);
int AnyName(void);
int CurveSmooth(void);
int CurveOffset(void);
int NodeEncrypt(void);
int ToRedundant(void);
int CloseCurve(void);
int ToWave(void);
POSITION SelectOneCurve(UINT nFlags, CPoint point);
int m_idea; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
CColorBase* m_pColor;
double a;
long decimal;
BOOL m_bIsE;
bool m_bIsLog;
int m_selSmooth; //ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD>ߵķ<DFB5>ʽ<EFBFBD><CABD>0ΪS<CEAA><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1ΪB<CEAA><42><EFBFBD><EFBFBD>
BOOL m_bIsDelete;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> cycle=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,swing=<3D><><EFBFBD><EFBFBD>,dnum=һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double cycle;
double swing;
long dnum;
BOOL m_bDeleteSourveCurve;
double m_dCurveOffset;
//<2F>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
int m_nMode;
double m_dStep;
BOOL m_bInteger; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>ȡ<EFBFBD><C8A1>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double m_error;
int m_processResult;
CHowToViewCurve m_CurveStyle;
public:
int AutoLinkCurve(double maxError = 1E-5, bool onlySameName = false);
int GetNextLinkCurve(CPositionList& select, void* pActionList, double maxError, bool onlySameName);
int FittingCurve(void);
};
};