#pragma once typedef struct DrawFrame { AcGePoint3d ptGe[5]; AcGePoint3d ptPick; int nIndex; }DRAWFRAME; class AecDbObjXDataMap; class AecDrawingFrmsEntity : public AcDbEntity { public: AecDrawingFrmsEntity(); virtual ~AecDrawingFrmsEntity(void); void AppendDrawFrame(AcGePoint3d* pptGe,int nCount); int GetDrawFrames(AcArray& arDrawFrames); void SetDrawingEnts(const AcDbVoidPtrArray& arEntPtrs); #if ARX < 18 virtual Adesk::Boolean worldDraw (AcGiWorldDraw *mode) ; #else virtual Adesk::Boolean subWorldDraw (AcGiWorldDraw *mode) ; #endif Adesk::Boolean worldDraw2d(AcGiWorldDraw *mode); public: AcArray m_arDrawFrames; AcDbVoidPtrArray m_arEntPtrs; }; class AecOutDrawingJig : public AcEdJig { public: AecOutDrawingJig(void); ~AecOutDrawingJig(void); void SetDrawingEnts(const AcDbVoidPtrArray& arEntPtrs,const AcGeVector3d& vtDir,bool bIsShowEntPtrs = false,bool bLastIsRoadLine = false); void SetDrawingExt(const AcDbExtents& extUCS,const AcGeVector3d& vtDir,bool bIsShowEntPtrs = false); void SetDrawingFrme(AcDbObjectId idRec,double dScale); BOOL DoIt(bool bDrag = true); BOOL GetDrawingEnts(AcDbVoidPtrArray& arEntPtrs,CPtrArray& arIndexGrpPtrs); BOOL GetFrmeAtGroups( AcArray& arFrames); public: virtual AcEdJig::DragStatus sampler(); virtual AcDbEntity* entity() const; virtual Adesk::Boolean update(); void SplitEntitiesOnDrawframe(); protected: void GetEntsUCSExt(AcDbExtents& extAll); void AddElevationPoint(AecDbObjXDataMap* pxData,AcDbCurve* pCurve,const AcGePoint3dArray& arPts,CMapWordToPtr& mapPos2PtPtr); AecDrawingFrmsEntity* m_pDrawingFrms; double m_dScale; AcDbObjectId m_idRec; AcGeVector3d m_vtDir; AcDbVoidPtrArray m_arEntPtrs; bool m_bIsShowEntPtrs; CPtrArray m_arIndexsGrpPtrs; AcDbExtents m_extAll; bool m_bExtValid; bool m_bHasRoadLine; public: AcGePoint3d m_ptGe; };