525 lines
18 KiB
C++
525 lines
18 KiB
C++
#pragma once
|
|
#include "globalDefine.h"
|
|
#include "AecDbEntityBase.h"
|
|
#include "aecdbcurvebase.h"
|
|
#include "AecDbObjXDataMap.h"
|
|
#include "AcGiViewDraw.h"
|
|
#include "EntityFields.h"
|
|
|
|
class SubText;
|
|
class TextRange;
|
|
class TextPosition;
|
|
class AecXDbText;
|
|
class GeCurveSegment;
|
|
|
|
typedef int (*AecObjectEditMethod)(AcDbObjectId idEnt); // RTNORM/RTERROR/RTNONE/RTCAN
|
|
|
|
#define DECLARE_EDITFUNC() \
|
|
protected: \
|
|
static AecObjectEditMethod g_pEditFun; \
|
|
virtual AecObjectEditMethod GetEditMethod() const; \
|
|
public: \
|
|
static AecObjectEditMethod SetEditMethod(AecObjectEditMethod pNewMethod); \
|
|
|
|
|
|
#define IMPLEMENT_EDITFUNC(ClassName) \
|
|
AecObjectEditMethod ClassName::g_pEditFun=NULL; \
|
|
AecObjectEditMethod ClassName::GetEditMethod() const \
|
|
{ return g_pEditFun; } \
|
|
AecObjectEditMethod ClassName::SetEditMethod(AecObjectEditMethod pNewMethod) \
|
|
{ AecObjectEditMethod pOld=g_pEditFun; g_pEditFun=pNewMethod; return pOld;\
|
|
}
|
|
|
|
class BaseEx
|
|
{
|
|
public:
|
|
BaseEx();
|
|
~BaseEx(){}
|
|
|
|
public:
|
|
virtual AecObjectEditMethod GetEditMethod() const;
|
|
virtual const TCHAR *GetDefaultLayer() const { return NULL; };
|
|
//夹点拉伸模式
|
|
virtual int GetCtrlToggleIndex()const;
|
|
//普通数据
|
|
BOOL& GetCtrlToggle()const;
|
|
|
|
void copyBy(const BaseEx &frm);
|
|
|
|
//繁简转换支持
|
|
virtual int ConvertText(TConvertTextPtr ptr, void *pData = NULL);
|
|
|
|
//文字查找替换支持
|
|
//返回发现的位置,同时posStart往前移动(以便继续找下一个使用),
|
|
virtual TextPosition FindSubText(const TCHAR *sSubText, TextPosition &posStart, TextRange *pRange = NULL) const;
|
|
|
|
//返回下一次查找的开始位置
|
|
virtual TextPosition ReplaceSubText(const TextPosition &posRep, const TCHAR *sRepText, TextRange *pRange = NULL);
|
|
|
|
//文字在位编辑支持
|
|
virtual long GetSubTextNum()const;
|
|
|
|
//基类不处理bVert
|
|
virtual long GetNextSubTextIndex(long i, bool bVert = false, bool bPre = false)const;
|
|
|
|
virtual SubText* HitTestText(ADSGePoint3d pt)const;
|
|
|
|
virtual SubText* GetSubText(long iText)const;
|
|
|
|
virtual void SetSubText(long i, CString sText);
|
|
|
|
//文字复位支持
|
|
virtual void ResetTextPos();
|
|
|
|
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler*);
|
|
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const;
|
|
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler*);
|
|
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const;
|
|
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
|
|
virtual AecDbObjXDataMap* __GetSpecialtyData();
|
|
virtual AecDbObjXDataMap* __GetSpecialtyDataReadOnly() const;
|
|
|
|
public:
|
|
virtual void TBaseSetRotation(double nRot);
|
|
virtual double TBaseGetRotation() const;
|
|
virtual ADSGePoint3d TBaseGetLocation() const;
|
|
virtual void TBaseSetLocation(ADSGePoint3d pt);
|
|
double Wcs2Layout(double nAngWcs) const; //Wcs角度转为布局角度
|
|
double Layout2Wcs(double nAngLay) const; //布局角度转为Wcs角度
|
|
double GetPScale() const;
|
|
virtual Acad::ErrorStatus GetExtents2d(ADSGePoint3d &ptLow, ADSGePoint3d &ptUp) const;
|
|
virtual Acad::ErrorStatus GetExtents(ADSGePoint3d &ptLow, ADSGePoint3d &ptUp) const;
|
|
double NormalViewAngle(double nAngWcs) const;
|
|
|
|
void SetPScale(double scale);
|
|
|
|
double GetLayoutRotation() const;
|
|
|
|
void SetLayoutRotation(double nRot);
|
|
|
|
BOOL IsLayoutRotated() const;
|
|
|
|
Acad::ErrorStatus _Draw2d(AcGiDraw &dc) const;
|
|
const AcDbVoidPtrArray* _Get2DBuffer() const;
|
|
void _Add2DBuffer(AcDbEntity* p) const;
|
|
|
|
void DrawBlock(AcGiDraw &dc
|
|
, const AcDbObjectId &blkId
|
|
, const AcGePoint3d &ptInsert
|
|
, const AcGeScale3d &scales
|
|
, double nRot
|
|
, int color = 256) const;
|
|
void DrawLine(AcGiDraw &dc, const AcGePoint3d &pt1, const AcGePoint3d &pt2, int color = 256) const;
|
|
void DrawLine(AcGiDraw &dc, const GeLine &ln, int color = 256) const;
|
|
void DrawPoly2D(AcGiDraw &dc, const GePoly2D &poly, int color = 256) const;
|
|
void DrawPline(AcGiDraw &dc, const AcDbPolyline &pline, int color = 256) const;
|
|
void DrawArc(AcGiDraw &dc, const GeArc &arc, int color = 256) const;
|
|
void DrawArc(AcGiDraw &dc, const AcGePoint3d &ptS, const AcGePoint3d &ptM, const AcGePoint3d &ptE, int color = 256) const;
|
|
void DrawSegment(AcGiDraw &dc, const GeCurveSegment &seg, int color = 256)const;
|
|
void DrawCircle(AcGiDraw &dc, const GeCircle &cir, int color = 256) const;
|
|
void DrawTextFit(AcGiDraw &dc
|
|
, const TCHAR *pszText
|
|
, const AcGePoint3d& pt1
|
|
, const AcGePoint3d& pt2
|
|
, double nTextHeight
|
|
, AcDbObjectId styleId
|
|
, int color = 256) const;
|
|
|
|
void DrawBaseEx(AcGiDraw &dc, const BaseEx &ent) const;
|
|
|
|
/*template <typename T>
|
|
void DrawEntity(AcGiDraw &dc, const T &ent) const
|
|
{
|
|
T *_p = (T*)ent.clone();
|
|
AcGiViewDraw _dc;
|
|
_p->Draw2d(_dc);
|
|
const AcDbVoidPtrArray &ar = _p->_Get2DBuffer();
|
|
int clr = dc.GetColor();
|
|
//AcDbObjectId layId = dc.GetLayerId();
|
|
for (int i = 0; i < ar.length(); ++i)
|
|
{
|
|
AcDbEntity *pEnt = (AcDbEntity*)ar[i];
|
|
|
|
int entClr(0);
|
|
if (pEnt->isKindOf(AcDbText::desc()))
|
|
{
|
|
entClr = pEnt->colorIndex();
|
|
}
|
|
|
|
pEnt->setColorIndex(pEnt->colorIndex());
|
|
pEnt->setLayer(ent.layerId());
|
|
dc.SetColor(pEnt->colorIndex());
|
|
//dc.SetColor(pEnt->colorIndex());
|
|
//dc.SetLayer(pEnt->layerId());
|
|
dc.DrawEntity(*pEnt);
|
|
_Add2DBuffer(pEnt);
|
|
}
|
|
dc.SetColor(clr);
|
|
//dc.SetLayer(layId);
|
|
DELETE_PTR(_p);
|
|
}*/
|
|
|
|
void _Draw2DBuffers(AcGiDraw &dc, bool bUseEntClr) const;
|
|
|
|
const EntityFields & GetFields()const;
|
|
|
|
EntityFields& Fields();
|
|
|
|
protected:
|
|
double m_nPaperScale;
|
|
double m_nLayoutRotation;
|
|
AecDbObjXDataMap m_XDataMap;
|
|
EntityFields m_allFields;
|
|
|
|
private:
|
|
const static Adesk::UInt8 g_nVersion;
|
|
|
|
public:
|
|
bool m_bInJig;
|
|
|
|
};
|
|
|
|
class AecXDbEntityBaseEx : public AecDbEntityBase, public BaseEx
|
|
{
|
|
public:
|
|
|
|
ACRX_DECLARE_MEMBERS(AecXDbEntityBaseEx);
|
|
|
|
public:
|
|
AecXDbEntityBaseEx(void);
|
|
virtual ~AecXDbEntityBaseEx(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);
|
|
|
|
virtual Acad::ErrorStatus copyFrom( const AcRxObject *pOther);
|
|
|
|
#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;
|
|
|
|
public:
|
|
|
|
//专业数据 和绘制设置
|
|
virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite) { return BaseEx::__GetSpecialtyData(); }
|
|
virtual const AecDbObjXDataMap* GetSpecialtyData() const { return BaseEx::__GetSpecialtyDataReadOnly(); }
|
|
|
|
//获取二维视图显示的图形
|
|
virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray& arEntPtrs) const;
|
|
|
|
//获取三维显示图形
|
|
virtual int GetDraw3dables(AcDbVoidPtrArray& arEntPtrs, bool bWriteBimInfo = false) const;
|
|
|
|
//剖切提取
|
|
virtual int GetSectionDraw(const AcGePoint3d& ptFr, const AcGePoint3d& ptTo, const AcGeVector3d& vtViewDir, const AcGeVector3d& vtTo, AcDbVoidPtrArray& arRegionPtrs) const;
|
|
|
|
//获取体积
|
|
virtual double GetVolume(bool bIsBody = false) const;
|
|
|
|
virtual int ComparedTo(AecXDbEntityBaseEx* pEntOther) const;
|
|
|
|
virtual void SetActive(bool bActive) {};
|
|
virtual bool IsActive() const { return false; }
|
|
|
|
// 导出json
|
|
virtual SHJson::WValue& ToJson() const;
|
|
// 通过json创建
|
|
virtual bool ByJson(const SHJson::WValue &v);
|
|
|
|
public:
|
|
Acad::ErrorStatus __Draw2d(AcGiDraw &dc)const { return Draw2d(dc); }
|
|
const AcDbVoidPtrArray& __Get2DBuffer()const { return Get2DBuffer(); }
|
|
void __Add2DBuffer(AcDbEntity* p)const { Add2DBuffer(p); }
|
|
|
|
|
|
protected:
|
|
|
|
//以下需要 AEC 派生
|
|
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
|
|
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
|
|
//清理图元的特定writeenable
|
|
virtual void AssertWriteEnabled(Adesk::Boolean autoUndo = true, Adesk::Boolean recordModified = true);
|
|
};
|
|
|
|
class AecXDbCurveBaseEx : public AecDbCurveBase, public BaseEx
|
|
{
|
|
public:
|
|
ACRX_DECLARE_MEMBERS(AecXDbCurveBaseEx);
|
|
|
|
public:
|
|
AecXDbCurveBaseEx(void);
|
|
virtual ~AecXDbCurveBaseEx(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 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);
|
|
|
|
virtual Acad::ErrorStatus copyFrom( const AcRxObject* pOther);
|
|
|
|
|
|
|
|
|
|
#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;
|
|
|
|
public:
|
|
|
|
//专业数据 和绘制设置
|
|
virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite);
|
|
virtual const AecDbObjXDataMap* GetSpecialtyData() const;
|
|
|
|
//获取二维视图显示的图形
|
|
virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray& arEntPtrs) const;
|
|
|
|
//获取三维显示图形
|
|
virtual int GetDraw3dables(AcDbVoidPtrArray& arEntPtrs, bool bWriteBimInfo = false) const;
|
|
|
|
//剖切提取
|
|
virtual int GetSectionDraw(const AcGePoint3d& ptFr, const AcGePoint3d& ptTo, const AcGeVector3d& vtViewDir, const AcGeVector3d& vtTo, AcDbVoidPtrArray& arRegionPtrs) const;
|
|
|
|
virtual double GetVolume(bool bIsBody = false) const;
|
|
|
|
virtual int ComparedTo(AecDbCurveBase* pCurOther) const;
|
|
|
|
virtual void SetActive(bool bActive);
|
|
virtual bool IsActive() const;
|
|
|
|
// 导出json
|
|
virtual SHJson::WValue& ToJson() const;
|
|
// 通过json创建
|
|
virtual bool ByJson(const SHJson::WValue &v);
|
|
protected:
|
|
|
|
virtual Acad::ErrorStatus SetBaseCurve(const AcDbCurve* pDbCurve);
|
|
virtual AcDbCurve* GetBaseCurve(bool bOrthoProjectToXY = false) const;
|
|
//返回原生Curve,不可以删除
|
|
virtual AcDbCurve* GetNativeCurve() const;
|
|
|
|
//以下需要 AEC 派生
|
|
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
|
|
|
|
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
|
|
|
|
protected:
|
|
//清理图元的特定writeenable
|
|
virtual void AssertWriteEnabled(Adesk::Boolean autoUndo = true, Adesk::Boolean recordModified = true);
|
|
|
|
public:
|
|
Acad::ErrorStatus __Draw2d(AcGiDraw &dc)const { return Draw2d(dc); }
|
|
const AcDbVoidPtrArray& __Get2DBuffer()const { return Get2DBuffer(); }
|
|
void __Add2DBuffer(AcDbEntity* p) { Add2DBuffer(p); }
|
|
};
|
|
|
|
|