|
|
|
|
|
#pragma once
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD> CurveEx.h
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07 19:50:08
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#include "DrawModel\curve.h"
|
|
|
|
|
|
#include "CurveType.h"
|
|
|
|
|
|
#include "rect8ex.h"
|
|
|
|
|
|
#include "afxdb.h"
|
|
|
|
|
|
#include "CurveMark.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using namespace NCurveEmbellish;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define PLINE_EMBELLISH_ALL (PLINE_NODRAW|PLINE_SOLID|PLINE_CLOSE|PLINE_BEZIER|PLINE_SPLINE|PLINE_OFFSET|PLINE_TRANSPARENT|PLINE_TRANSPARENT_VALUE|PLINE_WAVE) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
#define PLINE_TYPE_ALL (PLINE_W|PLINE_MIDLE|/*PLINE_VIRTUAL|*/PLINE_DESIGN|PLINE_EMBELLISH_ALL) //<2F><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
struct stuCurveWave
|
|
|
|
|
|
{
|
|
|
|
|
|
double T; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double A; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
long dnum; //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷִ<EFBFBD>п<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD> CCurve û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
class AFX_EXT_CLASS CCurveEx : public CCurve
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CCurveEx(int n);
|
|
|
|
|
|
CCurveEx(void);
|
|
|
|
|
|
CCurveEx(const CCurveEx& other);
|
|
|
|
|
|
virtual ~CCurveEx(void);
|
|
|
|
|
|
|
|
|
|
|
|
int64_t GetId() const;
|
|
|
|
|
|
void SetId(int64_t id);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void Initial(void);
|
|
|
|
|
|
virtual void Clear(void);
|
|
|
|
|
|
|
|
|
|
|
|
void Serialize(CArchive& ar, const short &ver) override;
|
|
|
|
|
|
virtual int Read(CFile &fr, const short& ver);
|
|
|
|
|
|
virtual void Write(CFile& fw, const short& ver, double dRedundantError/*=-1.0*/);
|
|
|
|
|
|
virtual void GetRange(CRect8& range,void *HowToViewCurve=NULL);
|
|
|
|
|
|
virtual void GetRange(CPoint3D& minPoint, CPoint3D& maxPoint);
|
|
|
|
|
|
virtual BOOL IsInRange(CRect8& range,void *HowToViewCurve=NULL);
|
|
|
|
|
|
// typeΪУ<CEAA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Уλ<D0A3><CEBB><EFBFBD>ĵ<EFBFBD>Уλ<D0A3><CEBB>;pValueΪ<65><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬<EFBFBD><EBA3AC>CCalibrate2<65><32>CCalibrate4<65><34>
|
|
|
|
|
|
virtual void Calibrate(int type, void* pValue);
|
|
|
|
|
|
virtual void ScaleProperty(double sx, double sy);
|
|
|
|
|
|
virtual void ScaleCoor(double xs, double ys, double dx, double dy);
|
|
|
|
|
|
virtual void ScaleCoordinate(double sx, double sy, int mode); //mode=0:<3A>ӣ<EFBFBD>1:<3A><><EFBFBD><EFBFBD>2:<3A>ˣ<EFBFBD>3:<3A><>
|
|
|
|
|
|
|
|
|
|
|
|
virtual void WriteDML(CFile& fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
virtual int ReadDML(CFile &fr, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
virtual void WritePCG(CFile& fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
virtual int ReadPCG(CFile &fr, const short &ver);
|
|
|
|
|
|
int ReadPCG2(CFile &fr, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void ExchangeXY(void); //<2F><><EFBFBD><EFBFBD>XY<58><59><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void ExchangeXY(void* pProjection); //ת<><D7AA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>,CPrljectio* pProjection
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL SetPoints(CPointList &dp, int nnPoint, BOOL IsAutoLocation=TRUE);
|
|
|
|
|
|
|
|
|
|
|
|
void TransferFrom(CCurve& cv); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CCurve<76><65><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
BOOL bAutoLocation = FALSE;
|
|
|
|
|
|
int midle = 0;
|
|
|
|
|
|
double width = 0.0;
|
|
|
|
|
|
double m_SmoothStep = 0.0;
|
|
|
|
|
|
double m_dOffset = 0.0;
|
|
|
|
|
|
CCurveType VirtualType;
|
|
|
|
|
|
CCurveMark* mark = nullptr;
|
|
|
|
|
|
|
|
|
|
|
|
stuCurveWave m_stuCurveWave; //Ϊ<>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD>Σ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
void operator=(const CCurveEx& curve);
|
|
|
|
|
|
void CloneOtherParameter(const CCurveEx& curve);
|
|
|
|
|
|
dfPoint MidleFilter(int i);
|
|
|
|
|
|
BOOL EnableClose(BOOL bEnable); //<2F>ɹ<EFBFBD><C9B9>ĺ<DEB8><C4BA>ŷ<EFBFBD><C5B7><EFBFBD>TRUE
|
|
|
|
|
|
|
|
|
|
|
|
void WriteXYZ(CFile& fw, char split=',', BOOL bWithName=TRUE);
|
|
|
|
|
|
void WriteXYZ(CFile& fw, long nID, CString layer, char split=',');
|
|
|
|
|
|
void WritePure(CFile& fw);
|
|
|
|
|
|
// void WriteNodeToDB(CDatabase &db, CString &strTableName, CString &Maker, CString &Date, CString &projection, CString &layer);
|
|
|
|
|
|
// void WriteToDB(CDatabase &db, CString &strTableName, CString &Maker, CString &Date, CString &projection, CString &layer);
|
|
|
|
|
|
void WriteBezier(CFile& fw, double sd, int bIsClose);
|
|
|
|
|
|
void WriteSpline(CFile& fw, double sd, int bIsClose);
|
|
|
|
|
|
int GetArrow(CCurveEx& curveArrow, double dArrowHeight, int nHeadTail); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
BOOL CreateCurve(double x1, double y1, double x2, double y2, double bulge);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
void CopyFrom(const CCurveEx& other);
|
|
|
|
|
|
|
|
|
|
|
|
int64_t m_id = -1;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
virtual int ReadPCG(void *pxp, const short &ver);
|
|
|
|
|
|
int ReadPCG2(void *pxp, const short &ver);
|
|
|
|
|
|
};
|