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

154 lines
4.6 KiB
C++

#pragma once
#include "AecDbCurveBase.h"
#include "AecDbObjXDataMap.h"
class AecAngleWatch;
class AecDbECableJig;
class AECStatusRecord;
class AecDbECableTray;
class AecDbEcFitting;
class AecDbECableLine : public AecDbCurveBase
{
public:
AecDbECableLine();
AecDbECableLine(AecDbECableJig* pJig);
virtual ~AecDbECableLine(void);
protected:
virtual Acad::ErrorStatus Draw2d(AcGiDraw &mode) const;
virtual const AecDbObjXDataMap* GetSpecialtyData() const { assertReadEnabled(); return NULL; }
virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite) { return NULL; }
public:
//管线基本参数
//jig
void SetPipeParam(AecHvac::DuctParam* pPipePar);
AecHvac::DuctParam* GetPipeParam();
//电缆沟支架
void SetXHolder(const XHolder& lHolder, const XHolder& rHolder);
//jig
double GetEndElevation() const;
//jig
BOOL AddPipeNode(AECStatusRecord* pCurStaRec , WPipe::PipeDraw ePipe );
//jig
BOOL AddReducer(AECStatusRecord* pCurStaRec,AecHvac::DuctParam* pParam);
//jig
BOOL ChangeEl(AECStatusRecord* pRec,double dNewEl,BOOL bCheckRec,double dRedElPos,AecHvac::DuctParam* pParamred);
//jig
BOOL ChangeEl2(AECStatusRecord* pRec,AECStatusRecord* pRecLast,double dNewEl,BOOL bCheckRec,double dRedElPos,AecHvac::DuctParam* pParamred);
//jig
BOOL ChangeEl3(AECStatusRecord* pRec,AcGePoint3d& ptThis);
//jig
void SetAngleWath(AcGePoint3d& ptCen,const AcGePoint3d& ptGeTo,const AcGeVector3d& vtDir = AcGeVector3d::kXAxis);
//jig
void MoveAngWatchPosition();
void SwitchAutoSnapOrF8();
void AngWatchTo(const AcGePoint3d& ptGeTo);
//jig 画管线停止
BOOL PipeFinished();
//jig
void PopUpInterface(int nGroupID);
void PushPipeParam();
void PushInterface(AecInterface& intf,BOOL bStartDragFromIt = FALSE);
//jig
AecInterface* GetLastInterface();
public:
virtual BOOL CreateWPipe(AECStatusRecord* pRec,BOOL bMaybeAddTee = FALSE);
virtual BOOL ExtendLastWPipe(AECStatusRecord* pRec);
virtual BOOL CreateElbowAndPipe(AECStatusRecord* pRec, const EFittingType &type = eElbow);
void SetElbowAndPipe(bool bHasFit);
public:
AcDbObjectId CreateElbow( AcGeVector3d vtMaj,
AcGePoint3d ptMid,
AcGeVector3d vtMin,
AecHvac::DuctParam* pparam,
BOOL bInsertBeforLast = FALSE);
BOOL CreatePipe(AcGePoint3d ptSta,AcGePoint3d ptEnd,AecHvac::DuctParam* pPipeParam,double dSectRot = 0.0);
BOOL MaybeAddTeeConnectToThis(AcGePoint3d& ptGe,AcGeVector3d& vtDir,AcDbObjectId id,int nPos);
BOOL MaybeAddCrossConnectToThis(AcGePoint3d ptFr,AcGePoint3d ptTo,AcDbObjectId id);
BOOL SplitWPipe(AcGePoint3d& ptMid,double dL,AecDbECableTray* pWPipe,BOOL bEraseWhiletooShort = TRUE);
BOOL ModifyWPipe(AcGePoint3d& ptGe,AcDbObjectId id,int nPos);
BOOL AddTee(AecDbECableTray* pWPipe,double dL,const AcGePoint3d& ptMid,double dB,const AcGeVector3d& vtMin);
//添加异形三通
BOOL AddTee3(const AcGePoint3d& ptMid, double dL, const AcGeVector3d& vtMaj, const AcGeVector3d& vtMin, AecUserInterface &uinf);
BOOL AddTee5(const AcGePoint3d& ptMid, double dL, const AcGeVector3d& vtMaj, const AcGeVector3d& vtMin, AecUserInterface& uinf);
BOOL AddCross(AcDbObjectId id1,AcGePoint3d& ptInt,AcDbObjectId idThis);
BOOL AddElbow(AcDbObjectId id1,AcGePoint3d& ptGe,AcDbObjectId idThis);
BOOL ChangeElbowToTree(AecDbEcFitting* pDbFit,AcGeVector3d vtMaj,AcGePoint3d ptGeM,AcGeVector3d vtMin,double dDn,AECStatusRecord* pCurRec);
BOOL ChangeTeeToCross(AecDbEcFitting* pDbFit,AcGeVector3d& vtMaj,AcGeVector3d& vtMin,AECStatusRecord* pCurRec);
void ModifyPipeOfElbow(AcDbObjectId id,AcGePoint3d ptOld,AcGePoint3d ptNew);
double PixelToWcs(int nPixel);
void AddUserData(AcDbObjectId id,AecDbObjXDataMap* pXDataMap,int nType);
static void RemoveHolePipe(AecDbECableTray* pWPipe);
BOOL IsLastParamAndInfFit();
private:
void *operator new[](size_t nSize) { return 0; }
void operator delete[](void *p) {};
void *operator new[](size_t nSize, const char *file, int line) { return 0; }
protected:
BOOL m_bStopCommand;
AecAngleWatch* m_pAngleWatch; //导向罗盘
AecDbCurveBase* m_pCurPipeLine[2]; //当前的管子
AecDbECableJig* m_pPipeJig; //当前拖动
AecHvac::DuctParam* m_pPipeParam; //管子参数
CPtrList m_lstLastPipeParam; //管子参数历史记录
AcDbObjectId m_idStartDragFrom;
CArray<AecInterface> m_arHistoryIntfs; //记录历史的接口
bool m_bHasFit;
public:
AecInterface m_intf0; //临时
AecInterface m_intf1; //
AecDbObjXDataMap m_xInitDataMap;
AcDbObjectId m_idTemp; //临时
//电缆沟的内部支架
BOOL m_bHasHolder;
XHolder m_lHolder;
XHolder m_rHolder;
};