#ifndef __DBSTEP_H #define __DBSTEP_H //#include "DbEntity.h" class TARCH_EXP TDbStep: public TDbEntity { DECLARE_TENTBASE(); ACRX_DECLARE_MEMBERS(TDbStep); private: const static Adesk::UInt8 g_nVersion; protected: XPoly2D m_polyOutline; //平台轮廓和标高 Adesk::UInt32 m_nStepFlag; //有踏步的边 Adesk::UInt16 m_nStepNum; //踏步数目 double m_nStepHeight, m_nStepWidth; //踏步高和踏步宽 double GetOffsetDist(int idx) const; BOOL Offset(const XPoly2D &src, XPoly2D &dest) const; public: TDbStep(); ~TDbStep(); virtual BOOL IsValid() const; virtual bool IsModelEntity() const{return true;} virtual bool IsMeClip()const{return true;}//可能裁剪散水 virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const; virtual Acad::ErrorStatus GetClipBoundary(XPoly2D &poly)const; virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag); virtual Acad::ErrorStatus SetPathPoly(const XPoly2D &polyPath,const AcGeVector3d&normal); virtual Acad::ErrorStatus GetPathPoly(XPoly2D &polyPath,AcGeVector3d&normal)const; // Overriden function from AcDbEntity virtual Acad::ErrorStatus audit(AcDbAuditInfo* pAuditInfo); 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 subGetGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray & stretchPoints) const; virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform); virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus subMoveStretchPointsAt(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; virtual const TCHAR *GetDefaultLayer() const; virtual Acad::ErrorStatus GetExtents2d(XPoint &ptLow, XPoint &ptUp) const; virtual Acad::ErrorStatus GetExtents(XPoint &ptLow, XPoint &ptUp) const; #if ADS>15 virtual void CreateGrip(); virtual Acad::ErrorStatus EntityToDim(long iGrip,long iDim,const AcDbEntity*pEnt); virtual Acad::ErrorStatus DimToEntity(long iGrip,long iDim,double newValue,const AcGeVector3d& offset); #endif // 0--没有命中; 1--任意穿越; 2--任意包含; 3--重边穿越; 4--重边包含 // segHit--重边穿越或包含时的纠正位置 virtual int HitTest(const XCurveSegment &seg, double nTol, XCurveSegment &segHit) const; Acad::ErrorStatus GetOutline2d(XPoly2D &poly2d) const; // sg add 101129,支持导出XML virtual CString GetXml(const AcGeMatrix3d& mat) const; int GetEdgeNum() const; BOOL HasStepAt(int idx) const; double GetStepHeight() const; double GetStepWidth() const; double GetElevation() const; double GetTotalHeight() const; int GetStepNum() const; const XPoly2D & GetStepOutline() const; void SetStepNum(int nNum); void SetStepHeight(double h); void SetStepWidth(double w); void SetPolyOutline(const XPoly2D &poly); void SetStepAt(int idx, BOOL bHasStep); void SetElevation(double elev); }; TARCH_IMPEXP int EditStep0(AcDbObjectId id); #endif