Files
envi-code/SourceCode/Code2026/tg_shs/shs_kernal/Onload.cpp
T

921 lines
24 KiB
C++
Raw Normal View History

2026-09-28 15:28:50 +08:00
#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;
}