#pragma once #include "GeCircle.h" #include "GeSector.h" #include "ADSGePoint3d.h" class EntitySet; class GeArc : public GeCircle, public GeSector { public : GeArc(); GeArc(const GeArc &src); GeArc(const EntitySet &aCircle); GeArc(const EntitySet &aArc, ads_matrix mat); GeArc(const ADSGePoint3d &spt, const ADSGePoint3d &ept, ads_real dang); GeArc(const ADSGePoint3d &ptStart, const ADSGePoint3d &pt2, const ADSGePoint3d &ptEnd); GeArc(ads_point ptcenter, double dradius, double ptstartAngle, double ptendAngle); virtual ~GeArc(); virtual bool IsKindOf(TEntityId entType) const; virtual TEntityId Type() const; virtual void CopyFrom(const GeEntity* pImpSrc); virtual int Make(const TCHAR *szlay = NULL) const; virtual int Modify(const EntitySet* pEnt) const; virtual int GetExtend(ads_point lowPt, ads_point upPt) const; virtual int MakeEntity(const EntitySet* pEnt) const; virtual int GetSubArc(const ADSGePoint3d &ptloc, ads_real dchordLen, GeArc &arcRes) const; //图形长度,周长 virtual ads_real GetLength() const; GeArc& operator = (const GeSector &src); GeArc& operator = (const GeArc &src); bool operator == (const GeArc &src) const; int operator ! () const; virtual int HitTest2d(const ADSGePoint3d &ptTest) const; virtual int OSnap(int nMode, ADSGePoint3d &ptPick) const; bool Set(const ADSGePoint3d &spt, const ADSGePoint3d &ept, ads_real dang); bool Set(const ADSGePoint3d &ptStart, const ADSGePoint3d &ptOn, const ADSGePoint3d &ptEnd); void SetAngleByPoints(const ADSGePoint3d &ptStart, const ADSGePoint3d &ptEnd); void GetStartPoint(ADSGePoint3d &ptStart) const; void GetEndPoint(ADSGePoint3d &ptEnd) const; void MidPoint(ADSGePoint3d &ptres) const; ADSGePoint3d MidPoint() const; //求弦长 ads_real ChordLength() const; // 扇形面积 ads_real Area() const; //起点到终点的积分面积 ads_real PathArea() const; GeArc Offset(ads_real dist) const; virtual void TransUCS(ads_matrix mat); //上华direction ads_real IDirection(int pt) const; ads_real ODirection(int pt) const; virtual int Intersection(const GeLine* pLine, ads_point ptRp1 = NULL, ads_point ptRp2 = NULL) const; virtual int Intersection(const GeArc* pArc, ads_point ptRp1 = NULL, ads_point ptRp2 = NULL) const; virtual int Intersection(const GeCircle* pCir, ads_point ptRp1 = NULL, ads_point ptRp2 = NULL) const; ads_real * SelectNear(ads_point pt1, ads_point pt2) const; int PtOnArc(const ADSGePoint3d &pt) const; };