//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, SH Software Co. Ltd. // = FileName : AecDbBlockInsert.h // = Version : ver2.0 // = Author : zjq // = CreateDate : 2002-09-09 // = Description: $图块类的声明 // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _TDbBlockInsert_H_ #define _TDbBlockInsert_H_ #ifndef _AEntityBase_H_ #include "AEntityBase.h" #endif #ifndef _XBlockGeomInfo_H_ #include "XBlockGeomInfo.h" #endif class GEOAPI AecDbBlockInsert : public AcDbBlockReference , public AEntityBase { public: ACRX_DECLARE_MEMBERS(AecDbBlockInsert); AecDbBlockInsert(); ~AecDbBlockInsert(); // Overriden function from AcDbEntity virtual AcRxObject *clone() const; virtual Adesk::Boolean subCloneMeForDragging(); // 解决多视图块崩溃的问题 virtual Acad::ErrorStatus setLayer(AcDbObjectId newVal, Adesk::Boolean doSubents = true); virtual Acad::ErrorStatus setLayer(const TCHAR * newVal, Adesk::Boolean doSubents = true); 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 subGetGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const; #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); virtual void CreateGrip(); virtual Acad::ErrorStatus EntityToDim(long iGrip,long iDim,const AcDbEntity*pEnt); virtual Acad::ErrorStatus DimToEntity(long iGrip,long iDim,double newValue,const AcGeVector3d& offset); #endif virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus subExplode(AcDbVoidPtrArray& entitySet) const; virtual Adesk::Boolean subWorldDraw(AcGiWorldDraw *pWd); virtual void subViewportDraw(AcGiViewportDraw* pMode); virtual Adesk::UInt32 subViewportDrawLogicalFlags(AcGiViewportDraw * vd); virtual Adesk::UInt32 subSetAttributes(AcGiDrawableTraits* pTraits); //AcDbBlockReference的transformBy还没有完全实现镜像操作 virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform); virtual Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& ptPick, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) 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; // drived from AEntityBase virtual void GetTips(DList &lstInfo) const; virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const; virtual AcDbEntity * GetMe(); virtual const AcDbEntity * GetMe() const; virtual int GetCtrlToggleIndex()const; virtual Acad::ErrorStatus GetExtents2d(XPoint &ptLow, XPoint &ptUp) const; virtual bool IsModelEntity() const; void SetMultiView(BOOL bTrue); void Set2DBlockId(AcDbObjectId id); void SetMaskFlag(Adesk::UInt8 nFlag); BOOL IsMultiView() const; Adesk::UInt8 GetMaskFlag() const; AcDbObjectId Get2DBlockId() const; XBlockGeomInfo GetGeomInfo() const; Acad::ErrorStatus UpdateFrom(const XBlockGeomInfo &geom); AcDbBlockReference * NewBlockInsert() const; protected: Adesk::UInt8 m_nMaskFlag; // new member AcDbHardPointerId m_idBlock2d; //for Multi-view block protected: AcDbObjectId _Get2DBlockId() const; // block2d id Acad::ErrorStatus _Set2DBlockId(AcDbObjectId idBlock2d) const; private: void *operator new[](size_t nSize); void operator delete[](void *p); void *operator new[](size_t nSize, const TCHAR *file, int line); const static Adesk::UInt8 g_nVersion; private: AcDbObjectId GetBlock2dFromBlock3d(AcDbObjectId idBlock) const; }; #endif