Files
envi-code/SourceCode/Code2026/inc/AecDb3dRoadFitting.h
T
2026-09-28 15:28:50 +08:00

127 lines
3.5 KiB
C++

#pragma once
#include "AecDbEntityBase.h"
#include "AecDbObjXDataMap.h"
#include "AecComplexCurveDraw.h"
#ifdef EARTHWORM_EXPORT
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
#include "AecMInterfaces.h"
class DLLIMPEXP AecDb3dRoadFitting : public AecDbEntityBase,
public AecMInterfaces
{
public:
ACRX_DECLARE_MEMBERS(AecDb3dRoadFitting);
public:
protected:
static Adesk::UInt32 kCurrentVersionNumber;
public:
AecDb3dRoadFitting(void);
virtual ~AecDb3dRoadFitting(void);
void SetRoadParam(WPipe::RoadParam* pPipePar);
bool GetRoadParam(WPipe::RoadParam& rp) const;
//根据runtime创建
bool Create();
void RemoveAll();
//多通道路
void SetMInfRoad(AecComplexCurve& cmplOut);
//设置环岛 pPl必须闭合
void SetRoundabout(AcDbPolyline* pPl);
void RemoveRoundabout();
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 void subList() const;
virtual Acad::ErrorStatus copyFrom(const AcRxObject* pSrc);
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
#if ARX>16
virtual Acad::ErrorStatus subGetGripPoints(AcDbGripDataPtrArray& grips,
const double curViewUnitSize,
const int gripSize,
const AcGeVector3d& curViewDir,
const int bitflags) const;
virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray& stretchPoints) const;
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData, const AcGeVector3d& offset, const int bitflags);
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
virtual void GetGripText(int nPos, CString& sText);
#endif
//AEC 派生
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
//专业数据 和 绘制设置
AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite);
virtual const AecDbObjXDataMap* GetSpecialtyData() const;
//接口重载
virtual bool GetInterface(AcArray<AecInterface>& arInfs) const;
virtual bool GetInterface(int nIndex,AecInterface& inf) const;
virtual int GetInterfaceCount() const;
virtual int GetActiveInf() const;
virtual void SetActiveInf(int nIndex);
virtual void LockInf(int nInf);
virtual bool TransformAssocInf(int nInf,const AcGeMatrix3d& xform);
virtual void NewGUID();
protected:
bool CreateElbow2d();
bool CreateReduceElbow2d();
bool CreateTee();
bool CreateCross();
bool CreateReduce();
protected:
LPCTSTR GetGripCmd() const;
EPosition ExplainGripIndex(int nIndex) const;
Acad::ErrorStatus ImpGetGripPoints(AcGePoint3dArray& gripPoints,const int bitflags) const;
AcDbArc* CharferArc(AcDbLine*& pLn1,AcDbLine*& pLn2,const AcGePoint3d& ptInt,double dRR);
bool CharferArc(AecEqui::AecCurveElement& el,AecEqui::AecCurveElement& elT,AecEqui::AecCurveElement& elArc,const AcGePoint3d& ptInt,double dR);
AcDbRegion* MakeRegion(int nPos) const;
void DrawRoadBordLine(AcGiDraw &dc,int nColor,BOOL bOutOrSide) const;
protected:
Adesk::Int16 m_nInfActive;
CString m_sGUID;
bool m_bActive;
AecDbObjXDataMap m_mapSpecXData;
AecComplexCurve m_cmplOutSide; //外维线
AecComplexCurve m_cmplInSide; //内部线
protected:
AecGripData* m_pGripAppData; //夹点
};