#pragma once #include "AecDbCurveBase.h" #include "AecDbObjXDataMap.h" typedef struct SecPath { AcGePoint3d ptGe[3]; int nPoints; }SECPATH; #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif class DLLIMPEXP AecDbPathSectionSymbDim : public AecDbCurveBase { public: struct GripData { struct sectionData { AcGePoint3d m_pt0, m_pt1; AcGeVector3d m_vtTo; }; GripData() : m_idx(-1) {} int m_idx; // 索引 std::vector m_datas; }; public: ACRX_DECLARE_MEMBERS(AecDbPathSectionSymbDim); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbPathSectionSymbDim(void); ~AecDbPathSectionSymbDim(void); void SetDimTxt(LPCTSTR pszDim); void GetDimTxt(CString& sDim) const; //以下为实际高度宽度偏移距离,已经xDocScale void SetTextH(double dH); double GetTextH() const; void SetDisOff(double dDisOff); double GetDisOff() const; void SetWidth(double dW); double GetWidth() const; void SetTextStyle(const AcDbObjectId& idStyle); AcDbObjectId GetTextStyle() const; void SetPath(const AcArray& aPath); int GetPath(AcArray& aPath) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus copyFrom(const AcRxObject* pSrc); #if ARX>16 virtual void subList() const; virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform); 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 Acad::ErrorStatus subGetGripPoints (AcGePoint3dArray& gripPoints,AcDbIntArray& osnapModes,AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset); virtual void GetGripText(int nPos, CString& sText); 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 subGetGeomExtents(AcDbExtents& extents) const; virtual Acad::ErrorStatus subIntersectWith(const AcDbEntity* pEnt, AcDb::Intersect intType, AcGePoint3dArray& points, INT_PTR thisGsMarker, INT_PTR otherGsMarker) const; virtual Acad::ErrorStatus subIntersectWith(const AcDbEntity* pEnt, AcDb::Intersect intType, const AcGePlane& projPlane, AcGePoint3dArray& points, INT_PTR thisGsMarker, INT_PTR otherGsMarker) const; #endif public: virtual AcDbCurve* GetBaseCurve(bool bOrthoProjectToXY = false) const; virtual AcDbCurve* GetNativeCurve() const; //AEC 派生 virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const; virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const; virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite); virtual const AecDbObjXDataMap* GetSpecialtyData() const; protected: TCHAR m_szSymb[33]; double m_dTxtH; double m_dDisOff; double m_dW; AcDbObjectId m_idTxtStyle; AecDbObjXDataMap m_xDataMap; AcArray m_arSecPath; private: mutable std::vector m_GripDatas; };