217 lines
6.6 KiB
C++
217 lines
6.6 KiB
C++
#pragma once
|
|
|
|
/*----------------------------------------------------------------------------------
|
|
//AecDbHvacFitting :弯头,三通,四通,等 风管 Fitting类
|
|
//
|
|
//通过 基本体 进行基本体的拼接
|
|
//---------------------------------------------------------------------------------*/
|
|
|
|
#include "AecDbEntityBase.h"
|
|
#include "AecDbObjXDataMap.h"
|
|
#include "AecComplexCurveDraw.h"
|
|
|
|
#ifdef EARTHWORM_EXPORT
|
|
#define DLLIMPEXP __declspec(dllexport)
|
|
#else
|
|
#define DLLIMPEXP __declspec(dllimport)
|
|
#endif
|
|
|
|
#include "AecMInterfaces.h"
|
|
|
|
class DLLIMPEXP AecDbHvacFitting : public AecDbEntityBase,
|
|
public AecMInterfaces
|
|
{
|
|
public:
|
|
ACRX_DECLARE_MEMBERS(AecDbHvacFitting);
|
|
|
|
protected:
|
|
static Adesk::UInt32 kCurrentVersionNumber;
|
|
|
|
public:
|
|
AecDbHvacFitting(void);
|
|
virtual ~AecDbHvacFitting(void);
|
|
|
|
//设置尺寸
|
|
bool SetDuctParam(const AecHvac::DuctParam& data);
|
|
void GetDuctParam(AecHvac::DuctParam& data) 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 Acad::ErrorStatus subExplode(AcDbVoidPtrArray& entitySet) 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;
|
|
|
|
virtual void AssertWriteEnabled(Adesk::Boolean autoUndo = true, Adesk::Boolean recordModified = true );
|
|
|
|
//绘制接口
|
|
virtual Acad::ErrorStatus DrawInfArrow(AcGiDraw &dc) const;
|
|
|
|
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);
|
|
virtual LPCTSTR GetGripCmd() const;
|
|
|
|
AcGeVector3d normal() const;
|
|
|
|
// 用于管线系统变化后,更新实体
|
|
// 主要是 内外线的颜色、线形、线宽、图层
|
|
void UpdatePipeSystem(const int &outClr
|
|
, const AcDbObjectId &outLt
|
|
, const double &outWd
|
|
, const AcDbObjectId &outLy
|
|
, const int &innClr
|
|
, const AcDbObjectId &innLt
|
|
, const double &innWd
|
|
, const AcDbObjectId &innLy);
|
|
|
|
public:
|
|
|
|
virtual void SetActive(bool bActive);
|
|
|
|
virtual bool IsActive() const;
|
|
virtual void NewGUID();
|
|
|
|
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;
|
|
|
|
void DrawInfCap2d(AcGiDraw &dc) const;
|
|
|
|
void DrawInfCap3d(AcGiDraw &dc) const;
|
|
|
|
void DrawSubAxis(AcGiDraw &dc,AcDbEntity* pEnt) const;
|
|
|
|
virtual SHJson::WValue& ToJson(bool bExprotGeo = true) const;
|
|
|
|
virtual bool ByJson(const SHJson::WValue &v);
|
|
|
|
virtual bool GetBimInfoTip(CString& sInfoTip) const;
|
|
|
|
virtual int ComparedTo(AecDbEntityBase* pCurOther) const;
|
|
|
|
bool GetFittingName(CString &sName) const;
|
|
|
|
virtual void ProcessHlrResult(const AcArray<AcDbEntity *> &ar
|
|
, const std::map<AcDbEntity *, AcArray<AcDbEntity *>> &preAr
|
|
, AcArray<AcDbEntity *> &output) const;
|
|
|
|
protected:
|
|
|
|
Adesk::Int16 m_nInfActive;
|
|
CString m_sGUID;
|
|
bool m_bActive;
|
|
|
|
//其他按通用图层和线型
|
|
//单线图层和线型
|
|
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; //夹点
|
|
};
|