Files
envi-code/SourceCode/Code2026/inc/AecDbEntityBase.h
T
gjm c84bc78869 重构底层
重构AecDbEntityBase,AecDbCurveBase
2026-10-19 09:19:05 +08:00

152 lines
5.2 KiB
C++

#pragma once
#include "dbmain.h"
#include "AcGiDraw.h"
#include "AecSubDef.h"
#include "shJson.h"
#include "EarThwormDef.h"
#include "AecDbEntityCommon.h"
#if ARX > 25
#include "AecDbObjXDataMap.h"
#else
class AecDbObjXDataMap;
#endif
#pragma warning(disable: 4275 4251)
#ifdef AECRXBASE_EXPORT
#define AECDLLIMPEXP __declspec(dllexport)
#else
#define AECDLLIMPEXP __declspec(dllimport)
#endif
class AcGiViewDraw;
class AcGiExplodeDraw;
namespace SimpleProperty { struct PropertySetByIndex; struct PropertySetByName; }
class AECDLLIMPEXP AecDbEntityBase : public AcDbEntity, public AecDbEntityCommon
{
public:
ACRX_DECLARE_MEMBERS(AecDbEntityBase);
public:
virtual AcDbEntity *GetMe() { return this; }
virtual const AcDbEntity *GetMe() const { return this; }
virtual bool IsThisMe(const AcDbEntity *pEnt) const { return AecDbEntityBase::cast(pEnt) != NULL; }
protected:
AecDbEntityBase(void);
virtual ~AecDbEntityBase(void);
public:
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 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 > 16
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;
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(AecDbEntityBase* pEntOther) const;
virtual double GetArea() const;
};