450 lines
14 KiB
C++
450 lines
14 KiB
C++
#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
|