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

506 lines
17 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
//-----------------------------------------------------------------------------+
2026-09-28 15:28:50 +08:00
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
// = FileName : TDbColumn.cpp
// = Version : ver2.0
// = Author : xlc
// = CreateDate : 2002-09-09
2026-10-04 00:04:20 +08:00
// = Description: 柱子类的定义
2026-09-28 15:28:50 +08:00
// = Maintainers:
//
//-----------------------------------------------------------------------------+
#ifndef _TDBCOLUMN_H_
#define _TDBCOLUMN_H_
#ifndef _TDBENTITY_H_
#include "TDbEntity.h"
#endif
#ifndef _TCOLUMNDATA_H_
#include "TColumnData.h"
#endif
#ifndef _TWALLBASE_H_
#include "TWallBase.h"
#endif
#ifndef _TDBWALL_H_
#include "TDbWall.h"
#endif
#ifdef TASD
#ifndef _TSTRULOAD_H_
#include "TStruLoad.h"
#endif
#ifndef _TCOMBSECTFORCEDATA_H_
#include "TCombSectForceData.h"
#endif
#ifndef _TCOMBFORCEDATA_H_
#include "TCombForceData.h"
#endif
#ifndef _TREINSECTDATA_H_
#include "TReinSectData.h"
#endif
#ifndef _TREINDATA_H_
#include "TReinData.h"
#endif
#endif
class TARCH_EXP TDbColumn: public TDbEntity, public TColumnData,public TWallBase
{
friend class TDbWall;
DECLARE_TENTBASE();
public:
TDbColumn();
ACRX_DECLARE_MEMBERS(TDbColumn);
// Overriden function from AcDbEntity
virtual Acad::ErrorStatus audit(AcDbAuditInfo* pAuditInfo);
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) 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 subGetGripPoints(AcGePoint3dArray& gripPoints,
AcDbIntArray& osnapModes,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray & stretchPoints) const;
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
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 subWblockClone(AcRxObject* pOwner,
AcDbObject*& pClonedObject,
AcDbIdMapping& idMap,
Adesk::Boolean isPrimary) const;
2026-10-04 00:04:20 +08:00
// 为保留旧状态重载
2026-09-28 15:28:50 +08:00
virtual Acad::ErrorStatus subOpen(AcDb::OpenMode mode);
// drived from TDbEntity
virtual BOOL IsValid() const;
virtual bool IsModelEntity() const;
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
virtual Acad::ErrorStatus GetPathPoly(TGGePoly2D &poly,AcGeVector3d&vt)const;
virtual Acad::ErrorStatus SetPathPoly(const TGGePoly2D &poly,const AcGeVector3d&vt);
virtual Acad::ErrorStatus ExplodeOrDraw3d(TGGiExplodeDrawBase &dc) const;
virtual Acad::ErrorStatus ExplodeOrDraw2d(TGGiExplodeDrawBase &dc) const;
//add by xlc on 110407
virtual Acad::ErrorStatus DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet, BOOL *bErase);
2026-10-04 00:04:20 +08:00
//是否去裁剪
2026-09-28 15:28:50 +08:00
virtual bool IsMeClip()const;
2026-10-04 00:04:20 +08:00
//取动态属性显示数据
2026-09-28 15:28:50 +08:00
virtual int GetCtrlToggleIndex()const;
virtual void GetTips(TDPtrList<TObjInfoUnit> &) const;
#if ADS > 15
virtual void CreateGrip();
virtual Acad::ErrorStatus EntityToDim(long iGrip,long iDim,const AcDbEntity*pEnt);
virtual Acad::ErrorStatus DimToEntity(long iGrip,long iDim,double newValue,const AcGeVector3d& offset);
#endif
virtual const TCHAR * GetDefaultLayer() const;
virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const;
//override TWallBase
virtual AcDbEntity* GetMyEntity()const;
virtual int GetMaterialIndex()const;
virtual TWallBase::Usage GetUsage()const;
//add by wlw on 101026
virtual bool GetStandardFaceBody(AcDbVoidPtrArray& arFacePtrs) const;
virtual bool GetSafeProtectedSpace(AcDbVoidPtrArray& arFacePtrs) const;
virtual bool GetSection(const AcDbFace &face, const AcGeVector3d& vtPlaneSecDir,
std::vector<TObjSectionRecord> &sectionRecords,
AcDbVoidPtrArray& arFillPtrs) const;
virtual CString GetXml(const AcGeMatrix3d& mat) const;
2026-10-04 00:04:20 +08:00
// sg add 101115,支持统一标高
2026-09-28 15:28:50 +08:00
virtual bool UnifyElevation(double dElevation = 0.0);
int GetPriority()const;
BOOL IsFortifyColumn() const;
BOOL IsShortColumn()const;
BOOL IsLabelEnabled() const;
void SetFortifyColumn(BOOL bTrue);
void SetShortColumn(BOOL bTrue);
void SetColumnFlag(Adesk::UInt16 nFlag);
void SetLayerHatch2d(AcDbObjectId id);
AcDbObjectId GetLayerHatch2d() const;
TADSGePoint3d GetLabelPos(BOOL bIsDefault = FALSE) const;
void SetLabelPos(TADSGePoint3d pt);
void EnableLabel(BOOL bTrue);
const TCHAR *GetLabel() const;
void SetLabel(const TCHAR *sz);
AcDbObjectId GetTextStyle() const;
void SetTextStyle(AcDbObjectId id);
AcDbObjectId GetLayerText() const;
void SetLayerText(AcDbObjectId id);
double GetTextHeight(BOOL bAsPaperUnit = TRUE) const;
void SetTextHeight(double dHeight, BOOL bAsPaperUnit = TRUE);
const TCHAR* GetMaterialText() const;
const TCHAR* GetHatchPattern() const;
Adesk::UInt16 GetHatchColor() const;
Adesk::UInt16 GetColumnFlag() const;
2026-10-04 00:04:20 +08:00
//取本墙线厚度,不管加粗开关是否开启
2026-09-28 15:28:50 +08:00
double GetLineWeight(BOOL bAsPaperUnit = TRUE) const;
void GetAxisColuInfo(TADSGePointDir2d &ptLoc, TVector3D &vtOffset) const;
// Helper Method
Acad::ErrorStatus AddLinkWallId(const AcDbObjectId &id);
void RemoveLinkWallId(const AcDbObjectId&id);
void ResetLinkage();
void PreErase()const;
void GetThinCurves(TDPtrList<TGGeCurveSegment> &lstResult, TDPtrList<TGGeCurveSegment> &lstResultIn) const;
void UpdateAssocWallGraphics() const;
2026-10-04 00:04:20 +08:00
//柱子保温接口函数wlw
//是否有保温
2026-09-28 15:28:50 +08:00
bool IsInsulateOnColumn() const;
2026-10-04 00:04:20 +08:00
//设置保温标识
2026-09-28 15:28:50 +08:00
void SetInsulateOnColumn(bool bAdd = true);
void SetInsulateThick(double nThick);
double GetInsulateThick() const;
void SetInsulateLayerId(AcDbObjectId id);
AcDbObjectId GetInsulateLayerId() const;
2026-10-04 00:04:20 +08:00
//通过一个向量,增加该方向上的保温层。vtdir = 柱子边线上一点 - 柱子原点
2026-09-28 15:28:50 +08:00
bool AppendInsulateDir(AcGeVector3d vtDir);
2026-10-04 00:04:20 +08:00
//删除该方向上的保温层vtdir = 柱子边线上一点 - 柱子原点
2026-09-28 15:28:50 +08:00
bool RemoveInsulateDir(AcGeVector3d vtDir);
2026-10-04 00:04:20 +08:00
//绘制保温层
2026-09-28 15:28:50 +08:00
void DrawInsulateLine(TGGiExplodeDrawBase &dc) const;
2026-10-04 00:04:20 +08:00
//nside = 1 加内墙方向柱子保温 = 0加外墙方向柱子保温
2026-09-28 15:28:50 +08:00
void DrawInsulateInExt(int nSide);
2026-10-04 00:04:20 +08:00
///*柱子保温内部计算函数
//从xdata中取得柱子的保温标识和有保温线的方向数组
2026-09-28 15:28:50 +08:00
bool ReadInsulateFromXData(bool& bHasInsulate, AcGeVector3dArray& arDir) const;
2026-10-04 00:04:20 +08:00
//将柱子的保温标识和保温线的方向数组存入xdata
2026-09-28 15:28:50 +08:00
bool WriteInsulateToXData(bool bHasInsulate, const AcGeVector3dArray& arDir);
2026-10-04 00:04:20 +08:00
//得到柱子的保温poly2D, bPerfect控制是否得到完美外轮廓,柱子3D显示将弥补墙的缺角
2026-09-28 15:28:50 +08:00
void GetColSurFacePoly2D(TGGePoly2D& polySurFace,BOOL bPerfect = FALSE) const;
2026-10-04 00:04:20 +08:00
//得到柱子的保温裁剪后的线段数组
2026-09-28 15:28:50 +08:00
void GetColSurFaceLines(TDPtrList<TGGeCurveSegment>& lstSegsSurFace) const;
2026-10-04 00:04:20 +08:00
//通过一点得到柱子的保温线数组中与该点相连的连续的线段数组
2026-09-28 15:28:50 +08:00
void GetConcatLine(TADSGePoint3d ptStart, TDPtrList<TGGeCurveSegment>& lstSegsSrc, TDPtrList<TGGeCurveSegment>& lstSegsCon) const;
2026-10-04 00:04:20 +08:00
//得到最终的保温线
2026-09-28 15:28:50 +08:00
void GetColSurFaceFinal(TDPtrList<TGGeCurveSegment>& lstSegsSurFinal) const;
2026-10-04 00:04:20 +08:00
//判断该方向上是否有保温线
2026-09-28 15:28:50 +08:00
bool HasSurFaceWithVector(AcGeVector3d vtDir) const;
bool HasSurFaceWithVector(AcGeVector3d vtDir, const TDPtrList<TGGeCurveSegment>& lstSegsSurFace) const;
2026-10-04 00:04:20 +08:00
//判断该方向上是否有保温线,并返回保温线数组
2026-09-28 15:28:50 +08:00
bool GetSurFaceWithVector(AcGeVector3d vtDir, TDPtrList<TGGeCurveSegment>& lstSegsSurFace) const;
2026-10-04 00:04:20 +08:00
//找到一个seg与outpoly的交点
2026-09-28 15:28:50 +08:00
bool GetIntersectWithCurveSeg(const TGGeCurveSegment& segSrc, TADSGePoint3d& ptInter);
bool GetIntersectWithLine(const TGGeLine& line, TADSGePoint3d& ptInter);
2026-10-04 00:04:20 +08:00
//配合DrawInsulateInExt函数使用
2026-09-28 15:28:50 +08:00
BOOL DrawInsulateInExtByPt(int nSide,const TGGeCurveSegment& segIns);
2026-10-04 00:04:20 +08:00
//柱子保温内部计算函数*/
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
//T20新材料wlw add140214
2026-09-28 15:28:50 +08:00
CString GetT20ColMat() const;
void SetT20ColMat(CString sMat);
#ifdef TASD
2026-10-04 00:04:20 +08:00
//结构数据
2026-09-28 15:28:50 +08:00
//add by xlc on 120118
2026-10-04 00:04:20 +08:00
//设置荷载数组
2026-09-28 15:28:50 +08:00
bool SetLoadsArray(const std::vector<TStruLoad>& vectLoads);
2026-10-04 00:04:20 +08:00
//获得荷载数组
2026-09-28 15:28:50 +08:00
bool GetLoadsArray(std::vector<TStruLoad>& vectLoads)const;
2026-10-04 00:04:20 +08:00
//清除荷载数组
2026-09-28 15:28:50 +08:00
void ClearLoadsArray();
2026-10-04 00:04:20 +08:00
// add by wjx on 120329 轴力包络图
2026-09-28 15:28:50 +08:00
virtual bool SetNGraArray(const std::vector<TCombForceData>& vecData);
2026-10-04 00:04:20 +08:00
//获得轴力包络图数组
2026-09-28 15:28:50 +08:00
virtual bool GetNGraArray(std::vector<TCombForceData>& vecData)const;
2026-10-04 00:04:20 +08:00
//清除弯轴力包络图数组
2026-09-28 15:28:50 +08:00
virtual void ClearNGraArray();
2026-10-04 00:04:20 +08:00
//底层墙柱
//X向最大剪力
2026-09-28 15:28:50 +08:00
bool SetVXMaxArray(const std::vector<TCombForceData>& vecData);
bool GetVXMaxArray(std::vector<TCombForceData>& vecData)const;
void ClearVXMaxArray();
2026-10-04 00:04:20 +08:00
//Y向最大剪力
2026-09-28 15:28:50 +08:00
bool SetVYMaxArray(const std::vector<TCombForceData>& vecData);
bool GetVYMaxArray(std::vector<TCombForceData>& vecData)const;
void ClearVYMaxArray();
2026-10-04 00:04:20 +08:00
//最大轴力
2026-09-28 15:28:50 +08:00
bool SetNMaxArray(const std::vector<TCombForceData>& vecData);
bool GetNMaxArray(std::vector<TCombForceData>& vecData)const;
void ClearNMaxArray();
2026-10-04 00:04:20 +08:00
//最小轴力
2026-09-28 15:28:50 +08:00
bool SetNMinArray(const std::vector<TCombForceData>& vecData);
bool GetNMinArray(std::vector<TCombForceData>& vecData)const;
void ClearNMinArray();
2026-10-04 00:04:20 +08:00
//X向最大弯矩
2026-09-28 15:28:50 +08:00
bool SetMXMaxArray(const std::vector<TCombForceData>& vecData);
bool GetMXMaxArray(std::vector<TCombForceData>& vecData)const;
void ClearMXMaxArray();
2026-10-04 00:04:20 +08:00
//Y向最大弯矩
2026-09-28 15:28:50 +08:00
bool SetMYMaxArray(const std::vector<TCombForceData>& vecData);
bool GetMYMaxArray(std::vector<TCombForceData>& vecData)const;
void ClearMYMaxArray();
2026-10-04 00:04:20 +08:00
// 内力数据
2026-09-28 15:28:50 +08:00
bool SetForceArray(const std::vector<TCombSectForceData>& vecData);
bool GetForceArray(std::vector<TCombSectForceData>& vecData)const;
void ClearForceArray();
2026-10-04 00:04:20 +08:00
// 活载标准内力数据
2026-09-28 15:28:50 +08:00
bool SetVSForceArray(const std::vector<TCombSectForceData>& vecData);
bool GetVSForceArray(std::vector<TCombSectForceData>& vecData)const;
void ClearVSForceArray();
2026-10-04 00:04:20 +08:00
// 恒载标准内力数据
2026-09-28 15:28:50 +08:00
bool SetSForceArray(const std::vector<TCombSectForceData>& vecData);
bool GetSForceArray(std::vector<TCombSectForceData>& vecData)const;
void ClearSForceArray();
2026-10-04 00:04:20 +08:00
//柱正截面配筋面积数据
2026-09-28 15:28:50 +08:00
bool SetRSArray(const std::vector<TReinSectData>& vecRSData);
bool GetRSArray(std::vector<TReinSectData>& vecRSData)const;
void ClearRSArray();
2026-10-04 00:04:20 +08:00
//柱斜截面配筋面积数据
2026-09-28 15:28:50 +08:00
bool SetRSSArray(const std::vector<TReinSectData>& vecRSData);
bool GetRSSArray(std::vector<TReinSectData>& vecRSData)const;
void ClearRSSArray();
2026-10-04 00:04:20 +08:00
//柱实际配筋面积数据
2026-09-28 15:28:50 +08:00
bool SetRAreaArray(const TReinData& raData);
bool GetRAreaArray(TReinData& raData)const;
void ClearRAreaArray();
enum ColuKind
{
2026-10-04 00:04:20 +08:00
kColu = 1, //普通柱
kFrameColu, //框架柱
kEmbColu, //暗柱
kTieColu, //构造柱
kConerColu, //角柱
kTransColu, //转换柱
kTransConColu //转换角柱
2026-09-28 15:28:50 +08:00
};
2026-10-04 00:04:20 +08:00
//底层墙柱内力显示工况
2026-09-28 15:28:50 +08:00
enum SColuForce
{
eNormal = 0,
eVXMax,
eVYMax,
eNMax,
eNMin,
eMXMax,
eMYMax
};
double GetBottomElev() const; //ok
void SetBottomElev(double dElev); //ok
double GetTopElev() const;
void SetTopEleve(double dElev);
2026-10-04 00:04:20 +08:00
//铰接属性
int GetHinge()const; //返回值 0:普通柱,1:上端铰柱,2:下端铰柱,3:两端铰柱
2026-09-28 15:28:50 +08:00
void SetHinge(BOOL bTop, BOOL bTrue);
2026-10-04 00:04:20 +08:00
//柱填充图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerHatch() const;
void SetLayerHatch(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱尺寸图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerDim() const;
void SetLayerDim(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱编号图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerNum() const;
void SetLayerNum(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱标注图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerMark() const;
void SetLayerMark(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱截面注写图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerSect() const;
void SetLayerSect(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱表注写图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerTbl() const;
void SetLayerTbl(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱平法纵筋图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerRBarV() const;
void SetLayerRBarV(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱平法箍筋图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerRBarR() const;
void SetLayerRBarR(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱实配面积图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerRealArea() const;
void SetLayerRealArea(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱双偏压图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerChkBias() const;
void SetLayerChkBias(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱轴压比图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerChkRati() const;
void SetLayerChkRati(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱内力结果图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerForce() const;
void SetLayerForce(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱计算配筋图层
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerCalcArea() const;
void SetLayerCalcArea(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱荷载
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerLoad() const;
void SetLayerLoad(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱活荷值
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerLoadL() const;
void SetLayerLoadL(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//柱恒荷值
2026-09-28 15:28:50 +08:00
AcDbObjectId GetLayerLoadC() const;
void SetLayerLoadC(AcDbObjectId idLayer);
2026-10-04 00:04:20 +08:00
//文字样式
2026-09-28 15:28:50 +08:00
AcDbObjectId GetTextStyleRB() const;
void SetTextStyleRB(AcDbObjectId idLayer);
bool SetAt(LPCTSTR pszKey,const std::vector<TCombForceData>& vecData);
bool GetAt(LPCTSTR pszKey,std::vector<TCombForceData>& vecData)const;
void RemoveNGraKey(LPCTSTR pszKey);
bool SetAt(LPCTSTR pszKey,const std::vector<TStruLoad>& vectLoads);
bool GetAt(LPCTSTR pszKey,std::vector<TStruLoad>& vectLoads)const;
void RemoveLoadsKey(LPCTSTR pszKey);
2026-10-04 00:04:20 +08:00
// 截面配筋面积数据
2026-09-28 15:28:50 +08:00
bool SetAt(LPCTSTR pszKey,const std::vector<TReinSectData>& vecData);
bool GetAt(LPCTSTR pszKey,std::vector<TReinSectData>& vecData)const;
void RemoveRSDataKey(LPCTSTR pszKey);
2026-10-04 00:04:20 +08:00
// 构造截面
2026-09-28 15:28:50 +08:00
bool ConstructShape(const TADSGePoint3d &pt, TGGePoly2D &poly) const;
#endif
public:
TDPtrList<AcDbSoftPointerId> m_lstWallIds;
//TArch8
2026-10-04 00:04:20 +08:00
double m_nInsulateThick; //保温层厚
AcDbHardPointerId m_idLayerInsulate; //保温图层
2026-09-28 15:28:50 +08:00
protected:
Adesk::UInt16 _GetColumnFlag() const;
void _SetColumnFlag(Adesk::UInt16 val);
protected:
//TArch6 data
2026-10-04 00:04:20 +08:00
Adesk::UInt16 m_nColuFlag; //柱子控制标记
2026-09-28 15:28:50 +08:00
AcDbHardPointerId m_idLayerHatch2d;
2026-10-04 00:04:20 +08:00
TCString m_sLabel; //柱子编号,为结构做准备
TADSGePoint3d m_ptLabel; //标注点
AcDbHardPointerId m_idTextStyle, m_idLayerText; //文字样式
double m_nTextHeight; //文字高度(图纸尺寸)
2026-09-28 15:28:50 +08:00
#ifdef TASD
2026-10-04 00:04:20 +08:00
//结构数据
AcDbHardPointerId m_idLayerHatch; //柱填充图层
AcDbHardPointerId m_idLayerDim; //柱尺寸图层
AcDbHardPointerId m_idLayerNum; //柱编号图层
AcDbHardPointerId m_idLayerMark; //柱标注图层
AcDbHardPointerId m_idLayerSect; //柱截面注写图层
AcDbHardPointerId m_idLayerTbl; //柱表注写图层
AcDbHardPointerId m_idLayerRBarV; //柱平法纵筋图层
AcDbHardPointerId m_idLayerRBarR; //柱平法箍筋图层
AcDbHardPointerId m_idLayerRealArea; //柱实配面积图层
AcDbHardPointerId m_idLayerChkBias; //柱双偏压图层
AcDbHardPointerId m_idLayerChkRati; //柱轴压比图层
AcDbHardPointerId m_idLayerForce; //柱内力结果图层
AcDbHardPointerId m_idLayerCalcArea; //柱计算配筋图层
AcDbHardPointerId m_idLayerLoad; //柱荷载
AcDbHardPointerId m_idLayerLoadL; //活荷值
AcDbHardPointerId m_idLayerLoadC; //恒荷值
AcDbHardPointerId m_idTextStyleRB; //文字样式
2026-09-28 15:28:50 +08:00
private:
2026-10-04 00:04:20 +08:00
// 构造矩形
2026-09-28 15:28:50 +08:00
bool ConstructRectShape(const TADSGePoint3d &pt, TGGePoly2D &poly) const;
2026-10-04 00:04:20 +08:00
// 构造工字形
2026-09-28 15:28:50 +08:00
bool ConstructIShape(const TADSGePoint3d &pt, TGGePoly2D &poly) const;
2026-10-04 00:04:20 +08:00
// 构造圆形
2026-09-28 15:28:50 +08:00
bool ConstructCircleShape(const TADSGePoint3d &pt, TGGePoly2D &poly) const;
2026-10-04 00:04:20 +08:00
// 通过m_polyOutline计算轴转角
2026-09-28 15:28:50 +08:00
double GetCalcAngle() const;
Acad::ErrorStatus StruExplodeOrDraw3d(TGGiExplodeDrawBase &dc) const;
Acad::ErrorStatus StruExplodeOrDraw2d(TGGiExplodeDrawBase &dc) const;
2026-10-04 00:04:20 +08:00
// 柱子标注
2026-09-28 15:28:50 +08:00
void DrawBH(TGGiExplodeDrawBase &dc) const;
2026-10-04 00:04:20 +08:00
// 构件编号
2026-09-28 15:28:50 +08:00
void DrawClab(TGGiExplodeDrawBase &dc) const;
2026-10-04 00:04:20 +08:00
// 单元编号
2026-09-28 15:28:50 +08:00
void DrawCellNo(TGGiExplodeDrawBase &dc) const;
2026-10-04 00:04:20 +08:00
// 刚域
2026-09-28 15:28:50 +08:00
void DrawRG(TGGiExplodeDrawBase &dc) const;
2026-10-04 00:04:20 +08:00
// 坐标
2026-09-28 15:28:50 +08:00
void DrawCoordinate(TGGiExplodeDrawBase &dc)const;
2026-10-04 00:04:20 +08:00
// 荷载
2026-09-28 15:28:50 +08:00
void DrawColuLoad(TGGiExplodeDrawBase &dc, int nFlag2d3d)const;
2026-10-04 00:04:20 +08:00
// 2d荷载
2026-09-28 15:28:50 +08:00
void DrawColuLoad2d(TGGiExplodeDrawBase &dc, TStruLoad loadData,
XPoint ptLoadS, XPoint ptLoadE, double dArrow)const;
2026-10-04 00:04:20 +08:00
// 3d荷载
2026-09-28 15:28:50 +08:00
void DrawColuLoad3d(TGGiExplodeDrawBase &dc, TStruLoad loadData)const;
2026-10-04 00:04:20 +08:00
// 2d荷载文字
2026-09-28 15:28:50 +08:00
void DrawLoadText2d(TGGiExplodeDrawBase &dc, TStruLoad loadData,
XPoint ptInsert, double dTextDis)const;
2026-10-04 00:04:20 +08:00
// 3d荷载文字
2026-09-28 15:28:50 +08:00
void DrawLoadText3d(TGGiExplodeDrawBase &dc, TStruLoad loadData, double &dDis)const;
2026-10-04 00:04:20 +08:00
// 特殊柱填充
2026-09-28 15:28:50 +08:00
void SepColuHach(TGGiExplodeDrawBase &dc)const;
2026-10-04 00:04:20 +08:00
// add by wjx on 120329绘制轴力图
2026-09-28 15:28:50 +08:00
void DrawNGraph(TGGiExplodeDrawBase &dc)const;
2026-10-04 00:04:20 +08:00
//底层墙柱内力图
2026-09-28 15:28:50 +08:00
void DrawWallColu(TGGiExplodeDrawBase &dc)const;
2026-10-04 00:04:20 +08:00
//配筋面积图
2026-09-28 15:28:50 +08:00
void DrawColuRein(TGGiExplodeDrawBase &dc)const;
bool SetForceArray(LPCTSTR pszKey, const std::vector<TCombSectForceData>& vecData);
bool GetForceArray(LPCTSTR pszKey, std::vector<TCombSectForceData>& vecData)const;
void ClearForceArray(LPCTSTR pszKey);
#endif
private:
const static Adesk::UInt8 g_nVersion;
};
#endif