#ifndef _DBLANDFORM_H #define _DBLANDFORM_H #include "TPGeLandform.h" #define _CMF_NO2D 0x000001 #define _CMF_NO3D 0x000002 #define _CMF_NO_GRID3D 0x000004 #define _CMF_NO_CURVE2D 0x000008 #define _CMF_HAS_CURVE3D 0x000010 #define _CMF_SQFIT 0x000020//平方插值 #define _CMF_GRADIENT3D 0x000040// //大地模型 class TARCH_EXP TDbLandform: public TDbEntity { DECLARE_TENTBASE(); ACRX_DECLARE_MEMBERS(TDbLandform); private: const static Adesk::UInt8 g_nVersion; protected: XPoly2D m_polyOutline; DList m_lstEqHeightCurve; double m_nDistX,m_nDistY;//网格精度 Adesk::UInt16 m_nMinColor,m_nMaxColor; Adesk::UInt32 m_nCMFlag; public: TDbLandform(); void SetOutline(const XPoly2D&poly); void SetColor(Adesk::UInt16 c0,Adesk::UInt16 c1){assertWriteEnabled();m_nMinColor=c0;m_nMaxColor=c1;}//ok void AppendPoly(const XPoly2D& poly);//RETURN POLY_* void Reset(){assertWriteEnabled();m_lstEqHeightCurve.Reset();}//ok void SetHas2D(BOOL bHas=TRUE); void SetHas3D(BOOL bHas=TRUE); void SetNoGrid3D(BOOL bTrue); void SetHasCurve3D(BOOL bTrue); void SetNoCurve2D(BOOL bTrue); void SetSqFit(BOOL bTrue); void SetGradient3D(BOOL bTrue); void SetGridSizeX(double size){assertWriteEnabled();m_nDistX=size;}//ok void SetGridSizeY(double size){assertWriteEnabled();m_nDistY=size;}//ok BOOL Has2D() const; BOOL Has3D() const; BOOL HasGrid3D()const{return (m_nCMFlag&_CMF_NO_GRID3D)==0;}//ok BOOL HasCurve3D()const{return (m_nCMFlag&_CMF_HAS_CURVE3D)!=0;}//ok BOOL HasCurve2D()const{return (m_nCMFlag&_CMF_NO_CURVE2D)==0;}//ok BOOL IsSqFit()const{return (m_nCMFlag&_CMF_SQFIT)!=0;}//ok BOOL IsGradient3D()const{return (m_nCMFlag&_CMF_GRADIENT3D)!=0;}//ok double GetElevation()const; double GetGridSizeX()const{return m_nDistX;}//ok double GetGridSizeY()const{return m_nDistY;}//ok void CreateLandform(GLandform&land)const; public: // Override from AcDbEntity virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const; virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler*); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const; virtual Acad::ErrorStatus dxfInFields (AcDbDxfFiler*); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const; virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform); virtual Acad::ErrorStatus subGetOsnapPoints( AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& ptPick, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); // Override from TEntityBase virtual BOOL IsValid() const; virtual bool IsModelEntity() const{return true;} virtual int GetFirstVersion()const{return 7;}//ok virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag); virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const; virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &dc) const; virtual void GetTips(DList &) const; //取动态属性显示数据 virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const; virtual int GetCtrlToggleIndex()const{return 3;}//ok virtual const TCHAR* GetDefaultLayer()const; virtual void UnionScale(double nScale); }; void InitDbLandform(BOOL bTrue); #endif