151 lines
3.4 KiB
C++
151 lines
3.4 KiB
C++
#pragma once
|
|
#include "dbjig.h"
|
|
#include "AecDbCurveBase.h"
|
|
#include "EarThwormDef.h"
|
|
#include "AecDbObjXDataMap.h"
|
|
|
|
typedef struct ISODrawCfg
|
|
{
|
|
TCHAR m_sODSn[17];
|
|
TCHAR m_sMaterial[256];
|
|
TCHAR m_sCurrSys[256];
|
|
TCHAR m_sScale[17];
|
|
TCHAR m_szShtNo[17];
|
|
TCHAR m_sStd[256];
|
|
double m_dDn;
|
|
double m_dOD;
|
|
double m_dThk;
|
|
double m_dRadio;
|
|
double m_dDotWD;
|
|
int m_nRadioOn;
|
|
int m_nView;//西南...
|
|
int m_nAngle;//30 45
|
|
double m_dPipeW;
|
|
BOOL m_bVlvISOV;
|
|
BOOL m_bElbowLine;
|
|
}ISODRAWCFG;
|
|
|
|
class AecISOCrdWatch;
|
|
class AECStatusRecord;
|
|
class AecDb3dRoadAxisLine;
|
|
class AcISOPolyline : public AecDbCurveBase
|
|
{
|
|
public:
|
|
AcISOPolyline( );
|
|
virtual ~AcISOPolyline(void);
|
|
|
|
virtual Acad::ErrorStatus Draw2d(AcGiDraw &mode) const;
|
|
virtual const AecDbObjXDataMap *GetSpecialtyData() const;
|
|
virtual AecDbObjXDataMap *GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite);
|
|
|
|
void SetDoubleLineDraw(bool bDblLine, double dW, double dLW,EAlign eAlign = kMid) { m_bDblLine = bDblLine; m_dW = dW;m_dLW = dLW, m_eAlign = eAlign; }
|
|
|
|
void GetISOCrd(AcGeVector3d &vtX, AcGeVector3d &vtY, AcGeVector3d &vtZ);
|
|
|
|
static BOOL WriteISOXData(AcDbEntity *pEnt, ISODrawCfg &isodrcfg);
|
|
|
|
static BOOL ReadISOXData(AcDbEntity *pEnt, ISODrawCfg &isodrcfg);
|
|
|
|
EAlign m_eAlign;
|
|
double m_dW;
|
|
double m_dLW;
|
|
bool m_bDblLine;
|
|
bool m_bAngleWatchDraw;
|
|
AcDbCurve* m_pCurve; //当前线段
|
|
mutable AcDbCurve* m_pCurve1; //当前线段
|
|
mutable AcDbCurve* m_pCurve2; //当前线段
|
|
AecISOCrdWatch* m_pISOCrdWatch; //仪表盘
|
|
AecDbObjXDataMap m_mapSpecXData;
|
|
};
|
|
|
|
class AcISOPolylineJig : public AcEdJig
|
|
{
|
|
public:
|
|
AcISOPolylineJig(void);
|
|
~AcISOPolylineJig(void);
|
|
|
|
public:
|
|
|
|
void SetDb(CUIISQLiteServer *pDb, WPipe::PipeParam *pParam) {m_pDb = pDb; m_pPipeParam = pParam;}
|
|
|
|
bool DoItISO(int nAngMode, int nAngle, ISODrawCfg& soDrwCfg);
|
|
|
|
AcDbObjectId GetRoadAxisLineId() const;
|
|
|
|
public:
|
|
|
|
//ISO
|
|
void InitStatusRecsFor2DISOLineSegs();
|
|
|
|
void SetAngleWatchDraw(bool bAngleWatchDraw = false);
|
|
|
|
protected:
|
|
|
|
virtual AcEdJig::DragStatus sampler();
|
|
|
|
virtual AcDbEntity* entity() const;
|
|
|
|
virtual Adesk::Boolean update();
|
|
|
|
protected:
|
|
|
|
void FreeBuffer();
|
|
|
|
BOOL AddRoadNode(WPipe::PipeDraw ePipe);
|
|
|
|
BOOL AddRoadNode(double dAngle,double dR);
|
|
|
|
BOOL AddArcRoadNode(WPipe::PipeDraw ePipe);
|
|
|
|
public:
|
|
|
|
bool GetLastStatusAquire(AcGePoint3d& ptGe);
|
|
BOOL Commit(BOOL bElbowFit);
|
|
|
|
private:
|
|
|
|
void PushBackStatusRec(AECStatusRecord* pRec);
|
|
|
|
void PopUpStatusRec();
|
|
|
|
BOOL MakeLine();
|
|
|
|
BOOL MakeArc();
|
|
|
|
void SetUndoGroupBegin();
|
|
|
|
void SetUndoGroupEnd();
|
|
|
|
AECStatusRecord* GetTailStatusRec() const;
|
|
|
|
void MoveAngWatchPosition();
|
|
|
|
AcGeVector3d GetLastInterface() const;
|
|
|
|
void CalReferencePoint();
|
|
|
|
BOOL AddReducer(WPipe::PipeParam ¶m);
|
|
|
|
void GetISOCrd(AcGePoint3d &ptPos, AcGeVector3d &vtX, AcGeVector3d &vtY, AcGeVector3d &vtZ);
|
|
|
|
protected:
|
|
|
|
CPtrArray m_arStaPtrs; //状态集
|
|
CPtrList m_lstStaPtrsBack; //上次状态
|
|
AECStatusRecord* m_pCurStaRec; //当前请求状态
|
|
CUIISQLiteServer *m_pDb;
|
|
AcDbLine* m_pLine; //当前的直线段
|
|
AcDbArc* m_pArc; //当前的圆弧段
|
|
AcDbCurve* m_pCurve; //当前线段
|
|
AecISOCrdWatch* m_pISOCrdWatch; //导向罗盘
|
|
AecDb3dRoadAxisLine* m_pRoadAxisLine; //总线段
|
|
|
|
ISODrawCfg m_IsoDrwCfg;
|
|
AcDbObjectId m_idRoadLine; //路线
|
|
int m_nUndoGoupid; //undo标记id
|
|
WPipe::PipeParam *m_pPipeParam; //pipe
|
|
protected:
|
|
|
|
AcISOPolyline * m_pPolylineProxy; //绘制代理
|
|
};
|