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

308 lines
9.5 KiB
C++

#pragma once
/*----------------------------------------------------------------------------------
//AecDbEcFitting :桥架 弯头,三通,四通 Fitting类
//
//通过 基本体 进行基本体的拼接
//---------------------------------------------------------------------------------*/
#include "AecDbEntityBase.h"
#include "AecDbObjXDataMap.h"
#include "AecComplexCurveDraw.h"
#include "AecDbX3dPart.h"
#ifdef EARTHWORM_EXPORT
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
#include "AecMInterfaces.h"
class DLLIMPEXP AecDbEcFitting : public AecDbEntityBase,
public AecMInterfaces
{
public:
ACRX_DECLARE_MEMBERS(AecDbEcFitting);
protected:
static Adesk::UInt32 kCurrentVersionNumber;
public:
AecDbEcFitting(void);
virtual ~AecDbEcFitting(void);
//设置尺寸
bool SetDuctParam(const AecHvac::DuctParam& data);
void GetDuctParam(AecHvac::DuctParam& data) const;
//提取电缆沟信息
bool GetDlgData(DlgData &data, BOOL bIsMajOrMin = TRUE) const;
//左右侧支吊架
bool SetXHolder(EAlign kPos, XHolder &xH);
bool GetXHolder(EAlign kPos, XHolder &xH) const;
//图层和线型
void SetSingleLayer(AcDbObjectId& idLayer);
AcDbObjectId GetSingleLayer() const;
void SetSingleLineType(AcDbObjectId& idLt);
AcDbObjectId GetSingleLineType() const;
void SetDoubleLayer(AcDbObjectId& idLayer);
AcDbObjectId GetDoubleLayer() const;
void SetDoubleLineType(AcDbObjectId& idLt);
AcDbObjectId GetDoubleLineType() const;
void SetDashLayer(AcDbObjectId& idLayer);
AcDbObjectId GetDashLayer() const;
void SetCenterLayer(AcDbObjectId& idLayer);
AcDbObjectId GetCenterLayer() const;
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);
virtual Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus subGetGeomExtents(AcDbExtents& extents) const;
virtual Acad::ErrorStatus subIntersectWith(const AcDbEntity* pEnt,
AcDb::Intersect intType,
AcGePoint3dArray& points,
INT_PTR thisGsMarker,
INT_PTR otherGsMarker) const;
virtual Acad::ErrorStatus subIntersectWith(const AcDbEntity* pEnt,
AcDb::Intersect intType,
const AcGePlane& projPlane,
AcGePoint3dArray& points,
INT_PTR thisGsMarker,
INT_PTR otherGsMarker) const;
#endif
//AEC 派生
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawBridge2D(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrech2D(AcGiDraw &dc) const;
Acad::ErrorStatus DrawBridge3D(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrech3D(AcGiDraw &dc) const;
bool GetDlgRegionData(DlgData &data, AcArray<RegionAndEl> &arRegEl) const;
virtual void AssertWriteEnabled(Adesk::Boolean autoUndo = true, Adesk::Boolean recordModified = true );
public:
//专业数据 和 绘制设置
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);
public:
virtual void SetActive(bool bActive);
virtual bool IsActive() const;
virtual void NewGUID();
//桥架的放置法向量
AcGeVector3d GetNormal() const;
Acad::ErrorStatus TransformBy(const AcGeMatrix3d xform);
//获取二维视图显示的图形
virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray& arEntPtrs) const;
//获取三维显示图形
virtual int GetDraw3dables(AcDbVoidPtrArray& arEntPtrs,bool bWriteBimInfo = false ) const;
//剖切提取,符号法,对于管线构件
virtual bool GetSectionDraw(AcGePlane& plan,const AcGeVector3d& vtTo,AcDbVoidPtrArray& arRegionPtrs) const;
//剖切提取,范围面剖切Slice切割法,对于土建构件
virtual int GetSectionDraw(const AcGePoint3d& ptFr,const AcGePoint3d& ptTo,const AcGeVector3d& vtViewDir,const AcGeVector3d& vtTo, AcDbVoidPtrArray& arRegionPtrs) const;
LPCTSTR GetGripCmd() const;
virtual SHJson::WValue& ToJson(bool bExprotGeo = true) const;
virtual bool ByJson(const SHJson::WValue &v);
virtual bool GetBimInfoTip(CString& sInfoTip) const;
virtual bool SendUserData(struct resbuf *pRb);
virtual int ComparedTo(AecDbEntityBase* pCurOther) const;
bool GetFittingName(CString &sName) const;
protected:
Acad::ErrorStatus DrawElbow2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrElbow2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTee2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrTee2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawCross2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrCross2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawReduce2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrReduce2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawOffset2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrOffset2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawElbow3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrElbow3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTee3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrTee3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawCross3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrCross3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawReduce3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrReduce3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawOffset3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrOffset3d(AcGiDraw &dc) const;
//ELBOW
//内斜线外直角
Acad::ErrorStatus DrawIncline2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawIncline3d(AcGiDraw &dc) const;
//沟
Acad::ErrorStatus DrawTrIncline2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrIncline3d(AcGiDraw &dc) const;
//TEE
Acad::ErrorStatus DrawIncline2Tee2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawIncline2Tee2d0(AcGiDraw &dc) const;
Acad::ErrorStatus DrawIncline2Tee2d3(AcGiDraw &dc) const;
Acad::ErrorStatus DrawIncline2Tee2d5(AcGiDraw &dc) const;
Acad::ErrorStatus DrawIncline2Tee3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawIncline2Tee3d0(AcGiDraw &dc) const;
Acad::ErrorStatus DrawIncline2Tee3d3(AcGiDraw &dc) const;
Acad::ErrorStatus DrawIncline2Tee3d5(AcGiDraw &dc) const;
//沟
Acad::ErrorStatus DrawTrIncline2Tee2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrIncline2Tee3d(AcGiDraw &dc) const;
//Cross
Acad::ErrorStatus DrawInterCross2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawInterCross3d(AcGiDraw &dc) const;
//沟
Acad::ErrorStatus DrawTrInterCross2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawTrInterCross3d(AcGiDraw &dc) const;
void DrawInfCircle(AcGiDraw &dc,AcDbArc* pArcElbow,double dR,int nStyle) const;
Acad::ErrorStatus DrawUserInf(AcGiDraw &dc) const;
Acad::ErrorStatus DrawUserInf3d(AcGiDraw &dc) const;
Acad::ErrorStatus BoolSubtractUserInf3d(AecDbX3dPart &part) const;
Acad::ErrorStatus ShowUsedFill(AcGiDraw &dc) const;
public:
//用户接口
void AddUserInterface(const AecUserInterface &inf);
bool RemoveUserInterface(const TCHAR *pszNo);
bool RemoveUserInterface(int nIndex);
int GetUserInterfaceCount() const;
bool GetUserInterface(int nIndex, AecUserInterface &inf) const;
bool GetUserInterface(const AcGePoint3d &ptHit, AecUserInterface &inf) const;
virtual void ProcessHlrResult(const AcArray<AcDbEntity *> &ar
, const std::map<AcDbEntity *, AcArray<AcDbEntity *>> &preAr
, AcArray<AcDbEntity *> &output) const;
protected:
bool ReadUserInterface(AcDbDwgFiler *pFiler);
void WriteUserInterface(AcDbDwgFiler *pFiler) const;
protected:
Adesk::Int16 m_nInfActive;
CString m_sGUID;
bool m_bActive;
//新版本
AcArray< AecUserInterface> m_arUserInfs; //用户自定义接口带管长
//其他按通用图层和线型
//单线图层和线型
AcDbObjectId m_idSingleLayer;
AcDbObjectId m_idSingleLnType;
//双线图层和线型
AcDbObjectId m_idDoubleLayer;
AcDbObjectId m_idDoubleLnType;
//
AcDbObjectId m_idDashLayer;
AcDbObjectId m_idCenterLayer;
//专业数据
AecDbObjXDataMap m_mapSpecXData;
protected:
mutable AcDbVoidPtrArray m_arDrawBuffer3d1;
mutable AcDbVoidPtrArray m_arDrawBuffer3d2;
public:
AecGripData* m_pGripAppData; //夹点
};