//-------------------------------------------------------------------------------------------------------+ // Copyright (C), 1998-2007, SH Software Co. Ltd. // = FileName : AecDbPolyCurveEnt.h // = Version : ver2.0 // = Author : zjq // = CreateDate : 2002-09-09 // = Description: 路径曲线类的声明 // = Maintainers: // //-------------------------------------------------------------------------------------------------------+ #ifndef _AecDbPolyCurveEnt_H_ #define _AecDbPolyCurveEnt_H_ #ifndef _AecCurveEntity_H_ #include "AecCurveEntity.h" #endif #ifndef _XPOLY3D_H_ #include "XPoly3D.h" #endif #ifndef _OBJINFOUNIT_H_ #include "ObjInfoUnit.h" #endif #ifndef Migration_H_ #include "TMigration.h" #endif class GEOAPI AecDbPolyCurveEnt: public AecCurveEntity { DECLARE_TENTBASE(); ACRX_DECLARE_MEMBERS(AecDbPolyCurveEnt); public: AecDbPolyCurveEnt(); virtual ~AecDbPolyCurveEnt(); //重载 AEntityBase virtual int GetFirstVersion()const; //取动态属性显示数据 virtual void GetTips(DList &lstInfo) const; virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const; virtual BOOL IsValid() const; virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag); #if ARX > 17 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 virtual Acad::ErrorStatus GetPathPoly(XPoly2D &polyPath,AcGeVector3d&normal)const; virtual Acad::ErrorStatus SetPathPoly(const XPoly2D &polyPath,const AcGeVector3d&normal); //重载 AecCurveEntity virtual Acad::ErrorStatus SetBaseCurve(AcDbCurve*); //临时对象,外部析构 virtual AcDbCurve* GetBaseCurve()const; //重载 AcDbEntity virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler*); virtual Acad::ErrorStatus dxfInFields (AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const; #if (ADS > 15 && ADS < 18) virtual Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds, const AcGeMatrix3d& insertionMat) const; virtual Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const; #endif virtual Acad::ErrorStatus subGetGripPoints( AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray& stretchPoints)const; virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d&mat); virtual Adesk::Boolean subWorldDraw(AcGiWorldDraw* pWd); //重载 AcDbObject virtual Acad::ErrorStatus subDeepClone( AcDbObject* pOwner, AcDbObject*& pClonedObject, AcDbIdMapping& idMap, Adesk::Boolean isPrimary) const; virtual void erased(const AcDbObject* pDbObj, Adesk::Boolean erasing = Adesk::kTrue); virtual void modified(const AcDbObject* pDbObj); // >0 命中顶点; <0 命中边; 0--没有命中,abs(nRet)-1 为命中目标序号 int HitTestOnBase2d(const XPoint &ptTest, double nTol = XGeLib::_DIST_SNAP) const; void SetSweepAngleAt(int idx,double a); void SetElevationAt(int idx,double e); void SetNormal(AcGeVector3d vt); void UnBind(); Acad::ErrorStatus SetBindObject(const AcDbObjectId &id); BOOL IsBind() const; BOOL AddVertex(const XPoint &ptAdd); BOOL RemoveVertexAt(int nPos); void GetLocalMatrix(const AcGeMatrix3d& xform, ads_matrix &mat) const; BOOL GetClosestPoint2d(const XPoint &ptTest, XPoint &ptOnCurve) const; double GetElevationAt(int idx) const; double GetSweepAngleAt(int idx) const; AcDbObjectId GetBindObjectId() const; AcGeVector3d GetNormal()const; public: static const Adesk::UInt8 g_nVersion; protected: AcDbSoftPointerId m_idBind; //绊定的实体 XPoly3D m_polyBase; //路径曲线 AcGeVector3d m_vtNormal; //法向 }; #endif