209 lines
8.2 KiB
C++
209 lines
8.2 KiB
C++
#pragma once
|
||
#include "dbcurve.h"
|
||
#include "AcGiDraw.h"
|
||
#include "AecSubDef.h"
|
||
#include "shJson.h"
|
||
#include "EarThwormDef.h"
|
||
#include "AecDbEntityCommon.h"
|
||
|
||
#pragma warning(disable: 4275 4251)
|
||
|
||
#ifdef AECRXBASE_EXPORT
|
||
#define AECDLLIMPEXP __declspec(dllexport)
|
||
#else
|
||
#define AECDLLIMPEXP __declspec(dllimport)
|
||
#endif
|
||
|
||
#if ARX > 25
|
||
#include "AecDbObjXDataMap.h"
|
||
#else
|
||
class AecDbObjXDataMap;
|
||
#endif
|
||
|
||
class AcGiViewDraw;
|
||
class AcGiExplodeDraw;
|
||
class AECDLLIMPEXP AecDbCurveBase : public AcDbCurve, public AecDbEntityCommon
|
||
{
|
||
public:
|
||
ACRX_DECLARE_MEMBERS(AecDbCurveBase);
|
||
|
||
public:
|
||
virtual AcDbEntity *GetMe() { return this; }
|
||
virtual const AcDbEntity *GetMe() const { return this; }
|
||
virtual bool IsThisMe(const AcDbEntity *pEnt) const { return AecDbCurveBase::cast(pEnt) != NULL; }
|
||
|
||
protected:
|
||
AecDbCurveBase(void);
|
||
virtual ~AecDbCurveBase(void);
|
||
|
||
public:
|
||
|
||
//AcDbEntity
|
||
virtual Adesk::Boolean isPlanar () const;
|
||
virtual Acad::ErrorStatus getPlane (AcGePlane&, AcDb::Planarity&) const;
|
||
virtual void getEcs (AcGeMatrix3d& retVal) const;
|
||
|
||
virtual Adesk::UInt32 subViewportDrawLogicalFlags(AcGiViewportDraw * vd);
|
||
virtual Adesk::UInt32 subSetAttributes(AcGiDrawableTraits * traits);
|
||
|
||
virtual Adesk::Boolean subWorldDraw(AcGiWorldDraw *pWd);
|
||
virtual void subViewportDraw(AcGiViewportDraw* pMode);
|
||
|
||
virtual void saveAs(AcGiWorldDraw *pWd,AcDb::SaveType saveType);
|
||
|
||
virtual Acad::ErrorStatus subExplode(AcDbVoidPtrArray& entitySet) const;
|
||
virtual Acad::ErrorStatus subGetGeomExtents(AcDbExtents& extents) const;
|
||
virtual void subList() const;
|
||
|
||
virtual Acad::ErrorStatus setColorIndex(Adesk::UInt16 color,Adesk::Boolean doSubents = true);
|
||
|
||
virtual Acad::ErrorStatus subIntersectWith( const AcDbEntity* ent,
|
||
AcDb::Intersect intType,
|
||
AcGePoint3dArray& points,
|
||
INT_PTR thisGsMarker,
|
||
INT_PTR otherGsMarker) const;
|
||
|
||
virtual Acad::ErrorStatus subIntersectWith( const AcDbEntity* ent,
|
||
AcDb::Intersect intType,
|
||
const AcGePlane& projPlane,
|
||
AcGePoint3dArray& points,
|
||
INT_PTR thisGsMarker,
|
||
INT_PTR otherGsMarker) const;
|
||
|
||
virtual Acad::ErrorStatus subSetPropertiesFrom( const AcDbEntity* pEntity, Adesk::Boolean doSubents = Adesk::kTrue);
|
||
|
||
|
||
#if (ARX > 15)
|
||
virtual Acad::ErrorStatus subGetOsnapPoints( AcDb::OsnapMode osnapMode,
|
||
INT_PTR gsSelectionMark,
|
||
const AcGePoint3d& pickPoint,
|
||
const AcGePoint3d& lastPoint,
|
||
const AcGeMatrix3d& viewXform,
|
||
AcGePoint3dArray& snapPoints,
|
||
AcDbIntArray& geomIds) 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 AcGeMatrix3d& insertionMat) const;
|
||
#endif
|
||
|
||
#if ARX>15
|
||
|
||
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 subGetGripPoints (AcGePoint3dArray& gripPoints,AcDbIntArray& osnapModes,AcDbIntArray& geomIds) const;
|
||
|
||
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
|
||
|
||
virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray& stretchPoints) const;
|
||
|
||
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
|
||
|
||
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
|
||
|
||
virtual Acad::ErrorStatus subGetTransformedCopy(const AcGeMatrix3d& xform,AcDbEntity*& ent) const;
|
||
|
||
//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;
|
||
|
||
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 subDeepClone( AcDbObject* pOwnerObject,
|
||
AcDbObject*& pClonedObject,
|
||
AcDbIdMapping& idMap,
|
||
Adesk::Boolean isPrimary = Adesk::kTrue) const;
|
||
|
||
virtual Acad::ErrorStatus subWblockClone( AcRxObject* pOwnerObject,
|
||
AcDbObject*& pClonedObject,
|
||
AcDbIdMapping& idMap,
|
||
Adesk::Boolean isPrimary = Adesk::kTrue) const;
|
||
|
||
protected:
|
||
virtual Acad::ErrorStatus CallAcDbWblockClone(AcRxObject* pOwnerObject,
|
||
AcDbObject*& pClonedObject,
|
||
AcDbIdMapping& idMap,
|
||
Adesk::Boolean isPrimary) const;
|
||
|
||
// 桥:回到具体实体自己的 subWorldDraw(子类可能重写,saveAs 的代理分支要用)。
|
||
// subWorldDraw 在 AcGiDrawable 里是 protected,本类取不到,由两个根转调。
|
||
virtual Adesk::Boolean CallWorldDraw(AcGiWorldDraw* pWd);
|
||
|
||
public:
|
||
virtual Acad::ErrorStatus setTransparency(const AcCmTransparency &trans,
|
||
Adesk::Boolean doSubents = true);
|
||
|
||
public:
|
||
|
||
virtual int ComparedTo(AecDbCurveBase* pCurOther) const;
|
||
|
||
double GetArea() const;
|
||
|
||
protected:
|
||
|
||
virtual Acad::ErrorStatus SetBaseCurve(const AcDbCurve* pDbCurve);
|
||
virtual AcDbCurve* GetBaseCurve(bool bOrthoProjectToXY = false) const;
|
||
//返回原生Curve,不可以删除
|
||
virtual AcDbCurve* GetNativeCurve() const;
|
||
|
||
public:
|
||
// 曲线族特有:绘制时按宿主图层/颜色设置缓存实体(Common 里声明为 virtual)
|
||
virtual bool Draw2DBuffers(AcGiDraw &dc)const;
|
||
};
|