#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 &lstColu,TDPtrList &res); TARCH_EXP TDPtrList& 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 &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 &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 &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 &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