Files
envi-code/SourceCode/Code2026/tg_shs/inc/TArch/TchKernalGlobalFunc.h
T
2026-09-28 15:28:50 +08:00

450 lines
14 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef _TCHKERNALGLOBALFUNC_H_
#define _TCHKERNALGLOBALFUNC_H_
#ifndef _TCOLUMNDATA_H_
#include "TColumnData.h"
#endif
#ifndef _TARCHPERDOCDATA_H_
#include "TArchPerDocData.h"
#endif
#ifndef __DBSPACE_H
#include "DbSpace.h"
#endif
class TDbProtectEntity;
TARCH_EXP TArchPerDocData* GetCurDocData();
TARCH_EXP void SearchSpace(TPickEntSet &ssWalls,const TDPtrList<AcDbObjectId> &lstColu,TDPtrList<TDbSpace> &res);
TARCH_EXP TDPtrList<TSortWallOnPt>& GetAllSortWalls();
TARCH_EXP int SelectWallSide(TEntitySet &entWall, TADSGePoint3d & loc, double *drt);
TARCH_EXP BOOL GetAxisInter(const TADSGePoint3d& ptLow, const TADSGePoint3d& ptUp, TADSGePointDir2d& ptRes);
TARCH_IMPEXP int GetBlockBoundary(AcDbObjectId idBlock, TGGePoly2D &poly, BOOL bAddIfNone = FALSE);
// 根据一指定的点, 搜索一房间的内壁轮廓线
TARCH_EXP int GenSpacePoly(const TADSGePoint3d &ptPick, TGGePoly2D &poly);
TARCH_EXP int EditWallPathc0(AcDbObjectId id);
TARCH_EXP int GetExistOutlineFromInsert(const TEntitySet &e, TGGePoly2D &polyOutline);
// 根据当前视图方向和系统的设定, 确定显示方式
// 返回: DRAW_2D和DRAW_3D的按位组合: DRAW_2D, DRAW_3D, DRAW_2D+DRAw_3D
TARCH_EXP int GetViewDrawMode();
TARCH_IMPEXP AcDbObjectId MakeTBlockInsert(const TCHAR *pszBlock, TADSGePoint3d ptInsert,double sx, double sy, double sz, double rot, int nMask);
// 更新指定实体的显示
TARCH_EXP void UpdateGraphic(TPickEntSet &ss);
TARCH_EXP void UpdateGraphic(const TDPtrList<AcDbObjectId> &ss);
// 取柱子的轮廓线, 确定id必须有效的代表可以读取的柱子id
TARCH_EXP int GetColumnOutline(const AcDbObjectId &idColu, TGGePoly2D &poly);
// 从二维图块中提取外轮廓线
TARCH_EXP int GetBoundaryFromInsert2D(TEntitySet &ent, TGGePoly2D &polyOutline);
// 取当前图中的所有柱子的边界
TARCH_EXP void GetAllColumnBoundry(TDPtrList<TGGePoly2D> &lstClipBoundry);
TARCH_EXP int GetClipBoundary1(TGGePoly2D &poly2d);
TARCH_EXP void UpdateTDbEntity();
// 拖动实体,block
TARCH_EXP int DragInsertBlock1(const TCHAR *szBlock, int nFlag, const AcGeScale3d &scales);
TARCH_EXP int IDragInsertBlock(TADSGePoint3d &ptBase, TEntitySet &ent, int nFlag);
TARCH_EXP AcDbObjectId MakeBlockInsert(const TCHAR *pszBlock, TADSGePoint3d ptInsert,double sx, double sy, double sz, double rot);
TARCH_EXP TCString GetCurCommand();
// 打开文件,并在这个文档内自动执行命令
TARCH_EXP void MdiOpenDwgFile(const TCHAR *pszFile, const TCHAR *pszCmdStr);
TARCH_EXP void OpenDwgWithCurNls(CString &csFileName);
//由命令简称得到命令全称(加前缀)
TARCH_EXP TCString GetFullCmdName(const TCHAR *szName);
//定义命令,自动加前缀
TARCH_EXP void TchAddCommand(const TCHAR *szAppName0,const STArxCommandTable cmdTable[],const UINT eleNum, BOOL bLispCmd=FALSE);
// 初始化Aol库的连接
TARCH_EXP void InitAol(const TCHAR *szAppName);
TARCH_EXP void DocStatus();
TARCH_EXP void InitDLRegistry(HMODULE modHandle, const TCHAR *szAppName);
// 按需加载的控制
TARCH_EXP void UpdateDLRegistry(const TCHAR *szAppName, const STArxCommandTable cmdTable[],const UINT eleNum);
TARCH_EXP void UpdateDLRegistry(const TCHAR *szAppName, const STExtern_fun cmdTable[],const UINT eleNum);
TARCH_EXP int SelectUpFace(AcGePlane &plane);
TARCH_EXP void ClearKeyboardBuffer();
TARCH_EXP bool IsLispExpress();
TARCH_EXP TPickEntSet& DocGetPickFirst();
TARCH_EXP TEntitySet& DocGetEntMouseOn();
TARCH_EXP bool _docGetPScale(double &dRet);
TARCH_EXP bool _docSetPScale(const double &d);
TARCH_EXP bool _docGetMeterUnitDraw(BOOL &bMeter);
TARCH_EXP bool _docSetMeterUnitDraw(const BOOL &bMeter);
TARCH_EXP double DocGetPScale();
TARCH_EXP TPickEntSet& DocGetPickGrip();
//提示用户选择一个实体, 或者从PickFirst中选取(如果存在), 排除重合实体
//szPrompt--提示; entResult--结果; ptPick--点取位置; rbBaseMask--DXF过滤表
TARCH_EXP int SelectEntity1(const TCHAR *szPrompt, TEntitySet &entResult, TADSGePoint3d &ptPick, const TRBList &rbBaseMask);
TARCH_EXP int SelectEntity1(double nPrec, const TCHAR *szPrompt, TEntitySet &entResult, TADSGePoint3d &ptPick, const TRBList &rbBaseMask);
//提示用户选择一个实体, 或者从PickFirst中选取(如果存在)
//szPrompt--提示; entResult--结果; ptPick--点取位置; rbBaseMask--DXF过滤表
TARCH_EXP int SelectEntity(const TCHAR *szPrompt, TEntitySet &entResult, TADSGePoint3d &ptPick, const TRBList &rbBaseMask);
//支持关键字,其它同上
TARCH_EXP int SelectEntity(const TCHAR *szPrompt, TEntitySet &entResult, TADSGePoint3d &ptPick, const TRBList &rbBaseMask,const TCHAR* szKeyword,TCHAR& cRet);
//提示用户选择一个实体, 或者从PickFirst中选取(如果存在)
//szPrompt--提示; entResult--结果; rbBaseMask--DXF过滤表
TARCH_EXP int SelectEntity(const TCHAR *szPrompt, TEntitySet &entResult, const TRBList &rbBaseMask);
//支持关键字,其它同上
TARCH_EXP int SelectEntity(const TCHAR *szPrompt, TEntitySet &entResult, const TRBList &rbBaseMask,const TCHAR* szKeyword,TCHAR& cRet);
//提示用户选择多个实体, 或者从PickFirst中选取(如果存在)
//szPrompt--提示; ssResult--结果; rbBaseMask--DXF过滤表
TARCH_EXP int SelectEntities(const TCHAR *szPrompt, TPickEntSet &ssResult, const TRBList &rbBaseMask);
//支持关键字,其它同上
TARCH_EXP int SelectEntities(const TCHAR *szPrompt, TPickEntSet &ssResult, const TRBList &rbBaseMask,const TCHAR* szKeyword,TCHAR& cRet);
TARCH_EXP int GetPrepickEntity(TEntitySet &entResult, const TRBList &rbBaseMask);
TARCH_EXP AcDbObjectId GetPrepickEntity(const TRBList &rbBaseMask);
TARCH_EXP AcDbObjectId GetBlock2dFromBlock3d(AcDbObjectId idBlock);
//---结构数据---
#define GRAPHIC 0x01 //图形
#define UNVARYINGLOAD 0x02 //恒荷
#define VARYINGLOAD 0x04 //活荷
//荷载所属对象
#define BYOBJLOAD 0 //随荷载显示开关
#define SURFACELOAD 1 //面荷
#define BEAMLOAD 2 //梁荷
#define WALLLOAD 3 //墙荷
#define COLULOAD 4 //柱荷
#define NODELOAD 5 //节点荷载
// 截面形状
#define ST_RECT 1 //矩形
#define ST_IBEAM 2 //工字形
#define ST_CIRCLE 3 //圆形
#define ST_POLY 4 //任意形状
//铰接方式
#define HINGE_START 0x01 //起始端或下端
#define HINGE_END 0x02 //终止端或上端
// 内力显示
#define FORCE_NORMAL 0 //正常
#define FORCE_N 1 //轴力
#define FORCE_M 2 //弯矩
#define FORCE_S 3 //剪力
//荷载查看方式
#define BYGRAPHIC 1 //图形
#define BYUNVARYING 2 //恒荷
#define BYVARYING 3 //活荷
extern TARCH_IMPEXP int g_nLoadDrawMode; //BYOBJLOAD:随荷载显示开关控制;
extern TARCH_IMPEXP int g_nLoadViewMode;
//SURFACELOAD:仅显示面荷;
//BEAMLOAD:仅显示梁荷
//WALLLOAD:仅显示墙荷
//COLULOAD: 仅显示柱荷
//NODELOAD: 仅显示节点荷载
extern TARCH_IMPEXP int g_nColuForce; //底层墙柱显示工况
// eNormal,
// eVXMax,
// eVYMax,
// eNMax,
// eNMin,
// eMXMax,
// eMYMax
extern TARCH_IMPEXP int g_nReinAreaMode; //配筋面积显示方式
extern TARCH_IMPEXP int g_nReinAreaModeColu;//柱配筋面积显示方式
extern TARCH_IMPEXP BOOL g_bDetailMode; //特殊梁柱是否简图模式
extern TARCH_IMPEXP double g_dCLTextHeight; //单元编号文字字高
extern TARCH_IMPEXP int g_nCLTextColorBeam; //梁单元编号文字颜色
extern TARCH_IMPEXP int g_nCLTextColorColu; //柱单元编号文字颜色
extern TARCH_IMPEXP int g_nCLTextColorWall; //剪力墙单元编号文字颜色
extern TARCH_IMPEXP int g_nCLTextColorSlab; //板单元编号文字颜色
extern TARCH_IMPEXP int g_nCLTextColorNode; //节点编号文字颜色
extern TARCH_IMPEXP double g_dBHTextHeight; //截面尺寸文字字高
extern TARCH_IMPEXP int g_nBHTextColorBeam; //梁截面尺寸文字颜色
extern TARCH_IMPEXP int g_nBHTextColorColu; //柱截面尺寸文字颜色
extern TARCH_IMPEXP int g_nBHTextColorWall; //剪力墙截面尺寸文字颜色
extern TARCH_IMPEXP int g_nBHTextColorSlab; //板截面尺寸文字颜色
extern TARCH_IMPEXP int g_nBHTextColorSlabHole; //板洞截面尺寸文字颜色
extern TARCH_IMPEXP double g_dRGTextHeight; //刚域文字字高
extern TARCH_IMPEXP int g_nRGTextColorBeam; //梁刚域文字颜色
extern TARCH_IMPEXP int g_nRGTextColorColu; //柱刚域文字颜色
extern TARCH_IMPEXP int g_nGraph; // 0:正常显示 1:轴力 2: 弯矩 3:剪力;
extern TARCH_IMPEXP double g_dMGrapTextH; // 弯矩包络图文字高
extern TARCH_IMPEXP double g_dMGrapScal; // 弯矩包络图比例
extern TARCH_IMPEXP double g_dNGrapTextH; // 轴力文字高度
extern TARCH_IMPEXP double g_dReinbarWidth; //钢筋线宽
extern TARCH_IMPEXP double g_dReinbarLenS; //钢筋直钩平直长度
extern TARCH_IMPEXP double g_dReinbarLenO; //钢筋斜钩平直长度
extern TARCH_IMPEXP double g_dReinbarLenB; //钢筋弯钩平直长度
extern TARCH_IMPEXP double g_dReinbarDiaB; //钢筋弯钩直径
extern TARCH_IMPEXP double g_dReinbarDotWidth; //点钢筋直径
extern TARCH_IMPEXP double g_dStirrupsLen; //箍筋平直长度
extern TARCH_IMPEXP int g_nDrawModeSlab; //楼板显示控制
extern TARCH_IMPEXP int g_nDrawModeSlabBorder; //楼板边界显示控制
extern TARCH_IMPEXP BOOL g_bShowCrack; // 显示裂缝图
extern TARCH_IMPEXP BOOL g_bShowDef; // 显示挠度图
extern TARCH_IMPEXP double g_dSGrapTextH; // 剪力包络图文字高
extern TARCH_IMPEXP double g_dSGrapScal; // 剪力包络图幅值;
extern TARCH_IMPEXP double g_dCrackGraphTextH; // 字高
extern TARCH_IMPEXP double g_dCrackLimit; // 裂缝限制值
extern TARCH_IMPEXP double g_dDeflectGraphTextH; // 字高
extern TARCH_IMPEXP double g_dDeflectGraphScale; // 幅度
extern TARCH_IMPEXP BOOL g_bAutoBreak; // 梁柱自动打断控制参数
extern TARCH_IMPEXP BOOL g_bAutoUpdate; // 自动更新图形控制参数
extern TARCH_IMPEXP Adesk::UInt16 g_iSolidNodeColor; // 实节点颜色
extern TARCH_IMPEXP Adesk::UInt16 g_iVirtualNodeColor; // 虚节点颜色
extern TARCH_IMPEXP BOOL g_bSplitFloor;
//设置查看方式nStyle:BYGRAPHIC:图形;BYUNVARYING:恒荷;BYVARYING:活荷
TARCH_EXP BOOL GetViewStyle(int nStyle);
TARCH_EXP void SetViewStyle(int nStyle, BOOL bTrue);
// 去除小数末尾的0
TARCH_EXP CString TrimDoubleZero(double dData, int nNum = -1);
//墙身计算配筋
TARCH_IMPEXP void SetWallBodyCal(BOOL bTrue) ;
TARCH_IMPEXP BOOL IsWallBodyCal();
//墙梁计算配筋
TARCH_IMPEXP void SetWallBeamCal(BOOL bTrue);
TARCH_IMPEXP BOOL IsWallBeamCal();
//墙柱计算配筋
TARCH_IMPEXP void SetWallColuCal(BOOL bTrue);
TARCH_IMPEXP BOOL IsWallColuCal();
//墙身实际配筋
TARCH_IMPEXP void SetWallBodyReal(BOOL bTrue);
TARCH_IMPEXP BOOL IsWallBodyReal();
//墙梁实际配筋
TARCH_IMPEXP void SetWallBeamReal(BOOL bTrue);
TARCH_IMPEXP BOOL IsWallBeamReal();
//墙柱实际配筋
TARCH_IMPEXP void SetWallColuReal(BOOL bTrue);
TARCH_IMPEXP BOOL IsWallColuReal();
//+++结构数据+++
// 判断点是否在柱子内部, 忽略Z坐标
BOOL IsInsideColumn(const TADSGePoint3d &pt);
void ModifyWallAtCorner(TADSGePointList &lstCorners0, TDPtrList<TColumnData> &lstColumns,AcDbObjectId idBlock,LPVOID pReserve = NULL);
BOOL InitBlockWipeout(AcDbObjectId idBlock, int nMaskFlag) ;
int EditProtectEntity(AcDbObjectId id);
bool UnProtect(TDbProtectEntity* pEnt);
void InitDbWall(BOOL bTrue);
void InitDbColumn(BOOL bTrue);
void InitDbBlockInsert(BOOL bTrue);
void InitDbWallPatch(BOOL bTrue);
void InitDbPolyCurveEnt(BOOL bTrue);
void InitDbProtectEntity(BOOL bTrue);
void InitAppDocGlobals(BOOL bTrue);
void GetDwgStamp();
//TARCH_IMPEXP BOOL IsCommandLineEmpty();
//TARCH_IMPEXP BOOL IsAcadIdle();
int InsertBlock();
//只有GlobalFun在用
// 通过一点确定一房间的轮廓
int GenSpaceOutline(const TADSGePoint3d &ptPick, TGGePoly2D &poly, int bCenter);
int ModifyInsert(TEntitySet ent, int nMaskFlag);
//wlw 10.06.21
//使用xData时,注册App名称
int TGRegApp(LPCTSTR pszAppName, AcDbDatabase* pDb = NULL);
//单独绘制保温层标识 wlw 11.03.17
void DrawEntInsulate(const TDPtrList<TGGeCurveSegment> &lstInsulateCurves);
//将poly2d放大缩小,求保温线poly2d时用
void GetOffsetPoly2D(const TGGePoly2D& polySrc, TGGePoly2D& polyOut, double dOffset, bool bZoomOut = true);
//一根线 + 高度 返回一个面
AcDbFace* GetFaceFromSegment(const TGGeCurveSegment& segment, double dHeight);
//command
void ProtectEntity();
void PrePlot();
void PostPlot();
void UnProtect();
void BlockUnMask();
void BringFront1();
void BringFront2();
void ConvertInsert();
int SetWallWidth();
void PolyCurveEnt();
inline double DocGetLWallWidth()
{
TArchPerDocData *p = GetCurDocData();
return p ? p->m_lWallWidth : 120 * _UNIT_SCALE;
}
inline void DocSetLWallWidth(double val)
{
TArchPerDocData *p = GetCurDocData();
if (p)
{
p->m_lWallWidth = val;
}
}
inline double DocGetRWallWidth()
{
TArchPerDocData *p = GetCurDocData();
return p ? p->m_rWallWidth : 120 * _UNIT_SCALE;
}
inline BOOL DocGetIsAcadIdle()
{
TArchPerDocData *p = GetCurDocData();
return p ? p->m_bAcadIdle : FALSE;
}
inline void DocSetDrawWall(int nMode)
{
TArchPerDocData *p = GetCurDocData();
if (p)
{
p->m_nDrawWall = nMode;
}
}
inline TCHAR * DocGetLastCommand()
{
TArchPerDocData *p = GetCurDocData();
if (p == NULL)
{
return NULL;
}
return p->m_szLastCommand;
}
inline BOOL DocGetIsUpdateDisp()
{
TArchPerDocData *p = GetCurDocData();
return p ? p->m_bUpdateDisp : FALSE;
}
inline void DocSetIsUpdateDisp(BOOL bTrue)
{
TArchPerDocData *p = GetCurDocData();
if (p)
{
p->m_bUpdateDisp = bTrue;
}
}
inline int DocGetWallOsnapType()
{
TArchPerDocData *p = GetCurDocData();
return p ? p->m_nOsnapType : FALSE;
}
inline void DocSetRWallWidth(double val)
{
TArchPerDocData *p = GetCurDocData();
if (p)
{
p->m_rWallWidth = val;
}
}
inline BOOL DocGetIsDwgBegin()
{
TArchPerDocData *p = GetCurDocData();
return p ? p->m_bDwgBegin : FALSE;
}
inline void DocSetIsDwgBegin(BOOL bTrue)
{
TArchPerDocData *p = GetCurDocData();
if (p)
{
p->m_bDwgBegin = bTrue;
}
}
inline void DocSetIsAcadIdle(BOOL bTrue)
{
TArchPerDocData *p = GetCurDocData();
if (p)
{
p->m_bAcadIdle = bTrue;
}
}
inline double DocGetMinLenWall()
{
TArchPerDocData *p = GetCurDocData();
return p ? p->m_nMinLenWall : 20.0 * _UNIT_SCALE;
}
inline void DocSetWallOsnapType(int bTrue)
{
TArchPerDocData *p = GetCurDocData();
if (p)
{
p->m_nOsnapType = bTrue;
}
}
inline BOOL DocGetModelNumber()
{
TArchPerDocData *p = GetCurDocData();
return p ? p->m_bModelNumber : FALSE;
}
inline void DocSetModelNumber(BOOL bTrue)
{
TArchPerDocData *p = GetCurDocData();
if (p)
{
p->m_bModelNumber = bTrue;
}
}
inline BOOL DocGetIsLispCommand()
{
TArchPerDocData *p = GetCurDocData();
return p ? p->m_bLispCommand : FALSE;
}
inline const TCHAR * DocGetCurCommand()
{
TArchPerDocData *p = GetCurDocData();
return p ? (const TCHAR *)p->m_sCurCommand : NULL;
}
inline resbuf *AxisMask()
{
return ads_buildlist(RTDXF0, _T("LINE,ARC,CIRCLE"), 8, LAY_AXIS, NULL);
}
#endif