114 lines
3.1 KiB
C++
114 lines
3.1 KiB
C++
#pragma once
|
|
#include "aecdbentitybase.h"
|
|
#include "_cgal.h"
|
|
#include "AecDbObjXDataMap.h"
|
|
|
|
#ifdef EARTHWORM_EXPORT
|
|
#define DLLIMPEXP __declspec(dllexport)
|
|
#else
|
|
#define DLLIMPEXP __declspec(dllimport)
|
|
#endif
|
|
|
|
class DLLIMPEXP AecDbTerrain : public AecDbEntityBase
|
|
{
|
|
public:
|
|
ACRX_DECLARE_MEMBERS(AecDbTerrain);
|
|
|
|
protected:
|
|
static Adesk::UInt32 kCurrentVersionNumber;
|
|
|
|
public:
|
|
AecDbTerrain(void);
|
|
virtual ~AecDbTerrain(void);
|
|
|
|
#pragma region inherit interface
|
|
|
|
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
|
|
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
|
|
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler);
|
|
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const;
|
|
|
|
virtual Acad::ErrorStatus subExplode(AcDbVoidPtrArray& entitySet) const;
|
|
virtual void subList() const;
|
|
|
|
virtual Acad::ErrorStatus subGetGripPoints(AcDbGripDataPtrArray& grips,
|
|
const double curViewUnitSize,
|
|
const int gripSize,
|
|
const AcGeVector3d& curViewDir,
|
|
const int bitflags) const;
|
|
|
|
virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints,
|
|
AcDbIntArray& osnapModes,
|
|
AcDbIntArray& geomIds) const;
|
|
|
|
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData, const AcGeVector3d& offset, const int bitflags);
|
|
|
|
virtual void GetGripText(int nPos, CString& sText);
|
|
|
|
virtual Acad::ErrorStatus subIntersectWith( const AcDbEntity* pEnt,
|
|
AcDb::Intersect intType,
|
|
AcGePoint3dArray& points,
|
|
INT_PTR thisGsMarker,
|
|
INT_PTR otherGsMarker) const;
|
|
|
|
virtual Acad::ErrorStatus subIntersectWith( const AcDbEntity* pEnt,
|
|
AcDb::Intersect intType,
|
|
const AcGePlane& projPlane,
|
|
AcGePoint3dArray& points,
|
|
INT_PTR thisGsMarker,
|
|
INT_PTR otherGsMarker) const;
|
|
|
|
//AEC 派生
|
|
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
|
|
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
|
|
|
|
virtual SHJson::WValue& ToJson(bool bExprotGeo = true) const;
|
|
virtual bool ByJson(const SHJson::WValue &v);
|
|
|
|
virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite);
|
|
virtual const AecDbObjXDataMap* GetSpecialtyData() const;
|
|
|
|
//获取二维视图显示的图形
|
|
virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray &arEntPtrs) const;
|
|
|
|
//获取三维显示图形
|
|
virtual int GetDraw3dables(AcDbVoidPtrArray &arEntPtrs, bool bWriteBimInfo = false) const;
|
|
#pragma endregion
|
|
|
|
public:
|
|
|
|
void setPoints(const AcGePoint3dArray &ar);
|
|
void setPoints(const Geometry::GePoint3dArray &ar);
|
|
|
|
void setOuter(const Geometry::GePoint3dArray &outer);
|
|
|
|
void addHold(std::vector<AcGePoint3d> &poly);
|
|
|
|
bool clearHolds();
|
|
|
|
bool deleteHold(const AcGePoint3d &ptInHold);
|
|
|
|
double getElev();
|
|
|
|
void setSmoothLevel(int i);
|
|
int getSmoothLevel();
|
|
|
|
private:
|
|
AecDbObjXDataMap m_mapSpecXData;
|
|
|
|
Geometry::GePoint3dArray m_outer;
|
|
|
|
// 所有地形点
|
|
Geometry::GePoint3dArray m_points;
|
|
|
|
// 洞口
|
|
Geometry::GePolyArray3d m_holes;
|
|
|
|
// 平滑级别
|
|
int m_iSmoothLevel;
|
|
|
|
// 平均标高
|
|
double m_dElev;
|
|
|
|
};
|