921 lines
24 KiB
C++
921 lines
24 KiB
C++
#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;
|
||
} |