#pragma once #include "AecDbCurveBase.h" #include "AecMInterfaces.h" #include "AecDbObjXDataMap.h" #include "EarThwormDef.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif //标准道路,一段 line,or Arc class DLLIMPEXP AecDb3dRoad : public AecDbCurveBase, public AecMInterfaces { public: ACRX_DECLARE_MEMBERS(AecDb3dRoad); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDb3dRoad(void); virtual ~AecDb3dRoad(void); public: // 道路基本参数 void SetRoadParam(WPipe::RoadParam* pPipePar); bool GetRoadParam(WPipe::RoadParam& rp) const; // 设置LINE ARC 数据 Acad::ErrorStatus SetCurveSeg(const AcGePoint3d& ptS,const AcGePoint3d& ptE); Acad::ErrorStatus SetCurveSeg(const AecEqui::AecCurveElement& el); bool GetCurveSeg(AecEqui::AecCurveElement& el) const; int GetCurveSegType() const; Acad::ErrorStatus SetEndPoint(const AcGePoint3d& ptEnd); AcGePoint3d EndPoint() const; Acad::ErrorStatus SetStartPoint(const AcGePoint3d& ptSta); AcGePoint3d StartPoint() const; //获取首尾切线方向[接口方向] AcGeVector3d GetHeadDir() const; AcGeVector3d GetTailDir() 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 subGetStretchPoints(AcGePoint3dArray& stretchPoints) const; virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset); virtual void GetGripText(int nPos, CString& sText); #endif 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 LPCTSTR GetGripCmd() const; virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite); virtual const AecDbObjXDataMap* GetSpecialtyData() const; //接口方法重载 MINTERFACES_METHODS virtual bool GetBimInfoTip(CString& sInfoTip) const; protected: Acad::ErrorStatus ImpGetGripPonts(AcGePoint3dArray& gripPoints,const int bitflags) const; EPosition ExplainGripIndex(int nIndex) const; BOOL DrawMesh(AcGiDraw &mode,const Adesk::UInt32 rows,const Adesk::UInt32 columns,const AcGePoint3d* pVertexList) const; void DrawRoadBordLine(AcGiDraw &dc,AcDbCurve* pCurve,int nColor,BOOL bIsDash,double dEl) const; Acad::ErrorStatus TransformBy(const AcGeMatrix3d xform); protected: //专业数据 AecDbObjXDataMap m_mapSpecXData; mutable AecEqui::AecCurveElement m_elBaseCrv; public: AecGripData* m_pGripAppData; };