2026-10-04 00:04:20 +08:00
|
|
|
#pragma once
|
2026-09-28 15:28:50 +08:00
|
|
|
#include "dbmain.h"
|
|
|
|
|
#include "AcGiDraw.h"
|
|
|
|
|
#include "AecSubDef.h"
|
|
|
|
|
#include "shJson.h"
|
|
|
|
|
#include "EarThwormDef.h"
|
2026-10-19 09:19:05 +08:00
|
|
|
#include "AecDbEntityCommon.h"
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
#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; }
|
|
|
|
|
|
2026-10-19 09:19:05 +08:00
|
|
|
class AECDLLIMPEXP AecDbEntityBase : public AcDbEntity, public AecDbEntityCommon
|
2026-09-28 15:28:50 +08:00
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
ACRX_DECLARE_MEMBERS(AecDbEntityBase);
|
|
|
|
|
|
2026-10-19 09:19:05 +08:00
|
|
|
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; }
|
|
|
|
|
|
2026-09-28 15:28:50 +08:00
|
|
|
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;
|
|
|
|
|
|
2026-10-19 09:19:05 +08:00
|
|
|
virtual Acad::ErrorStatus subSetPropertiesFrom( const AcDbEntity* pEntity
|
|
|
|
|
, Adesk::Boolean doSubents = Adesk::kTrue);
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
#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;
|
|
|
|
|
|
2026-10-19 09:19:05 +08:00
|
|
|
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:
|
2026-09-28 15:28:50 +08:00
|
|
|
virtual Acad::ErrorStatus setTransparency(const AcCmTransparency &trans, Adesk::Boolean doSubents = true);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
//获取体积
|
2026-09-28 15:28:50 +08:00
|
|
|
virtual int ComparedTo(AecDbEntityBase* pEntOther) const;
|
|
|
|
|
|
2026-10-19 09:19:05 +08:00
|
|
|
virtual double GetArea() const;
|
2026-09-28 15:28:50 +08:00
|
|
|
};
|