Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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 &param);
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; //绘制代理
};