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

112 lines
3.9 KiB
C++

#ifndef __DBNETSHELF_H
#define __DBNETSHELF_H
//*******************//
// 网架 //
//*******************//
//#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:
AcDbHardPointerId m_idLayerSphere; //球图层
double m_dRadiusSphere; //球半径
double m_dRadiusPole; //杆半径
BOOL m_bMonoAdded; //单甩节点加球否
DList<XLine> m_lstPole; //杆
XPointList m_lstMono; //单甩节点
XPointList m_lstMulti; //公用节点
public:
//球图层
void SetLayerSphere(AcDbObjectId idLayer);
void SetLayerSphere(CString sLayer);
AcDbObjectId GetLayerSphere() const;
CString GetSphereLayer() const;
//主图层
void SetLayer(CString sLayer);
CString GetLayer() const;
//其他网架参数
void SetRadiusSphere(double dRadius=50);
void SetRadiusPole(double dRadius=25);
void SetMonoAdded(BOOL bFlag=TRUE);//单甩节点加球否
BOOL IsMonoAdded() const;
double GetRadiusSphere() const;
double GetRadiusPole() const;
//杆和节点(单甩或者公用)
void ProcessNetshelf(const DList<XLine>& lstLine,
const BOOL bRemoveSame=TRUE);//可任意的直线链表
const XPointList& GetMonoNode() const;
const XPointList& GetMultiNode() const;
const DList<XLine>& GetPole() const;
//是否单甩或者公用节点
BOOL IsMonoNode(const XPoint& ptVertex) const;
BOOL IsMultiNode(const XPoint& ptVertex) const;
BOOL IsExit(const XLine& line) const;
//添加或者删除杆
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;
virtual void GetTips(DList<TObjInfoUnit> &) const; //取动态属性显示数据
protected:
Acad::ErrorStatus MovePoleGripPoints(const XPoint& ptDest,
const AcGeVector3d& offset);
Acad::ErrorStatus DrawSphere3D(XExplodeDraw &dc) const;
Acad::ErrorStatus DrawPole3D(XExplodeDraw &dc) const;
int GetSphereDivNum() const;//球分弧段数
int GetPoleDivNum() const;//杆分弧段数
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;
void RegulateNode(const XPoint& ptDest);//调整节点
//增加删除节点(自动进行单甩和公用节点的转换)
void AddNode(const XPoint& ptNode);
void DelNode(const XPoint& ptNode);
};
#endif