Files
envi-code/SourceCode/Code2026/tg_shs/inc/TArch/DbNetShelf.h
T

112 lines
3.9 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#ifndef __DBNETSHELF_H
2026-09-28 15:28:50 +08:00
#define __DBNETSHELF_H
//*******************//
2026-10-04 00:04:20 +08:00
// 网架 //
2026-09-28 15:28:50 +08:00
//*******************//
//#include "DbEntity.h"
class TARCH_EXP TDbNetshelf: public TDbEntity {
DECLARE_TENTBASE();
ACRX_DECLARE_MEMBERS(TDbNetshelf);
private:
const static Adesk::UInt8 g_nVersion;
public:
TDbNetshelf();
~TDbNetshelf();
protected:
2026-10-04 00:04:20 +08:00
AcDbHardPointerId m_idLayerSphere; //球图层
double m_dRadiusSphere; //球半径
double m_dRadiusPole; //杆半径
BOOL m_bMonoAdded; //单甩节点加球否
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
DList<XLine> m_lstPole; //杆
XPointList m_lstMono; //单甩节点
XPointList m_lstMulti; //公用节点
2026-09-28 15:28:50 +08:00
public:
2026-10-04 00:04:20 +08:00
//球图层
2026-09-28 15:28:50 +08:00
void SetLayerSphere(AcDbObjectId idLayer);
void SetLayerSphere(CString sLayer);
AcDbObjectId GetLayerSphere() const;
CString GetSphereLayer() const;
2026-10-04 00:04:20 +08:00
//主图层
2026-09-28 15:28:50 +08:00
void SetLayer(CString sLayer);
CString GetLayer() const;
2026-10-04 00:04:20 +08:00
//其他网架参数
2026-09-28 15:28:50 +08:00
void SetRadiusSphere(double dRadius=50);
void SetRadiusPole(double dRadius=25);
2026-10-04 00:04:20 +08:00
void SetMonoAdded(BOOL bFlag=TRUE);//单甩节点加球否
2026-09-28 15:28:50 +08:00
BOOL IsMonoAdded() const;
double GetRadiusSphere() const;
double GetRadiusPole() const;
2026-10-04 00:04:20 +08:00
//杆和节点(单甩或者公用)
2026-09-28 15:28:50 +08:00
void ProcessNetshelf(const DList<XLine>& lstLine,
2026-10-04 00:04:20 +08:00
const BOOL bRemoveSame=TRUE);//可任意的直线链表
2026-09-28 15:28:50 +08:00
const XPointList& GetMonoNode() const;
const XPointList& GetMultiNode() const;
const DList<XLine>& GetPole() const;
2026-10-04 00:04:20 +08:00
//是否单甩或者公用节点
2026-09-28 15:28:50 +08:00
BOOL IsMonoNode(const XPoint& ptVertex) const;
BOOL IsMultiNode(const XPoint& ptVertex) const;
BOOL IsExit(const XLine& line) const;
2026-10-04 00:04:20 +08:00
//添加或者删除杆
2026-09-28 15:28:50 +08:00
BOOL AddPole(const XLine& line);
BOOL DelPole(const XLine& line);
public:
virtual BOOL IsValid() const;
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
// Overriden function from AcDbEntity
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
Acad::ErrorStatus subGetOsnapPoints(
AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& ptPick,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler*);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const;
virtual Acad::ErrorStatus dxfInFields (AcDbDxfFiler*);
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const;
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
// drived from TDbEntity
virtual bool IsModelEntity() const{return true;}
virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &dc) const;
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const;
virtual int GetFirstVersion()const{return 6;}//ok
virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints,
AcDbIntArray& osnapModes,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const;
2026-10-04 00:04:20 +08:00
virtual void GetTips(DList<TObjInfoUnit> &) const; //取动态属性显示数据
2026-09-28 15:28:50 +08:00
protected:
Acad::ErrorStatus MovePoleGripPoints(const XPoint& ptDest,
const AcGeVector3d& offset);
Acad::ErrorStatus DrawSphere3D(XExplodeDraw &dc) const;
Acad::ErrorStatus DrawPole3D(XExplodeDraw &dc) const;
2026-10-04 00:04:20 +08:00
int GetSphereDivNum() const;//球分弧段数
int GetPoleDivNum() const;//杆分弧段数
2026-09-28 15:28:50 +08:00
BOOL GetSphereMesh(XPoint*& pPtArray,const XPoint& ptCenter,
const int nLat,const int nLong) const;
BOOL GetPoleMesh(XPoint*& pPtArray,const XLine& line,const int nCol) const;
2026-10-04 00:04:20 +08:00
void RegulateNode(const XPoint& ptDest);//调整节点
//增加删除节点(自动进行单甩和公用节点的转换)
2026-09-28 15:28:50 +08:00
void AddNode(const XPoint& ptNode);
void DelNode(const XPoint& ptNode);
};
#endif