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

133 lines
4.1 KiB
C++

#pragma once
#include "AecDbObjXDataMap.h"
#include "AecDbEntityBase.h"
#ifdef EARTHWORM_EXPORT
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
class DLLIMPEXP AecDbPipeHanger : public AecDbEntityBase
{
public:
ACRX_DECLARE_MEMBERS(AecDbPipeHanger);
protected:
static Adesk::UInt32 kCurrentVersionNumber;
public:
AecDbPipeHanger();
virtual ~AecDbPipeHanger();
public:
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);
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);
//AEC 派生
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
public:
//专业数据 和 绘制设置
AecDbObjXDataMap *GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite);
virtual const AecDbObjXDataMap *GetSpecialtyData() const;
//获取二维视图显示的图形
virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray& arEntPtrs) const;
//获取三维显示图形
virtual int GetDraw3dables(AcDbVoidPtrArray& arEntPtrs, bool bWriteBimInfo = false) const;
virtual void PreprocessForHlr(const AcGePoint3d &ptPlnO
, const AcGeVector3d &vtPlnN
, AcArray<AcDbEntity *> &ar) const;
virtual void ProcessHlrResult(const AcArray<AcDbEntity *> &ar
, const std::map<AcDbEntity *, AcArray<AcDbEntity *>> &preAr
, AcArray<AcDbEntity *> &output) const;
public:
//设置变量
BOOL AddVar(AecDbObjXDataMap *pXData);
BOOL GetVar(AecDbObjXDataMap& xData) const;
//添加脚本行
BOOL LoadPmsFile(LPCTSTR pszSrcFullFile);
//弯头支座需要
BOOL SetElbow(AcDbArc* pElbowBase, double dOD);
//插入
BOOL Insert(const AcGePoint3d &pt, double dRot, BOOL bAddDraw = FALSE);
AcGePoint3d position() const;
double rotation() const;
BOOL GetDirLine(AcDbLine &lnDir) const;
protected:
BOOL EX(CString &sLn);
BOOL SLC(CString &sLn);
BOOL BLT(CString &sLn);
BOOL PCP(CString &sLn);
BOOL PCP5(CString &sLn);
BOOL PCP6(CString &sLn);
BOOL PCP7(CString& sLn);
BOOL YL(CString &sLn);
BOOL CX(CString &sLn);
BOOL CLC(CString &sTxt);
void CLC(CStringArray &arLt);
BOOL Ex(double dr, AcDbCurve *pCur);
BOOL PLR(CString& sLn);
AcDbRegion *AI(CStringArray &arLt, AcGePoint3d &ptOrg);
AcDbRegion *CS(CStringArray &arLt, AcGePoint3d &ptOrg);
AcDbRegion *RX(CStringArray &arLt, AcGePoint3d &ptOrg);
AcDbRegion* HS(CStringArray& arLt, AcGePoint3d& ptOrg);
AcDbRegion* PIP(CStringArray& arLt, AcGePoint3d& ptOrg);
AcDbRegion* PL(CString& sPl, AcGeVector3d& vtNm);
AcDbRegion* POR(CString& sPl, AcGeVector3d& vtNm);
BOOL Ex(AcDbRegion *pRg, const AcGePoint3d &pt0, const AcGePoint3d &pt1, BOOL bDelRg);
BOOL Ex(AcDbRegion* pRg, AcDbCurve* pCur, double dTrag = 0.0,BOOL bDeleteRg = TRUE);
BOOL Blt(AcGePoint3d &pt, CString &sMx, AcGeVector3d &vtDir, double dL,int nNutE);
BOOL NUT(AcGePoint3d &pt, CString &sMx, const AcGeVector3d &vtDir,AcGePoint3d& ptTo,BOOL bGst);
BOOL SCR(AcGePoint3d &pt, CString &sMx, const AcGeVector3d &vtDir, double dL);
BOOL PZT(AcGePoint3d &pt, CString &sMx, AcGeVector3d &vtDir);
BOOL OMG(AcGePoint3d& ptPos, double dR, double dA, double da1,double db, double dt2,double dr,AcGeVector3d& vtDir);
void SwitchVar();
BOOL AddLine(LPCTSTR pszLine);
private:
CStringArray m_arLines;
AecDbObjXDataMap m_mapSpecXData;
double m_dRot;
double m_dElbowOD;
AcDbArc* m_pElbowArc;
AcGePoint3d m_ptIns;
//不序列化
AecGripData *m_pGripAppData; //夹点
AcDbVoidPtrArray m_ar3DSlds; //实体
AcGePoint3dArray m_arRecPts; //2d
};