Files

113 lines
3.1 KiB
C++
Raw Permalink Normal View History

2026-10-04 00:04:20 +08:00
#pragma once
2026-09-28 15:28:50 +08:00
#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;
2026-10-04 00:04:20 +08:00
//AEC 派生
2026-09-28 15:28:50 +08:00
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;
2026-10-04 00:04:20 +08:00
//获取二维视图显示的图形
2026-09-28 15:28:50 +08:00
virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray &arEntPtrs) const;
2026-10-04 00:04:20 +08:00
//获取三维显示图形
2026-09-28 15:28:50 +08:00
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;
2026-10-04 00:04:20 +08:00
// 所有地形点
2026-09-28 15:28:50 +08:00
Geometry::GePoint3dArray m_points;
2026-10-04 00:04:20 +08:00
// 洞口
2026-09-28 15:28:50 +08:00
Geometry::GePolyArray3d m_holes;
2026-10-04 00:04:20 +08:00
// 平滑级别
2026-09-28 15:28:50 +08:00
int m_iSmoothLevel;
2026-10-04 00:04:20 +08:00
// 平均标高
2026-09-28 15:28:50 +08:00
double m_dElev;
};