#ifndef __DBCURVEMESH_H #define __DBCURVEMESH_H #include "DbPolyPathEnt.h" #define CMF_SHOWSHAPE 0x01 #define CMF_NO2D 0x02 #define CMF_NO3D 0x04 #define CMF_DIVIDE2D 0x08//TArch7用于二维散水 class TARCH_EXP TDbCurveMesh: public TDbPolyPathEnt { DECLARE_TENTBASE(); ACRX_DECLARE_MEMBERS(TDbCurveMesh); private: const static Adesk::UInt8 g_nVersion; protected: XPoly2D m_polyBase; XPoly2D m_polyShape; XVector3D m_vtNormal; XPoint m_ptShapeBase; Adesk::UInt8 m_nCMFlag; public: TDbCurveMesh(); ~TDbCurveMesh(); virtual BOOL IsValid() const; virtual bool IsModelEntity() const{return true;} virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const; virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag); virtual void SetNormal(const XVector3D &vt); void SetShapePoly(const XPoly2D &newShape); void SetBasePoly(const XPoly2D &newBase); void SetShapeBase(const XPoint &ptBase); void ShowShape(BOOL bTrue); void SetHas2D(BOOL bTrue); void SetHas3D(BOOL bTrue); void SetHasDivide2D(BOOL bTrue); // SetMethod virtual Acad::ErrorStatus SetPathPoly(const XPoly2D &polyPath,const AcGeVector3d &normal) { assertWriteEnabled(); SetBasePoly(polyPath); SetNormal(normal); return Acad::eOk; } // GetMethos virtual Acad::ErrorStatus GetPathPoly(XPoly2D &polyPath,AcGeVector3d &normal) const { assertReadEnabled(); polyPath=GetBasePoly(); normal=m_vtNormal.AsAcGeVector3d(); return Acad::eOk; } virtual XVector3D GetNormal() const; const XPoly2D & GetShapePoly() const; const XPoly2D & GetBasePoly() const; XPoint GetShapeBase() const; BOOL IsShapeShow() const; BOOL Has2D() const; BOOL Has3D() const; BOOL HasDivide2D()const; // 取得二维平面上的投影区域,只针对normal=(0,0,1)以及路径不封闭。否则返回FALSE BOOL Get2DRegion(XPoly2D &poly2d) const; // 工程量 double GetPathLength() const; double GetShapePerimeter() const; double GetShapeArea() const; double GetSideArea() const; double GetVolume() const; Acad::ErrorStatus MoveShapeGripPoint(int nShapeIndex, const XVector3D &vtOffset); // Overriden function from AcDbEntity virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const; 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 dwgInFields (AcDbDwgFiler*); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const; virtual Acad::ErrorStatus dxfInFields (AcDbDxfFiler*); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const; virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform); virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); // drived from TDbEntity virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &dc) const; virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const; virtual void GetTips(DList &) const; //取动态属性显示数据 virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const; }; TARCH_IMPEXP int EditCurveMesh0(AcDbObjectId id); #endif