//-------------------------------------------------------------------------------------------------------+ // Copyright (C), 1998-2007, SH Software Co. Ltd. // = FileName : AecCurveEntity.h // = Version : ver2.0 // = Author : zjq // = CreateDate : 2002-09-09 // = Description: $曲线对象基类的声明$曲线对象基类 // = Maintainers: // //-------------------------------------------------------------------------------------------------------+ #ifndef _AecCurveEntity_H_ #define _AecCurveEntity_H_ #ifndef _AEntityBase_H_ #include "AEntityBase.h" #endif class GEOAPI AecCurveEntity: public AcDbCurve, public AEntityBase { AEC_DECLARE_MEMBERS(); ACRX_DECLARE_MEMBERS(AecCurveEntity); virtual Adesk::UInt32 subViewportDrawLogicalFlags(AcGiViewportDraw * vd); virtual Adesk::UInt32 subSetAttributes(AcGiDrawableTraits * traits); public: AecCurveEntity(); virtual Acad::ErrorStatus SetBaseCurve(AcDbCurve*); virtual AcDbCurve* GetBaseCurve()const;//临时对象,外部析构 //重载 AEntityBase virtual void UnionScale(double nScale); virtual Acad::ErrorStatus GetOsnapPoints (AcDb::OsnapMode osnapMode, int gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus GetOsnapPoints (AcDb::OsnapMode osnapMode, int gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds, const AcGeMatrix3d& insertionMat) const; virtual Acad::ErrorStatus IntersectWith (const AcDbEntity* pEnt, AcDb::Intersect intType, AcGePoint3dArray& points, INT_PTR thisGsMarker = 0, INT_PTR otherGsMarker = 0) const; virtual Acad::ErrorStatus IntersectWith (const AcDbEntity* pEnt, AcDb::Intersect intType, const AcGePlane& projPlane, AcGePoint3dArray& points, INT_PTR thisGsMarker = 0, INT_PTR otherGsMarker = 0) const; virtual Acad::ErrorStatus TransformBy (const AcGeMatrix3d& xform); //重载 AcDbCurve virtual Adesk::Boolean isClosed () const; virtual Adesk::Boolean isPeriodic () const; virtual Acad::ErrorStatus getStartParam (double&) const; virtual Acad::ErrorStatus getEndParam (double&) const; virtual Acad::ErrorStatus getStartPoint (AcGePoint3d&) const; virtual Acad::ErrorStatus getEndPoint (AcGePoint3d&) const; virtual Acad::ErrorStatus getPointAtParam (double, AcGePoint3d&) const; virtual Acad::ErrorStatus getParamAtPoint (const AcGePoint3d&, double&)const; virtual Acad::ErrorStatus getDistAtParam (double param, double& dist) const; virtual Acad::ErrorStatus getParamAtDist (double dist, double& param) const; virtual Acad::ErrorStatus getDistAtPoint (const AcGePoint3d&, double&)const; virtual Acad::ErrorStatus getPointAtDist (double, AcGePoint3d&) const; virtual Acad::ErrorStatus getFirstDeriv (double param,AcGeVector3d& firstDeriv) const; virtual Acad::ErrorStatus getFirstDeriv (const AcGePoint3d&,AcGeVector3d& firstDeriv) const; virtual Acad::ErrorStatus getSecondDeriv (double param,AcGeVector3d& secDeriv) const; virtual Acad::ErrorStatus getSecondDeriv (const AcGePoint3d&,AcGeVector3d& secDeriv) const; virtual Acad::ErrorStatus getClosestPointTo(const AcGePoint3d& givenPnt, AcGePoint3d& pointOnCurve, Adesk::Boolean extend = Adesk::kFalse) const; virtual Acad::ErrorStatus getClosestPointTo(const AcGePoint3d& givenPnt, const AcGeVector3d& direction, AcGePoint3d& pointOnCurve, Adesk::Boolean extend = Adesk::kFalse) const; virtual Acad::ErrorStatus getSplitCurves (const AcGeDoubleArray& params, AcDbVoidPtrArray& curveSegments) const; virtual Acad::ErrorStatus getSplitCurves (const AcGePoint3dArray& points, AcDbVoidPtrArray& curveSegments) const; virtual Acad::ErrorStatus extend (double newParam); virtual Acad::ErrorStatus extend (Adesk::Boolean extendStart, const AcGePoint3d& toPoint); virtual Acad::ErrorStatus getSpline (AcDbSpline*& spline) const; virtual Acad::ErrorStatus getArea (double&) const; virtual Acad::ErrorStatus getOffsetCurves (double offsetDist, AcDbVoidPtrArray& offsetCurves) const; virtual Acad::ErrorStatus getProjectedCurve(const AcGePlane&, const AcGeVector3d& projDir, AcDbCurve*& projCrv) const; virtual Acad::ErrorStatus getOrthoProjectedCurve(const AcGePlane&, AcDbCurve*& projCrv) const; virtual Acad::ErrorStatus getOffsetCurvesGivenPlaneNormal(const AcGeVector3d& normal,double offsetDist,AcDbVoidPtrArray& offsetCurves) const; //重载 AcDbEntity virtual Adesk::Boolean isPlanar () const; virtual Acad::ErrorStatus getPlane (AcGePlane&, AcDb::Planarity&) const; virtual void getEcs (AcGeMatrix3d& retVal) const; #if (ADS > 15 && ADS < 18) virtual Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeFastTransform& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeFastTransform& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds, const AcGeMatrix3d& insertionMat) const; virtual Acad::ErrorStatus subTransformBy (const AcGeFastTransform& xform); #endif virtual Acad::ErrorStatus subGetGripPoints (AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset); #if ARX > 17 virtual void subGripStatus(const AcDb::GripStat status); virtual Acad::ErrorStatus subGetGripPoints (AcDbGripDataPtrArray& grips, const double curViewUnitSize, const int gripSize, const AcGeVector3d& curViewDir, const int bitflags) const; virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData, const AcGeVector3d& offset, const int bitflags); #endif virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray& stretchPoints) const; virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset); //add by zjq on 100304 调整InitLayer的调用方式 virtual AcDbObjectId InitLayer(LPCTSTR pszLayer, BOOL bApplyChange = TRUE); }; #endif