Files
envi-code/SourceCode/Code2026/tg_shs/shs_kernal/Onload.cpp
T
2026-09-28 15:28:50 +08:00

921 lines
24 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.
#include "stdafx.h"
#include "rxregsvc.h"
#include "actrans.h"
#include "TArchDbReactor.h"
#include "TArchCmdReactor.h"
#include "TchSubPrivateGlobalFunc.h"
#include "TSearchSpaceFromWall.h"
// 统计和楼层组合
void RestoreLayer();
int LevelLine();
/*************** CadUtil *******************/
int ChgElevation();
int ClipDetail();
// Display
int Show2D();
int Show3D();
int ShowStd();
int ShowQ();
// astool.cpp
int PolyClip();
/***************** End CadUtil ****************/
int RemoveInitSetDict();
int Lay();
int GridFrame();
int TestOffset();
// 状态开关
int GetSolidFillState();
int SetSolidFillState();
int GetBoldLineState();
int SetBoldLineState();
int GetDimChkState();
int SetDimChkState();
int GetDimAdjState();
int SetDimAdjState();
int GetBaselineState();
int SetBaselineState();
int SetSpaceUnitState();
int SetSpaceAreaState();
int GetSpaceUnitState();
int GetSpaceAreaState();
// 标签
int Is2Dand3D();
int Is2DOnly();
int Is3DOnly();
int GetPScale();
int SetPScale();
int TMakeBlock();
int TDocStatus();
int GetPfx();
int GetLispPath();
int ApplyLayerChange();
int GetFace();
////////////////////////
// 对工具集绘图方式对功能
// 自调开关
int GetDamnu1();
int SetDamnu1();
// 窗-门-高窗循环切换
int GetWDState();
int SetWDState();
//////////////////////
// 坐标标注开关
int GetABCoord();
int SetABCoord();
int GetDynamicCoord();
int SetDynamicCoord();
int GetCoordPrec2();
int SetCoordPrec2();
// sg add 100824,增加编组开关
int GetMakeGroupState();
int SetMakeGroupState();
// sg add 100915,增加图层切换按钮
int GetTextLayerChange();
int SetTextLayerChange();
///////////////////////
// From TCH 3.5
int InsertBlock();
int SpaceSwitch();
int UpdCamera();
int DragTitle();
int Circle2Polyline();
int IsAcad2002sc();
int GetLineThick();
int RevAxisLabel();
static int RepStatus();
extern void UpdateMViewBlock();
// 由LISP调用的初始化
//modify by xlc on 100420 变量g_bUpdateMViewBlock移到geo,
//通过函数IsUpdateMVBlock() 和UpdateMVBlockVal() 使用
/*int InitKernal()
{
extern BOOL g_bUpdateMViewBlock;
if(g_bUpdateMViewBlock)
{
#if ADS<17
UpdateMViewBlock();
#endif
g_bUpdateMViewBlock=FALSE;
}
return RTNORM;
}*/
// add by gjm 2014/08/15
void GetElevSymbolInfomation();
int InitKernal()
{
if (IsUpdateMVBlock())
{
#if ADS<17
UpdateMViewBlock();
#endif
UpdateMVBlockVal(FALSE);
}
return RTNORM;
}
void Option();
//extern_fun cmdtab[] = {
// {_T("GetWDState"), GetWDState},
// {_T("SetWDState"), SetWDState},
// {_T("GetDamnu1"), GetDamnu1},
// {_T("SetDamnu1"), SetDamnu1},
// {_T("TApplyLayerChange"), ApplyLayerChange}, //给上华建筑二维绘图用
// {_T("TGetLispPath"), GetLispPath},
// {_T("TGetFace"), GetFace},
// {_T("TCircle2Polyline"), Circle2Polyline},
// {_T("TGetThick"), GetLineThick},
// {_T("GetBoldLineState"), GetBoldLineState},
// {_T("SetBoldLineState"), SetBoldLineState},
// {_T("GetSolidFillState"), GetSolidFillState},
// {_T("SetSolidFillState"), SetSolidFillState},
// {_T("GetDimChkState"), GetDimChkState},
// {_T("SetDimChkState"), SetDimChkState},
// {_T("GetDimAdjState"), GetDimAdjState},
// {_T("SetDimAdjState"), SetDimAdjState},
// {_T("GetBaselineState"), GetBaselineState},
// {_T("SetBaselineState"), SetBaselineState},
// {_T("SetSpaceUnitState"), SetSpaceUnitState},
// {_T("SetSpaceAreaState"),SetSpaceAreaState},
// {_T("GetSpaceUnitState"),GetSpaceUnitState},
// {_T("GetSpaceAreaState"),GetSpaceAreaState},
// {_T("GetABCoord"), GetABCoord},
// {_T("SetABCoord"), SetABCoord},
// {_T("GetDynamicCoord"), GetDynamicCoord},
// {_T("SetDynamicCoord"), SetDynamicCoord},
// {_T("GetCoordPrec2"), GetCoordPrec2},
// {_T("SetCoordPrec2"), SetCoordPrec2},
// {_T("GetMakeGroup"), GetMakeGroupState},
// {_T("SetMakeGroup"), SetMakeGroupState},
// {_T("GetTextLayerChange"), GetTextLayerChange},
// {_T("SetTextLayerChange"), SetTextLayerChange},
// {_T("Is2Dand3D"), Is2Dand3D},
// {_T("Is2DOnly"), Is2DOnly},
// {_T("Is3DOnly"), Is3DOnly},
// {_T("TGetPScale"), GetPScale},
// {_T("TSetPScale"), SetPScale},
// {_T("TMakeBlock"), TMakeBlock},
// {_T("TDocStatus"), TDocStatus},
// {_T("GetPfx"), GetPfx},
// {_T("TDragTitle"), DragTitle},
// {_T("TUpdCamera"), UpdCamera},
// { _T("TInsBlk"), InsertBlock},
// {_T("TIsAcad2002Sc"), IsAcad2002sc},
// {_T("TInitKernal"), InitKernal},
// {_T("TRepStat"), RepStatus},
// {_T("C:TShowAuto"), ShowStd},
// {_T("C:TShow2D"), Show2D},
// {_T("C:TShow3D"), Show3D},
// {_T("C:TLevelLine"), LevelLine},
// {_T("C:TSpaceSwitch"), SpaceSwitch},
// {_T("C:TRevAxno"), RevAxisLabel},
//};
//TARCH_IMPEXP void UpdateTDbEntity();
//void UpdateFromBeta();
//void UpdateFrom6();
//void UpdateFrom8();
//////////////////////////////////////////////////
// Load the initial information when XLOAD/OPEN/NEW
// 不可以执行ads_command
int OnDwgLoaded()
{
acedVportTableRecords2Vports();
#if (ARCH!=3)
xg_setvar(_T("HPSCALE"), DocGetPScale());
//for(int i=0;i<ELEMENTS(cmdtab); i++)
// ads_defun(cmdtab[i].cmdname,i);
#endif //(ARCH!=3)
//UpdateFromBeta(); //对T5Beta版本进行升级
//UpdateFrom6();
DocSetIsDwgBegin(TRUE);
// sg add 120413,更新尺寸标注样式
int nDealOldDimArrowSize = DocGetDealOldDimArrowSize();
if (nDealOldDimArrowSize == 0)
{
//UpdateFrom8(); // 更新尺寸标注样式问题
DocSetDealOldDimArrowSize(1);
}
//TArchDbReactor::Attach();//启动数据库监视器
return RTNORM;
}
int OnDwgUnload()
{
//TArchDbReactor::Detach();//取消数据库监视器
DocSetIsDwgBegin(FALSE);
return RTNORM;
}
int OnDoFunc()
{
int nRet=RTNORM;
#if (ARCH!=3)
//int cindex;
//XPushVar<int> cmdecho(_T("CMDECHO"), 0);
//XPushVar<int> blipmode(_T("BLIPMODE"), 0);
//cindex = ads_getfuncode();
//if (cindex >= 0 && cindex < ELEMENTS(cmdtab))
//{
// if(cmdtab[cindex].cmdname[1]==_T(':'))
// {
// //XPushUndo vTemp;
// AcTransaction *pTrans = actrTransactionManager->startTransaction();
// try
// {
// (*cmdtab[cindex].cmdfunc)();
// }
// catch(...)
// {
// }
// ads_retvoid();
// actrTransactionManager->endTransaction();
// }
// else
// (*cmdtab[cindex].cmdfunc)();
// nRet = RTNORM;
//}
//else
// nRet=RTERROR;
#endif
return nRet;
}
//void RestoreInsert();
void BlockWrap();
void SelObject();
void HelpArch();
void AxisWall();
void TestQuan();
void CornerWin();
void SupCodePage();
void SolidFillOff();
void SolidFillOn();
void SearchRegion1();
void SearchRegion();
void TestBayWin();
//void RemoveDup();
void InterCurves();
//void RemoveDupNoXData();
void OutElev(); //室外标高
void TestWallDlg();
void TestVp();
void TogIntWall();
TARCH_IMPEXP void UpdateAllLinkage();
void CurrentTips();
void BringFront1();
void BringFront2();
void ConvertInsert();
void BlockUnMask();
void TogDrawWall();
void CurLayerHeight();
void CurPScale();
void WalkStep();
void PrePlot();
void PostPlot();
void Clip3D();
void AutoLTScale();
void Text2Base();
void GetDwgStamp();
//void FixGsView();
void CreateRectangle();
void CreateSlope();
void CreatePolyMesh();
void CreatePolyMesh2();
void DragRubber();
void DblClkEdit();
void InitWinTextHeight();
void ProtectEntity();
void SelectPreview();
void UnProtect();
void SaveAsOldVer();
void SaveAsTArch3();
void BatchSaveAsOldVer();
void BatchFolderSaveAsOldVer();
void ExplCustEnt();
// sg add 120307,增加一个局部导出的功能
void PartSaveAsOldVerCmd();
void GroupOpening();
void BanOpening();
void PolyCurveEnt();
void FanStair();
void Region();
void LoadConfig();
// sg add 091222,增加一个版本信息的命令,主要考虑知道插件的版本信息
void TPlugBbxx();
// sg add 100112,增加“图变单色”命令
void SingleColorLayer();
// add by gjm 2013/10/24
void SetMergeRule();
void GetElevSymbolTxtBaseLen();
#if (ARCH!=3)
// ARX命令表
static ArxCommandTable g_cmdTable[] = {
//{_T("TShowElevInfo"), GetElevSymbolInfomation, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TShowElevBaseLen"), GetElevSymbolTxtBaseLen, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TFixView"), FixGsView, ACRX_CMD_MODAL},
//{_T("TLHeight"), CurLayerHeight, ACRX_CMD_MODAL},
{_T("TPScale"), CurPScale, ACRX_CMD_MODAL},
//{_T("TWalkStep"), WalkStep, ACRX_CMD_TRANSPARENT},
//{_T("TText2Base"), Text2Base, ACRX_CMD_TRANSPARENT},
//{_T("TDblClkEdit"), DblClkEdit, ACRX_CMD_TRANSPARENT},
//{_T("TProtect"),ProtectEntity,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
{_T("SHSaveAs"), SaveAsOldVer, ACRX_CMD_MODAL},
//{_T("TBatSave"), BatchSaveAsOldVer, ACRX_CMD_MODAL},
//{_T("TBatSaveFolder"), BatchFolderSaveAsOldVer, ACRX_CMD_MODAL},
//{_T("TExplode"), ExplCustEnt, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TPartSaveAs"), PartSaveAsOldVerCmd, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TResColor"), RestoreLayer},
//{_T("TBlkMask1"), BringFront1, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TBlkMask2"), BringFront2, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TBlkUnMask"), BlockUnMask, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TBlkConv"), ConvertInsert, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TRemoveDup"), RemoveDup, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TRemoveDup1"), RemoveDupNoXData, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("PrePlot"), PrePlot, ACRX_CMD_MODAL},
//{_T("PostPlot"), PostPlot, ACRX_CMD_MODAL},
//{_T("TPolyMesh"), CreatePolyMesh, ACRX_CMD_MODAL},
//{_T("TPolyMesh2"), CreatePolyMesh2, ACRX_CMD_MODAL},
//{_T("TSlope"), CreateSlope, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TogDrawWall"), TogDrawWall, ACRX_CMD_TRANSPARENT},
//{_T("TGetDwgStamp"), GetDwgStamp,ACRX_CMD_TRANSPARENT},
//{_T("TDragRubber"), DragRubber, ACRX_CMD_TRANSPARENT},
//{_T("TGroupOpening"), GroupOpening, ACRX_CMD_MODAL},
//{_T("TFanStair"),FanStair,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TRegion"),Region,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TUnProtect"),UnProtect,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("_PolyCurveEnt"), PolyCurveEnt, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TBBXX"), TPlugBbxx, ACRX_CMD_MODAL},
//{_T("TMONO"), SingleColorLayer, ACRX_CMD_MODAL},
//{_T("TSETMERGERULE"), SetMergeRule, ACRX_CMD_MODAL},
{_T("shsopt"), Option, ACRX_CMD_MODAL},
};
#endif //(ARCH!=3)
extern int ConvertDwgCodePage(const TCHAR *tmpFile);
extern void LoadGlobalFromReg();
extern void InitLayers(BOOL bTrue);
extern void InitTextStyles(BOOL bTrue);// 初始化文字样式变量,sg add 101229
extern GEOAPI int (*g_ptrCodePageConvert)(const TCHAR *);
extern void InitDwgLicense(BOOL bTrue);
extern void InitDbBlockInsert(BOOL bTrue);
extern void InitDbRoof(BOOL bTrue);
extern void InitBlockPurgeProof(BOOL bTrue);
extern void InitDbBlockWrap(BOOL bTrue);
extern void InitDbColumn(BOOL bTrue);
extern void InitDbOpening(BOOL bTrue);
extern void InitDbGroupOpening(BOOL bTrue);
extern void InitDbWall(BOOL bTrue);
extern void InitDbSlab(BOOL bTrue);
extern void InitDbStep(BOOL bTrue);
extern void InitDbInitSet(BOOL bTrue);
extern void InitBlockExtension(BOOL bTrue);
extern void InitDbErrorMsg(BOOL bTrue);
extern void InitDbSpace(BOOL bTrue);
extern void InitDbMesh(BOOL bTrue);
extern void InitDbBalcony(BOOL bTrue);
extern void InitDbVertSlab(BOOL bTrue);
extern void InitDbWallPatch(BOOL bTrue);
extern void InitDbCornerWin(BOOL bTrue);
extern void InitDbBandWin(BOOL bTrue);
extern void InitDbCurveMesh(BOOL bTrue);
extern void InitDbCurveMesh2(BOOL bTrue);
extern void InitDbPolyMesh(BOOL bTrue);
extern void InitDbPolyMesh2(BOOL bTrue);
extern void InitDbPolyPathArray(BOOL bTrue);
extern void InitDbStair(BOOL bTrue);
extern void InitDbHandRail(BOOL bTrue);
extern void InitDbRail(BOOL bTrue);
extern void InitDbPolyPathEnt(BOOL bTrue);
extern void InitDbAscent(BOOL bTrue);
extern void InitDbCamera(BOOL bTrue);
extern void InitDbDimension(BOOL bTrue);
extern void InitDbText(BOOL bTrue);
extern void InitDbSheet(BOOL bTrue);
extern void InitDbSymbolAnnotate(BOOL bTrue);
extern void InitDbAxisLabelSet(BOOL bTrue);
extern void InitDbCurtainWall(BOOL bTrue);
extern void InitDbRect(BOOL bTrue);
extern void InitDbSlope(BOOL bTrue);
extern void InitAppDocGlobals(BOOL bTrue);
extern void InitOpeningSlot(BOOL bTrue);
extern void InitDbDormer(BOOL bTrue);
extern void InitDbNetshelf(BOOL bTrue);
extern void Init3DSolid(BOOL bTrue);
extern void InitDbProtectEntity(BOOL bTrue);
extern void InitDbDrawingName(BOOL bTrue);
extern void InitDbPolyCurveEnt(BOOL bTrue);
extern void InitDbDualSlopeRoof(BOOL bTrue);
extern void InitDbCuspRoof(BOOL bTrue);
extern void InitDbMountRoof(BOOL bTrue);
extern void InitDbLandform(BOOL bTrue);
extern void InitDbRegion(BOOL bTrue);
//add by xlc on 080104
extern void InitDbParallelStair(BOOL bTrue);
extern void InitDbCornerStair(BOOL bTrue);
extern void InitDbCrossStair(BOOL bTrue);
extern void InitDbScissorsStair(BOOL bTrue);
extern void InitDbDoubleMulStair(BOOL bTrue);
extern void InitDbTriangleStair(BOOL bTrue);
extern void InitDbRectCornerStair(BOOL bTrue);
extern void InitDbAutoStair(BOOL bTrue);
// sg add 080828,散水对象
extern void InitDbApron(BOOL bTrue);
// sg add 100120,楼层框对象
extern void IniTDbFloorRect(BOOL bTrue);
// sg add 120523,设备箱对象
extern void InitDbEquipmentBox(BOOL bTrue);
// 电气标注
extern void InitLampDim(BOOL bTrue);
extern void InitWireDim(BOOL bTrue);
extern int g_nProductId;
// 剖面对象
extern void InitDbSection(BOOL bTrue);
// GlwKatana 对象
extern void InitGlwKatana(BOOL bInit);
// 场地红线对象
extern void InitAreaRedLine(BOOL bInit);
//内饰符号对象
extern void InitInSight(BOOL bInit);
//在应用程序加载上需要做的动作
void OnLoadApp()
{
TArchCmdReactor::Attach();
TchSubExport::RegisterClassId();
_distSnap=0.01; // 1 or 4
Refresh_DIST_SNAP();
_angSnap=0.001;
g_nCirDeviation=4;
// extern TCHAR g_sDwbPath[], g_sAppPath[];
TCHAR dir[256]=_T("");
_tcscpy(dir, g_sAppPath);
TCHAR *p=&dir[_tcslen(dir)-2];
while(*p!=_T('\\') && p!=dir) p--;
if(*p==_T('\\')) *(p+1)=0;
_tcscpy(g_sDwbPath, dir);
_tcscat(g_sDwbPath, _T("DWB\\"));
//LoadGlobalFromReg();
LoadConfig();
TchGeLib::g_ptrCodePageConvert = TchExport::ConvertDwgCodePage; //使得DWG的转换可以进行
InitLayers(TRUE); //给层分配字符串空间
InitTextStyles(TRUE);// 初始化文字样式变量,sg add 101229
TchAddCommand(_T("wfK"), g_cmdTable, ELEMENTS(g_cmdTable));
if(g_nProductId==kTARCH)//各专业可以自定义TXX_TLoadConfig
{
XString sCmd=GetFullCmdName(_T("TLoadConfig"));
acedRegCmds->addCommand(_T("wfK"),sCmd ,sCmd,
ACRX_CMD_TRANSPARENT, LoadConfig, NULL, ELEMENTS(g_cmdTable));
}
TDbEntity::rxInit();
TDbCurveEntity::rxInit();
InitDwgLicense(TRUE);
InitDbPolyCurveEnt(TRUE);
InitDbCurveMesh2(TRUE);
InitDbPolyMesh2(TRUE);
InitDbPolyPathArray(TRUE);
InitDbPolyPathEnt(TRUE);
InitDbWall(TRUE);
InitDbCurtainWall(TRUE);
InitDbOpening(TRUE);
InitDbGroupOpening(TRUE);
InitDbColumn(TRUE);
InitDbWallPatch(TRUE);
InitDbCornerWin(TRUE);
InitDbBandWin(TRUE);
InitDbRoof(TRUE);
InitDbDualSlopeRoof(TRUE);
InitDbMountRoof(TRUE);
InitDbCuspRoof(TRUE);
InitDbCurveMesh(TRUE);
InitDbPolyMesh(TRUE);
InitDbSpace(TRUE);
InitDbErrorMsg(TRUE);
InitDbSlab(TRUE);
InitDbInitSet(TRUE);
InitDbBalcony(TRUE);
InitDbVertSlab(TRUE);
InitDbStep(TRUE);
InitDbAscent(TRUE);
InitDbCamera(TRUE);
InitDbAxisLabelSet(TRUE);
InitDbStair(TRUE);
InitDbHandRail(TRUE);
InitDbRail(TRUE);
InitDbDimension(TRUE);
InitDbText(TRUE);
InitDbSheet(TRUE);
InitDbSymbolAnnotate(TRUE);
InitDbBlockInsert(TRUE);
InitDbRect(TRUE);
InitDbSlope(TRUE);
InitOpeningSlot(TRUE);
InitDbDormer(TRUE);
InitDbNetshelf(TRUE);
Init3DSolid(TRUE);
InitDbProtectEntity(TRUE);
InitDbDrawingName(TRUE);
InitDbLandform(TRUE);
InitDbRegion(TRUE);
InitWireDim(TRUE);
InitLampDim(TRUE);
//add by xlc on 080104
InitDbParallelStair(TRUE);
InitDbCornerStair(TRUE);
InitDbCrossStair(TRUE);
InitDbScissorsStair(TRUE);
InitDbDoubleMulStair(TRUE);
InitDbTriangleStair(TRUE);
InitDbRectCornerStair(TRUE);
InitDbAutoStair(TRUE);
InitDbApron(TRUE); // sg add 080828,散水
IniTDbFloorRect(TRUE); // sg add 100120,楼层框
InitDbEquipmentBox(TRUE); // sg add 120523,设备箱对象
acrxBuildClassHierarchy();
InitAppDocGlobals(TRUE);
InitDbSection(TRUE);
InitGlwKatana(TRUE);
InitAreaRedLine(TRUE);
InitInSight(TRUE);
}
extern XStringList g_lstFileRemove;
extern void SaveGlobalToReg();
//在应用程序卸载时需要做的动作
void OnUnloadApp()
{
//add by whl 061219,当前配置恢复为默认配置
#if (ARCH!=3)
// sg modify 120228,自R19平台起,API进行了调整,下面的函数作废了
// const TCHAR *pszRegAcad=acrxProductKey();
const TCHAR *pszRegAcad=NULL;
#if (ADS > 18)
pszRegAcad = acdbHostApplicationServices()->getUserRegistryProductRootKey();
#else
pszRegAcad = acrxProductKey();
#endif
ASSERT(pszRegAcad);
{
BOOL bIsAcadCh=FALSE;
//XString sRegProp(_T("%s\\Profiles"), pszRegAcad);
{
DWORD dwReserved = 0 ;
HKEY hkObject = NULL ;
LONG Retcode = ::RegOpenKeyEx ( HKEY_CURRENT_USER // handle of an open key
, (const TCHAR *)XString(_T("%s\\Profiles\\<<未命名配置>>"), pszRegAcad)
, dwReserved // reserved
, KEY_READ // desired security access
, &hkObject // address of buffer for opened handle
) ;
bIsAcadCh=(Retcode==ERROR_SUCCESS);
if(bIsAcadCh)
::RegCloseKey(hkObject);
}
CString csDefault=bIsAcadCh? _T("<<未命名配置>>") : _T("<<Unnamed Profile>>");
{
CRegProperty regProp(pszRegAcad, _T("Profiles"));
regProp.SetTopRootKey(HKEY_CURRENT_USER);
regProp.SetValue(_T(""), csDefault);
}
}
#endif
InitAppDocGlobals(FALSE);
#if (ARCH!=3)
acedRegCmds->removeGroup(_T("wfK"));
#endif
InitDbEquipmentBox(FALSE); // sg add 120523,设备箱
IniTDbFloorRect(FALSE); // sg add 100120,楼层框
InitDbApron(FALSE); // sg add 080828,散水
//add by xlc on 080104
InitDbAutoStair(FALSE);
InitDbRectCornerStair(FALSE);
InitDbTriangleStair(FALSE);
InitDbDoubleMulStair(FALSE);
InitDbScissorsStair(FALSE);
InitDbCrossStair(FALSE);
InitDbCornerStair(FALSE);
InitDbParallelStair(FALSE);
InitLampDim(FALSE);
InitWireDim(FALSE);
InitDbRegion(FALSE);
InitDbLandform(FALSE);
InitDbDrawingName(FALSE);
InitDbProtectEntity(FALSE);
Init3DSolid(FALSE);
InitDbNetshelf(FALSE);
InitDbDormer(FALSE);
InitDbGroupOpening(FALSE);
InitOpeningSlot(FALSE);
InitDbSlope(FALSE);
InitDbRect(FALSE);
InitDbBlockInsert(FALSE);
InitDbSymbolAnnotate(FALSE);
InitDbSheet(FALSE);
InitDbText(FALSE);
InitDbDimension(FALSE);
InitDbRail(FALSE);
InitDbHandRail(FALSE);
InitDbStair(FALSE);
InitDbAxisLabelSet(FALSE);
InitDbCamera(FALSE);
InitDbAscent(FALSE);
InitDbStep(FALSE);
InitDbBalcony(FALSE);
InitDbVertSlab(FALSE);
InitDbInitSet(FALSE);
InitDbSlab(FALSE);
InitDbErrorMsg(FALSE);
InitDbSpace(FALSE);
InitDbPolyMesh(FALSE);
InitDbCurveMesh(FALSE);
InitDbCurtainWall(FALSE);
InitDbWall(FALSE);
InitDbOpening(FALSE);
InitDbColumn(FALSE);
InitDbWallPatch(FALSE);
InitDbCuspRoof(FALSE);
InitDbMountRoof(FALSE);
InitDbDualSlopeRoof(FALSE);
InitDbRoof(FALSE);
InitDbBandWin(FALSE);
InitDbCornerWin(FALSE);
InitDbPolyPathEnt(FALSE);
InitDbPolyPathArray(FALSE);
InitDbPolyMesh2(FALSE);
InitDbCurveMesh2(FALSE);
InitDbPolyCurveEnt(FALSE);
InitDwgLicense(FALSE);
InitDbSection(FALSE);
InitGlwKatana(FALSE);
InitAreaRedLine(FALSE);
InitInSight(FALSE);
deleteAcRxClass(TDbEntity::desc());
deleteAcRxClass(TDbCurveEntity::desc());
InitLayers(FALSE);
InitTextStyles(FALSE);// 初始化文字样式变量,sg add 101229
for(int i=0; i<g_lstFileRemove.Length(); i++) {
_tremove(g_lstFileRemove[i]);
}
g_lstFileRemove.Reset();
TArchCmdReactor::Detach();
}
//////////////////////////////////////////////////////////////////////
// Test Only
void UpdateFrom6()
{
extern void ConvertDim6();
ConvertDim6();
}
// 由上华5的Beta版本升级到正式版本
BOOL g_bUpdateBeta=FALSE;
void UpdateFromBeta()
{
if(!g_bUpdateBeta)
return;
g_bUpdateBeta=FALSE;
PickSet ss(SS_FREE);
RBList mask=ads_buildlist(RTDXF0, _T("ATS_WALL"), NULL);
if(ss.Get(_T("X"), NULL, NULL, mask)==RTNORM) {
long nLen=ss.Length();
for(long i=0; i<nLen; i++) {
Entity ent=ss[i];
OPENOBJ_BEGIN(ent, AcDb::kForWrite, TDbWall, pWall);
if(pWall)
pWall->UpdateFromBeta();
OPENOBJ_END();
}
}
// 更新转角窗
PickSet ssWin(SS_FREE);
if(ss.Get(_T("X"), NULL, NULL, RBList(RTDXF0, _T("ATS_OPENING"), NULL))==RTNORM) {
long nLen=ss.Length();
for(long i=0; i<nLen; i++) {
Entity ent=ss[i];
OPENOBJ_BEGIN(ent, AcDb::kForRead, TDbOpening, pWin);
if(pWin && pWin->GetKind()==TOpeningData::OP_CORNWIN)
{
if(pWin->upgradeOpen()==Acad::eOk) {
pWin->recordGraphicsModified();
pWin->downgradeOpen();
}
}
OPENOBJ_END();
}
}
}
// 更新尺寸标注样式问题
void UpdateFrom8()
{
AcDbDatabase *pCurDwg =acdbCurDwg();
if (pCurDwg == NULL)
return;
AcDbDimStyleTable *pTable = NULL;
if (pCurDwg->getSymbolTable(pTable, AcDb::kForRead) != Acad::eOk)
return;
AcDbDimStyleTableIterator *pIter = NULL;
if (pTable->newIterator(pIter)!=Acad::eOk || pIter==NULL)
{
pTable->close();
return;
}
pTable->close();
AcDbObjectId idDimblk;
double dDimasz = 1.0;
for (pIter->start(); !pIter->done(); pIter->step())
{
AcDbDimStyleTableRecord *pDimStyle = NULL;
if (pIter->getRecord(pDimStyle, AcDb::kForRead)!=Acad::eOk || pDimStyle==NULL)
continue;
idDimblk = pDimStyle->dimblk();
dDimasz = pDimStyle->dimasz();
if (!idDimblk && fabs(dDimasz-1.0)<1.0E-3) // “实心闭合”样式
{
if (pDimStyle->upgradeOpen() == Acad::eOk)
{
pDimStyle->setDimasz(2.0);
pDimStyle->downgradeOpen();
}
}
pDimStyle->close();
}
delete pIter;
}
TARCH_IMPEXP void UpdateAllLinkage()
{
//取得所有的裁剪区域
DList<AcDbObjectId> lstClipBoundry;
GetEntFromBlockByDxf(lstClipBoundry, _T("ATS_COLUMN"));
PickSet ss(SS_FREE);
GetEntByDxf(ss, _T("ATS_WALL,ATS_CURTAIN_WALL"),1);
if(!ss)
return;
XSearchSpaceFromWall aSearch;
try {
aSearch.InitStart(ss, lstClipBoundry); //实际并不搜索房间,仅建立排序表
} catch(...) {
adsout << /*UMSG*/_T("\n发生例外情况!");
return;
}
long len = ss.Length();
for(long i=0; i<len; i++) {
Entity ent=ss[i];
XDbObject obj(ent.name, AcDb::kForWrite);
if(!obj) { //Extend一墙体时, 指针还没有关闭
continue;
//adsout << _T("\nCan't open a wall for modify!");
} else {
TDbWall *pWall=TDbWall::cast(obj.m_pObject);
if(pWall) {
pWall->assertWriteEnabled();
pWall->CalSideParameters(ent,
GetAllSortWalls());
}
}
}
for(i=0; i<len; i++) {
Entity ent=ss[i];
XDbObject obj(ent.name, AcDb::kForWrite);
if(!obj) { //Extend一墙体时, 指针还没有关闭
continue;
//adsout << _T("\nCan't open a wall for modify!");
} else {
TDbWall *pWall=TDbWall::cast(obj.m_pObject);
if(pWall) {
pWall->assertWriteEnabled();
pWall->CalSideParameters1();
}
}
}
aSearch.UpdateColuLinkage();
}
int RepStatus()
{
extern double g_nUseHours;
resbuf *rb=ads_getargs();
if(rb) {
if(rb->restype==RTSHORT && rb->resval.rint==999) {
adsout << _T("\nProductId=") << g_nProductId;
adsout << _T("\nProtectCode=") << TchGeLib::g_nProtectCode;
adsout << _T("\nUseHours=") << g_nUseHours;
}
ads_relrb(rb);
}
return RTNORM;
}