#include "stdafx.h" #include "rxregsvc.h" #include "axlock.h" #include "resource.h" #include "TWDict.h" #include "TWDictItem.h" #include "TDonotMonitorMe.h" //extern GEOAPI BOOL g_bExplodeMesh; //extern TARCH_IMPEXP void UpdateGraphic(const DList &ss); //extern TARCH_IMPEXP void DocStatus(); ///////////////////////////////////////////////////////////////////// // 驻留在系统注册表的全局设定 //TARCH_IMPEXP BOOL g_bExplodeMesh=TRUE; TARCH_IMPEXP BOOL g_bDynDim=TRUE;//是否启用尺寸联动 TARCH_IMPEXP BOOL g_bABCoord=FALSE; //AB标注还是XY标注 TARCH_IMPEXP double g_nWalkDistStep=1000.0; TARCH_IMPEXP double g_nWalkAngleStep=5.0*PI/180; TARCH_IMPEXP BOOL g_bZoomKey=FALSE; // TAB/~缩放热键 TARCH_IMPEXP BOOL g_bDwgTabBar=TRUE; //DWG文档切换标签 TARCH_IMPEXP BOOL g_bHideCaption=FALSE;//隐藏标题栏 TARCH_IMPEXP BOOL g_bDragRubber=TRUE; //橡皮筋拖动(自由复制) //模数控制 BOOL g_bModelNumber=FALSE; double g_nWinStep=10.0; double g_nWallStep=300.0; int g_nDimAdjust=1; // 尺寸自调:0--不调, 1--上调, 2--下调 //BOOL g_bSaveProxyGraph=FALSE; //默认不存储Proxy的图像 ads_real g_nDistPrec=20.0; //墙体衔接控制精度 TARCH_IMPEXP int g_nDimNumGripTip=20; //尺寸区间个数超过后,不解释夹点 TARCH_IMPEXP BOOL g_nLineDimArrow=0; // 0--粗线;1--细线; 2--圆点 TARCH_IMPEXP BOOL g_nAngleDimArrow=0; // 0--标准箭头; 1--圆点 // sg add 120412,根据9.0需求,增加设置弧长标注样式的设置 TARCH_IMPEXP int g_nArcLenDimType=0;//wlw 130617默认指向圆心 //TARCH_IMPEXP double g_nCurtainWall3Scale=100.0;//幕墙34线控制比例 // sg modify 090609,将默认值改为150 TARCH_IMPEXP double g_nCurtainWall3Scale=150.0;//幕墙34线控制比例 TARCH_IMPEXP int g_nWallBaseColor=46;//墙基线颜色 TARCH_IMPEXP int g_nCutLineColor=149;//切割线颜色 TARCH_IMPEXP int g_nHideAxisLabelColor=108;//隐藏轴号颜色 TARCH_IMPEXP int g_nWallExtSideColor=5;//墙外侧颜色,暂时用TLEA表示幕墙 TARCH_IMPEXP BOOL g_bAutoLTScale=TRUE; //是否自动设置线型比例 TARCH_IMPEXP double g_nLtPScale=10.0; //图纸空间自动线型 TARCH_IMPEXP double g_nLtMScale=1000.0;//模型空间自动线型 TARCH_IMPEXP int g_nMaxGripHint=20; //当选中的物体超过这个数时,不解释夹点 // TArch8.0,sg add 090512/090609/090612 TARCH_IMPEXP double g_dElevTextBaseLen = 16.0; // 空白标高符号默认文字基线长度 TARCH_IMPEXP double g_dDrawIndexTextRatio = 0.6; // 圆圈文字字高系数 TARCH_IMPEXP double g_dAxisLabelTextRatio = 0.7; // 轴号字高系数 TARCH_IMPEXP double g_dAxisLabelDia = 8.0; // 轴圈直径 TARCH_IMPEXP double g_dRuptureLenLimit = 1000.0; // 折断线连接区间长度界限值 TARCH_IMPEXP double g_dMoreRuptureLimit = 6.0; // 大于界限值时,出头距离 TARCH_IMPEXP double g_dLessRuptureLimit = 3.0; // 小于界限值时,出头距离 TARCH_IMPEXP BOOL g_bCurtainWallFixStyle = FALSE; // 带形窗幕墙样式,比例改变后不改样式 TARCH_IMPEXP int g_nCurtainWallStyle = 0; // 带形窗幕墙样式,不改样式时的设定类型 TARCH_IMPEXP BOOL g_bDrawIndexOldStyle = FALSE; // 圆圈文字不使用旧样式 // TArch8.5,sg add 100125 TARCH_IMPEXP BOOL g_bShowFloorRect = TRUE; // 是否显示楼层框对象 // sg add 100601 TARCH_IMPEXP BOOL g_bIgnoreAttach = TRUE; // 一轴多号时,是否忽略附加轴号 TARCH_IMPEXP int g_nAfterYAxisStyle = 0; // 字母Y后面采用的注脚形式 // sg add 100714 // sg modify 110510,根据需求,修改默认值,保持和8.2一致 //TARCH_IMPEXP BOOL g_bWallHasInsulateCap = TRUE; // 墙体保温是否封口 TARCH_IMPEXP BOOL g_bWallHasInsulateCap = FALSE; // 墙体保温是否封口 // sg delete 101209,根据讨论,暂时去掉高级选项中的该设置 // sg add 101105 // TARCH_IMPEXP BOOL g_bUniformSpaceDim = TRUE; // 房间面积标注方式是否统一控制 // sg add 101209 TARCH_IMPEXP double g_dIndexPointerBaseLen = 5.0; // 索引符号延长线的默认长度 TARCH_IMPEXP double g_dSectionBaseLen = 5.0; // 剖切索引剖切线的默认长度 // sg add 110124 TARCH_IMPEXP BOOL g_bDIOutCircleStyle = FALSE; // 圆圈文字支持出圈样式 TARCH_IMPEXP BOOL g_bElevFloorsOnRight = TRUE; // 多层标高符号中的楼层是否在标高值右侧,默认在右侧 TARCH_IMPEXP BOOL g_bBlaconyHalf=TRUE; // add by xlc on 090625 阳台按一半面积计算 // TArch9.0 TARCH_IMPEXP int g_bNorthThumbTextDir = 1; // sg add 111221,增加指北针文字方向的的全局变量 TARCH_IMPEXP BOOL g_bDownloadT3Split=TRUE; // sg add 120516,文字导出T3版本时候,是否断开 //TArch6.5 TARCH_IMPEXP int g_nCoordPrec=3; //坐标标注精度 TARCH_IMPEXP int g_nCoordArrowStyle=0; TARCH_IMPEXP int g_nSymbArrowStyle=0; TARCH_IMPEXP double g_fWinLabelDefaultHeight=3.5;//门窗编号默认字高,add by whl TARCH_IMPEXP BOOL g_bDblClkEditObj=TRUE;//双击对象编辑控制,add by whl TARCH_IMPEXP BOOL g_bDblCancelSelect=TRUE;//双击空白取消选择,add by whl TARCH_IMPEXP int g_nSpeedMenu=1; //快捷菜单: 0--取消; 1--右键; 2--Ctrl+右键,3--慢击右键 TARCH_IMPEXP int g_nRBtnMenuTime=150;//空白右銉慢击时间阀,g_nSpeedMenu==3时有效 TARCH_IMPEXP int g_nMaxAutoScale=200; TARCH_IMPEXP BOOL g_bIgnoreStairRail=TRUE;//在建筑立剖面、单层立剖面命令中,双跑和多跑楼梯的扶手和栏杆可以选择忽略 TARCH_IMPEXP double g_nText2Base=1.0;//文字距离基线的距离,TArch8 Obsolete TARCH_IMPEXP double g_nText2BaseRatio=0.3;//文字距离基线系数(与字高有关).TArch8 Add //默认尺寸样式 //粗斜线 TARCH_IMPEXP CString g_sDim0=_T("_TCH_ARCH"); TARCH_IMPEXP CString g_sDim0M_M=_T("_TCH_ARCH_M_M"); TARCH_IMPEXP CString g_sDim0mm_M=_T("_TCH_ARCH_mm_M"); //细斜线 TARCH_IMPEXP CString g_sDim1=_T("_TCH_ARCH1"); TARCH_IMPEXP CString g_sDim1M_M=_T("_TCH_ARCH1_M_M"); TARCH_IMPEXP CString g_sDim1mm_M=_T("_TCH_ARCH1_mm_M"); //圆点 TARCH_IMPEXP CString g_sDim2=_T("_TCH_DOTE"); TARCH_IMPEXP CString g_sDim2M_M=_T("_TCH_DOTE_M_M"); TARCH_IMPEXP CString g_sDim2mm_M=_T("_TCH_DOTE_mm_M"); //角度箭头 TARCH_IMPEXP CString g_sDimA0=_T("_TCH_ARROW"); //角度圆点 TARCH_IMPEXP CString g_sDimA1=_T("_TCH_DOTE"); TARCH_IMPEXP double g_dBaseDist=1000;//轴线伸出长度 TARCH_IMPEXP double g_fRuptureExDist=3.0;//折断线出头(图纸单位),需加入Config.ini! TARCH_IMPEXP double g_nInsulateThick=80;//默认保温层厚度 TARCH_IMPEXP CString g_sWinLabelPostFix=_T("反");//门窗后缀命令默认加的后缀 //屏幕菜单 TARCH_IMPEXP BOOL g_bRightScreenMenu = TRUE; // add by gjm 屏幕是否靠右 TARCH_IMPEXP BOOL g_bLimitHeight=FALSE;//外部限高 TARCH_IMPEXP BOOL g_bDefaultOpenFirst=FALSE;//默认打开新一个 TARCH_IMPEXP BOOL g_bScrollBar=FALSE;//是否需要右滚动条 TARCH_IMPEXP int g_iMenuType=0;//菜单文件 TARCH_IMPEXP int g_nRunMode=0; //运行模式, 0--新模式,1--旧模式 TARCH_IMPEXP int g_menuColors[4]={GetSysColor(COLOR_3DFACE),RGB(239,239,236),RGB(250,254,254),RGB(255,255,252)}; //在位编辑器 TARCH_IMPEXP int g_colorInPlaceText=RGB(0,70,160); TARCH_IMPEXP int g_colorInPlaceGround=RGB(235,233,230); TARCH_IMPEXP int g_iInPlaceFontHeight=18; TARCH_IMPEXP BOOL g_bDClickInplaceEdit=TRUE; //环境记忆 TARCH_IMPEXP CString g_sRecentFiles; TARCH_IMPEXP BOOL g_bAutoOpenRecent=FALSE; TARCH_IMPEXP BOOL g_bProjectBarVisible=FALSE; TARCH_IMPEXP double g_nDefaultScale=100;//模型空间默认出图比例 // 动态输入,只对2004、2005有效;2006以上,则使用AutoCAD自带的 //TARCH_IMPEXP BOOL g_bDynInput=TRUE; // 是否启动动态输入, //TARCH_IMPEXP int g_iMaxDynDimNum=2; // 最多动态数量 // sg add 100112,增加“编组”控制 TARCH_IMPEXP BOOL g_bMakeGroup=TRUE; // 是否启动动态编组 // sg add 100915,增加“文字图层类型”的控制开关 TARCH_IMPEXP BOOL g_bTextDefaultLayer=TRUE; // TRUE为使用默认图层 // add by gjm 2015/05/05 为 符号、标高、坐标 三个实体增加相应的图层 TARCH_IMPEXP BOOL g_bSymbolDefLayer = TRUE; // TRUE为使用默认图层 TARCH_IMPEXP BOOL g_bCoordDefLayer = TRUE; // TRUE为使用默认图层 TARCH_IMPEXP BOOL g_bElevaDefLayer = TRUE; // TRUE为使用默认图层 // end // sg add 110120,增加凸窗挡板保温、转角凸窗保温、门窗套保温厚度的默认数据,默认值均为30 TARCH_IMPEXP double g_dProWinSlabInsuThick=30; TARCH_IMPEXP double g_dCornerWinInsuThick=30; TARCH_IMPEXP double g_dSlotInsulateThick=30; // sg add 110120,增加门窗套保温端头是否封口,默认封口 TARCH_IMPEXP BOOL g_bSlotInsulateCap=TRUE; // sg add 110120,增加阳台栏板遮挡保温层,默认遮挡 TARCH_IMPEXP BOOL g_bBalconyClipInsu=TRUE; // sg add 110301,增加三角形标高符号、圆点标高符号默认直径或尺寸大小 TARCH_IMPEXP double g_dEleTriangleSize = 3; TARCH_IMPEXP double g_dEleDoteSize = 1.5; TARCH_IMPEXP double g_dEleCrossSize = 2.5; // sg add 110301,增加断面、剖面剖切符号中,剖切位置线默认长度、剖视方向线默认长度的大小设置 TARCH_IMPEXP double g_dSectionSegLocLength = 10; TARCH_IMPEXP double g_dSectionSegDirLength = 6; // sg add 110301,增加索引符号中,号圈直径设置 TARCH_IMPEXP double g_dIndexPointerDia = 10; // sg add 110301,增加符号文字导出所在图层设置 TARCH_IMPEXP int g_nSymbTextT3Layer = 1; // 0--对象层,1--文字层 // sg add 110301,增加索引图名号圈直径设置 TARCH_IMPEXP double g_dSymbDrawingIndexDia = 14; TARCH_IMPEXP BOOL g_bMakeExtSpace=TRUE;//搜索房间时是否生成建筑面积 TARCH_IMPEXP BOOL g_bIgnoreColumn=TRUE;//建筑面积是否忽略柱子凸出部分 TARCH_IMPEXP BOOL g_bEnableSelectPreview=TRUE;//是否选择预览(<2006),是否使用选择预览右键菜单 TARCH_IMPEXP BOOL g_bAutoFocus=TRUE; //快捷銉 TARCH_IMPEXP const TKeyMaps* g_pKeyMapTable=NULL; TARCH_IMPEXP BOOL g_bEnableShortCut=TRUE; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// TARCH_IMPEXP int g_nProductId=kTARCH; TARCH_IMPEXP int g_nLicenseMode=0;//0:试用版;1单机版;2网络版;3高教网络版 TARCH_IMPEXP TCHAR g_szRegLoc[256]=_T("SoftWare\\Tangent\\TArch\\8.0"); TARCH_IMPEXP int g_nCustomFlag=0; TARCH_IMPEXP double g_nVersion=8.0; //TARCH_IMPEXP TCHAR g_sDwbPath[256]=_T("\\"); //TARCH_IMPEXP TCHAR g_sAppPath[256]=_T("C:\\"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // LoadGlobalFromReg // 应用程序加载时, 从OS的注册表中取全局变量 TARCH_IMPEXP void LoadGlobalFromReg() { XString sTchIni; if (FindFile(_T("tch.ini"), sTchIni)) { INI_struct *inis=NULL; if (CT_get_INIs(sTchIni, _T("Product"), &inis)) { TCHAR *pReg=CT_get_INI2(inis, _T("Registry")); if(pReg) _tcscpy(g_szRegLoc, pReg); TCHAR *pProdId=CT_get_INI2(inis, _T("ProductId")); if(pProdId) g_nProductId=_ttoi(pProdId); TCHAR *pCustomFlag=CT_get_INI2(inis, _T("CustomFlag")); if(pCustomFlag) g_nCustomFlag=_ttoi(pCustomFlag); CT_free_INIs(inis); } } { CRegProperty regProp(GetRegLocation(), _T("Settings")); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.GetValue(_T("DynDim"), g_bDynDim); regProp.GetValue(_T("ABCoord"), g_bABCoord); //regProp.GetValue(_T("AngleDimArrow"), g_nAngleDimArrow); //regProp.GetValue(_T("LineDimArrow"), g_nLineDimArrow); regProp.GetValue(_T("DimAdjust"), g_nDimAdjust); // sg delete 090608,转移到高级选项及图中保存 // regProp.GetValue(_T("CurtainWallScale"), g_nCurtainWall3Scale); regProp.GetValue(_T("MaxDimGrip"), g_nDimNumGripTip); regProp.GetValue(_T("SpeedMenu"), g_nSpeedMenu); regProp.SetValue(_T("RMenuTimer"), g_nRBtnMenuTime); regProp.GetValue(_T("ModelNumber"), g_bModelNumber); regProp.GetValue(_T("WinStep"), g_nWinStep); regProp.GetValue(_T("WallStep"), g_nWallStep); regProp.GetValue(_T("ZoomKey"), g_bZoomKey); regProp.GetValue(_T("DwgTabBar"), g_bDwgTabBar); regProp.GetValue(_T("HideCaption"), g_bHideCaption); regProp.GetValue(_T("ExplodeType"), g_bExplodeMesh); regProp.GetValue(_T("DragRubber"), g_bDragRubber); regProp.GetValue(_T("DblClkEditObj"),g_bDblClkEditObj); regProp.GetValue(_T("DblClkInplaceEdit"),g_bDClickInplaceEdit); regProp.GetValue(_T("InPlaceEditTextColor"),g_colorInPlaceText); regProp.GetValue(_T("InPlaceEditBkColor"),g_colorInPlaceGround); regProp.GetValue(_T("InPlaceEditFontSize"),g_iInPlaceFontHeight); regProp.GetValue(_T("Dynamic"),g_bDynInput); regProp.GetValue(_T("MaxDynDimNum"),g_iMaxDynDimNum); // sg add 100112,增加“编组”控制 regProp.GetValue(_T("MakeGroup"), g_bMakeGroup); // sg add 100915,增加“文字图层类型”的控制开关 regProp.GetValue(_T("TextDefaultLayer"), g_bTextDefaultLayer); // add by gjm 2014/05/05 regProp.GetValue(_T("SymbolDefaultLayer"), g_bSymbolDefLayer); regProp.GetValue(_T("CoordDefaultLayer"), g_bCoordDefLayer); regProp.GetValue(_T("ElevaDefaultLayer"), g_bElevaDefLayer); // end #if ADS<16 regProp.GetValue(_T("RecentFiles15"),g_sRecentFiles); #else regProp.GetValue(_T("RecentFiles16"),g_sRecentFiles); #endif regProp.GetValue(_T("AutoOpenRecent"),g_bAutoOpenRecent); regProp.GetValue(_T("AutoFocus"),g_bAutoFocus); regProp.GetValue(_T("SelectPreview"),g_bEnableSelectPreview); regProp.GetValue(_T("MakeExtSpace"),g_bMakeExtSpace); regProp.GetValue(_T("IgnoreColumn"),g_bIgnoreColumn); regProp.GetValue(_T("MaxAutoUpdateScale"),g_nMaxAutoScale); regProp.GetValue(_T("EnableShortCut"),g_bEnableShortCut); // sg delete 101125,根据8.5需求,阳台面积按一半计算的数据改到对象中,取消注册表中的全局设置 // regProp.GetValue(_T("BlaconyHalf"),g_bBlaconyHalf);//add by xlc on 090625 } XString sProfile; xg_getvar(_T("CPROFILE"), sProfile); if(!sProfile) sProfile=_T("Settings"); CRegProperty regProp(GetRegLocation(), sProfile); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.GetValue(_T("WalkDistStep"), g_nWalkDistStep); regProp.GetValue(_T("WalkAngleStep"), g_nWalkAngleStep); regProp.GetValue(_T("CoordPrec"), g_nCoordPrec); regProp.GetValue(_T("CoordArrowStyle"),g_nCoordArrowStyle); regProp.GetValue(_T("SymbArrowStyle"),g_nSymbArrowStyle); if(g_nCoordPrec<0) g_nCoordPrec=3; { XString sKey; sKey << GetRegLocation() << _T("\\Settings"); CRegProperty reg(sKey, _T("ScreenMenu")); reg.SetTopRootKey(HKEY_CURRENT_USER); reg.GetValue(_T("MenuType"),g_iMenuType); if(g_iMenuType==2) g_nRunMode=1; else g_nRunMode=0; reg.GetValue(_T("ScreenMenuColor0"),g_menuColors[0]); reg.GetValue(_T("ScreenMenuColor1"),g_menuColors[1]); reg.GetValue(_T("ScreenMenuColor2"),g_menuColors[2]); reg.GetValue(_T("ScreenMenuColor3"),g_menuColors[3]); } } // sg modify 090512/090609/090612,满足8.0的需求,新增加了一些全局设置 // sg modify 110301,根据8.5需求,整体修改了高级选项中的全局设置 TARCH_IMPEXP void LoadConfig() { LoadGlobalFromReg(); XString sFullFile; if (!FindFile(_T("config.ini"), sFullFile)) return; WDict dict; dict.ReadFile(sFullFile); //CString sPath=_T("轴线\\轴线出头"); //WDictItem *pItem=dict.FindItem(sPath); OPEN_DICT(dict); OPEN_SUB_DICT(_T("系统")); GET_BOOL(_T("是否启用代理对象"),g_bSaveProxyGraph); GET_VALUE(_T("最大自动更新规模"),g_nMaxAutoScale); //GET_VALUE(_T("模型空间默认出图比例"),g_nDefaultScale);if(g_nDefaultScale<0.0001)g_nDefaultScale=100; GET_VALUE(_T("模型空间默认当前比例"),g_nDefaultScale);if(g_nDefaultScale<0.0001)g_nDefaultScale=100; unsigned int type=0; GET_VALUE(_T("三维对象分解方式"),type);g_bExplodeMesh=type==0; OPEN_SUB_DICT(_T("精度")); GET_VALUE(_T("墙体衔接控制精度"),g_nDistPrec);if(g_nDistPrec<1E-9||g_nDistPrec>1000)g_nDistPrec=20; GET_VALUE(_T("距离精度"),_distSnap);if(_distSnap<1E-9||_distSnap>1000)_distSnap=0.01; Refresh_DIST_SNAP(); GET_VALUE(_T("角度精度"),_angSnap);if(_angSnap<1E-9||_angSnap>1000)_angSnap=0.01; GET_VALUE(_T("分弧精度"),g_nCirDeviation);if(g_nCirDeviation<1E-9)g_nCirDeviation=1; CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("线型")); GET_BOOL(_T("是否启用自动线型比例"),g_bAutoLTScale); GET_VALUE(_T("模型空间自动线型比例"),g_nLtMScale);if(g_nLtMScale<1E-9)g_nLtMScale=1000; GET_VALUE(_T("图纸空间自动线型比例"),g_nLtPScale);if(g_nLtPScale<1E-9)g_nLtPScale=10; CLOSE_SUB_DICT(); // sg delete 110530,根据讨论,暂时去掉高级选项中的该设置 // sg add 100125,满足8.5需求 // GET_BOOL(_T("是否显示楼层框"),g_bShowFloorRect); CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("轴线")); GET_VALUE(_T("轴线出头"),g_dBaseDist);if(g_dBaseDist<0)g_dBaseDist=1000; OPEN_SUB_DICT(_T("轴号")); GET_VALUE(_T("隐藏轴号颜色号"),g_nHideAxisLabelColor);if(g_nHideAxisLabelColor<0)g_nHideAxisLabelColor=108; GET_VALUE(_T("轴号字高系数"), g_dAxisLabelTextRatio); // sg add 090512 unsigned int type = 0; GET_VALUE(_T("轴圈直径"), type); // sg add 090512 if (type == 0) g_dAxisLabelDia = 8.0; else if (type == 1) g_dAxisLabelDia = 9.0; else g_dAxisLabelDia = 10.0; //GET_VALUE(_T("不绘制附加轴号"), g_bIgnoreAttach); // sg add 100601,根据8.5需求,添加此项 GET_VALUE(_T("一轴多号忽略附加轴号"), g_bIgnoreAttach); // sg add 110301,规范命名,便于用户理解 unsigned int type1 = 0; //GET_VALUE(_T("字母Y后面采用的注脚形式"), type1); // sg add 100601,根据8.5需求,添加此项 GET_VALUE(_T("字母数量不够时采用的注脚形式"), type1); // sg add 110301,规范命名,便于用户理解 g_nAfterYAxisStyle = type1; CLOSE_SUB_DICT(); CLOSE_SUB_DICT(); //OPEN_SUB_DICT(_T("墙体")); OPEN_SUB_DICT(_T("墙柱")); GET_VALUE(_T("墙基线颜色号"),g_nWallBaseColor);if(g_nWallBaseColor<0)g_nWallBaseColor=46; OPEN_SUB_DICT(_T("保温层")); // sg add 110530,根据底层保温默认值的修改,增加一个辅助变量,方便在用户输入和实际值之间的转换; // GET_VALUE(_T("默认厚度"),g_nInsulateThick);if(g_nInsulateThick<1E-6)g_nInsulateThick=80; double dTmpInsulate = g_nInsulateThick; GET_VALUE(_T("默认厚度"),dTmpInsulate);if(dTmpInsulate<1E-6)dTmpInsulate=80; g_nInsulateThick = dTmpInsulate*1.001; //GET_VALUE(_T("墙体保温是否封口"), g_bWallHasInsulateCap); // sg add 100714,根据8.5需求,添加此项,墙体保温是否封口 GET_VALUE(_T("墙体保温端头封口"), g_bWallHasInsulateCap); // sg add 110301,规范命名,便于用户理解 CLOSE_SUB_DICT(); CLOSE_SUB_DICT(); // sg delete 101209,根据讨论,暂时去掉高级选项中的该设置 /* // sg add 100714,根据8.5需求,添加此项,房间面积全局参数 OPEN_SUB_DICT(_T("房间面积")); GET_VALUE(_T("面积对象标注方式是否全局控制"), g_bUniformSpaceDim); CLOSE_SUB_DICT(); */ OPEN_SUB_DICT(_T("门窗")); OPEN_SUB_DICT(_T("编号")); GET_VALUE(_T("默认字高"),g_fWinLabelDefaultHeight);if(g_fWinLabelDefaultHeight<1E-9)g_fWinLabelDefaultHeight=3.5; GET_VALUE(_T("默认后缀"),g_sWinLabelPostFix);if(g_sWinLabelPostFix==_T(""))g_sWinLabelPostFix=_T("反"); CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("带形窗幕墙样式")); // sg add 090609,根据林工提出的需求,增加带形窗表示样式的全局设置 BOOL bShowStyle = !g_bCurtainWallFixStyle; GET_BOOL(_T("比例改变后改变样式"),bShowStyle); g_bCurtainWallFixStyle = !bShowStyle; unsigned int type=0; GET_VALUE(_T("不改样式时的设定类型"),type);g_nCurtainWallStyle = type; int nRet = 0; CString cs3Scale = _T("1:150"), csTmp = _T("1:"); GET_VALUE(_T("改变样式的比例界限"),cs3Scale); nRet = cs3Scale.Find(csTmp, 0); if (nRet < 0) { g_nCurtainWall3Scale = 150; } else { nRet += csTmp.GetLength(); cs3Scale = cs3Scale.Right(cs3Scale.GetLength() - nRet); g_nCurtainWall3Scale = _ttoi(cs3Scale); } CLOSE_SUB_DICT(); // sg add 110120,增加凸窗挡板保温、转角凸窗保温、门窗套保温厚度的默认数据 // sg add 110120,增加门窗套保温端头是否封口 OPEN_SUB_DICT(_T("保温层")); GET_VALUE(_T("凸窗挡板默认保温厚"),g_dProWinSlabInsuThick);if(g_dProWinSlabInsuThick<-1E-6)g_dProWinSlabInsuThick=30; //GET_VALUE(_T("转角凸窗挡板默认保温厚"),g_dCornerWinInsuThick);if(g_dCornerWinInsuThick<-1E-6)g_dCornerWinInsuThick=30; GET_VALUE(_T("转角凸窗挡板默认保温厚"),g_dCornerWinInsuThick);if(g_dCornerWinInsuThick<-1E-6)g_dCornerWinInsuThick=30; GET_VALUE(_T("门窗套默认保温厚"),g_dSlotInsulateThick);if(g_dSlotInsulateThick<-1E-6)g_dSlotInsulateThick=30; GET_VALUE(_T("门窗套保温端头封口"),g_bSlotInsulateCap); CLOSE_SUB_DICT(); CLOSE_SUB_DICT(); // sg add 110120,增加阳台栏板遮挡保温层的默认数据 OPEN_SUB_DICT(_T("室外构件")); OPEN_SUB_DICT(_T("阳台")); GET_BOOL(_T("阳台栏板遮挡保温层"),g_bBalconyClipInsu); CLOSE_SUB_DICT(); CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("立剖面")); OPEN_SUB_DICT(_T("建筑立剖面")); GET_BOOL(_T("忽略楼梯扶手和栏杆"),g_bIgnoreStairRail); CLOSE_SUB_DICT(); CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("尺寸标注")); OPEN_SUB_DICT(_T("直线尺寸")); unsigned int type=0; GET_VALUE(_T("样式"),type);g_nLineDimArrow=type; OPEN_SUB_DICT(_T("默认尺寸样式名")); GET_VALUE(_T("粗斜线(mm-mm)"),g_sDim0); GET_VALUE(_T("粗斜线(M-M)"),g_sDim0M_M); GET_VALUE(_T("粗斜线(mm-M)"),g_sDim0mm_M); GET_VALUE(_T("细斜线(mm-mm)"),g_sDim1); GET_VALUE(_T("细斜线(M-M)"),g_sDim1M_M); GET_VALUE(_T("细斜线(mm-M)"),g_sDim1mm_M); GET_VALUE(_T("圆点(mm-mm)"),g_sDim2); GET_VALUE(_T("圆点(M-M)"),g_sDim2M_M); GET_VALUE(_T("圆点(mm-M)"),g_sDim2mm_M); CLOSE_SUB_DICT(); CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("角度圆弧尺寸")); // sg add 120412,根据9.0需求,增加设置弧长标注样式的设置 unsigned int typeDimArcLen=0; GET_VALUE(_T("弧长标注"),typeDimArcLen);g_nArcLenDimType=typeDimArcLen; unsigned int type=0; GET_VALUE(_T("样式"),type);g_nAngleDimArrow=type; OPEN_SUB_DICT(_T("默认尺寸样式名")); GET_VALUE(_T("箭头"),g_sDimA0); GET_VALUE(_T("圆点"),g_sDimA1); CLOSE_SUB_DICT(); CLOSE_SUB_DICT(); CLOSE_SUB_DICT(); // sg add 120516,文字导出T3版本时候,是否断开 OPEN_SUB_DICT(_T("文字")); GET_BOOL(_T("混排文字导低版本断开"),g_bDownloadT3Split); CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("符号标注")); OPEN_SUB_DICT(_T("标高标注")) GET_VALUE(_T("空白标高符号默认文字基线长度"), g_dElevTextBaseLen); GET_VALUE(_T("三角高度"), g_dEleTriangleSize); GET_VALUE(_T("圆点直径"), g_dEleDoteSize); GET_VALUE(_T("十字线长"), g_dEleCrossSize); //GET_VALUE(_T("标高符号注释在左侧"), g_bElevFloorsOnLeft); // sg add 110124,多层标高符号中的楼层是否在标高值左侧 GET_VALUE(_T("注释在右侧"), g_bElevFloorsOnRight); // sg add 110301,规范命名,便于用户理解 CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("断面、剖面剖切符号")) GET_VALUE(_T("剖切位置线默认长度"),g_dSectionSegLocLength); GET_VALUE(_T("剖视方向线默认长度"),g_dSectionSegDirLength); CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("索引符号")) GET_VALUE(_T("号圈直径"), g_dIndexPointerDia); //GET_VALUE(_T("索引符号延长线的默认长度"), g_dIndexPointerBaseLen); // sg add 101209 //GET_VALUE(_T("剖切索引剖切线的默认长度"), g_dSectionBaseLen); // sg add 101209 GET_VALUE(_T("延长线无标注文字时默认长度"), g_dIndexPointerBaseLen); GET_VALUE(_T("剖切索引默认剖切线长度"), g_dSectionBaseLen); CLOSE_SUB_DICT(); unsigned int typeSymbTextLayer = 0; GET_VALUE(_T("符号文字导出图层"), typeSymbTextLayer); g_nSymbTextT3Layer = typeSymbTextLayer; GET_VALUE(_T("索引图名号圈直径"),g_dSymbDrawingIndexDia); GET_VALUE(_T("文字距基线默认系数"),g_nText2BaseRatio); GET_VALUE(_T("圆圈文字字高系数"), g_dDrawIndexTextRatio); // sg add 090512 // sg delete 110209,根据讨论,暂时去掉高级选项中的该设置,换成“圆圈文字显示样式” // GET_VALUE(_T("圆圈文字使用旧样式"), g_bDrawIndexOldStyle); // sg add 090612 // GET_VALUE(_T("圆圈文字使用出圈样式"), g_bDIOutCircleStyle); // sg add 110124,圆圈文字支持出圈样式 unsigned int typeDrawingIndex = 0; GET_VALUE(_T("圆圈文字显示样式"), typeDrawingIndex); if (typeDrawingIndex == 0) // 旧样式 { g_bDrawIndexOldStyle = TRUE; g_bDIOutCircleStyle = FALSE; } else if (typeDrawingIndex == 1) // 新样式,不出圈 { g_bDrawIndexOldStyle = FALSE; g_bDIOutCircleStyle = FALSE; } else // 出圈样式 { g_bDrawIndexOldStyle = FALSE; g_bDIOutCircleStyle = TRUE; } unsigned int typeNorthThumbTextDir = 1; GET_VALUE(_T("指北针文字方向"), typeNorthThumbTextDir); // sg add 111221,增加指北针文字方向的设置 g_bNorthThumbTextDir = typeNorthThumbTextDir; OPEN_SUB_DICT(_T("带折断切割线")) GET_VALUE(_T("不打印边颜色号"),g_nCutLineColor);if(g_nCutLineColor<0)g_nCutLineColor=149; CLOSE_SUB_DICT(); OPEN_SUB_DICT(_T("折断线两端出头距离")) // sg add 090512 GET_VALUE(_T("长度界限值"), g_dRuptureLenLimit); GET_VALUE(_T("大于界限值时"), g_dMoreRuptureLimit); GET_VALUE(_T("小于界限值时"), g_dLessRuptureLimit); CLOSE_SUB_DICT(); CLOSE_SUB_DICT(); CLOSE_DICT(); } TARCH_IMPEXP void SaveGlobalToReg() { { CRegProperty regProp(GetRegLocation(), _T("Settings")); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.SetValue(_T("DynDim"), g_bDynDim); regProp.SetValue(_T("ABCoord"), g_bABCoord); //regProp.SetValue(_T("AngleDimArrow"), g_nAngleDimArrow); //regProp.SetValue(_T("LineDimArrow"), g_nLineDimArrow); regProp.SetValue(_T("DimAdjust"), g_nDimAdjust); // sg delete 090608,转移到高级选项及图中保存 // regProp.SetValue(_T("CurtainWallScale"), g_nCurtainWall3Scale); regProp.SetValue(_T("MaxDimGrip"), g_nDimNumGripTip); regProp.SetValue(_T("SpeedMenu"), g_nSpeedMenu); regProp.SetValue(_T("RMenuTimer"), g_nRBtnMenuTime); regProp.SetValue(_T("ModelNumber"), g_bModelNumber); regProp.SetValue(_T("WinStep"), g_nWinStep); regProp.SetValue(_T("WallStep"), g_nWallStep); regProp.SetValue(_T("ZoomKey"), g_bZoomKey); regProp.SetValue(_T("DwgTabBar"), g_bDwgTabBar); regProp.SetValue(_T("HideCaption"),g_bHideCaption); regProp.SetValue(_T("ExplodeType"), g_bExplodeMesh); regProp.SetValue(_T("DragRubber"), g_bDragRubber); regProp.SetValue(_T("DblClkEditObj"),g_bDblClkEditObj); regProp.SetValue(_T("DblClkInplaceEdit"),g_bDClickInplaceEdit); regProp.SetValue(_T("InPlaceEditTextColor"),g_colorInPlaceText); regProp.SetValue(_T("InPlaceEditBkColor"),g_colorInPlaceGround); regProp.SetValue(_T("InPlaceEditFontSize"),g_iInPlaceFontHeight); regProp.SetValue(_T("Dynamic"),g_bDynInput); regProp.SetValue(_T("MaxDynDimNum"),g_iMaxDynDimNum); // sg add 100112,增加“编组”控制 regProp.SetValue(_T("MakeGroup"), g_bMakeGroup); // sg add 100915,增加“文字图层类型”的控制开关 regProp.SetValue(_T("TextDefaultLayer"), g_bTextDefaultLayer); // add by gjm 2014/05/05 regProp.SetValue(_T("SymbolDefaultLayer"), g_bSymbolDefLayer); regProp.SetValue(_T("CoordDefaultLayer"), g_bCoordDefLayer); regProp.SetValue(_T("ElevaDefaultLayer"), g_bElevaDefLayer); // end #if ADS<16 regProp.SetValue(_T("RecentFiles15"),g_sRecentFiles); #else #if ADS==16 regProp.SetValue(_T("RecentFiles16"),g_sRecentFiles); #else regProp.SetValue(_T("RecentFiles17"),g_sRecentFiles); #endif #endif regProp.SetValue(_T("AutoOpenRecent"),g_bAutoOpenRecent); regProp.SetValue(_T("AutoFocus"),g_bAutoFocus); regProp.SetValue(_T("SelectPreview"),g_bEnableSelectPreview); regProp.SetValue(_T("MakeExtSpace"),g_bMakeExtSpace); regProp.SetValue(_T("IgnoreColumn"),g_bIgnoreColumn); regProp.SetValue(_T("MaxAutoUpdateScale"),g_nMaxAutoScale);//wd regProp.SetValue(_T("EnableShortCut"),g_bEnableShortCut);; // sg delete 101125,根据8.5需求,阳台面积按一半计算的数据改到对象中,取消注册表中的全局设置 // regProp.SetValue(_T("BlaconyHalf"),g_bBlaconyHalf); //add by xlc on 090625 } XString sProfile; xg_getvar(_T("CPROFILE"), sProfile); if(!sProfile) sProfile=_T("Settings"); CRegProperty regProp(GetRegLocation(), sProfile); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.SetValue(_T("WalkDistStep"), g_nWalkDistStep); regProp.SetValue(_T("WalkAngleStep"), g_nWalkAngleStep); regProp.SetValue(_T("CirDeviation"), g_nCirDeviation);//wd?分弧精度 regProp.SetValue(_T("CoordPrec"), g_nCoordPrec); regProp.SetValue(_T("CoordArrowStyle"),g_nCoordArrowStyle); regProp.SetValue(_T("SymbArrowStyle"),g_nSymbArrowStyle); { XString sKey; sKey << GetRegLocation() << _T("\\Settings"); CRegProperty reg(sKey, _T("ScreenMenu")); reg.SetTopRootKey(HKEY_CURRENT_USER); reg.SetValue(_T("MenuType"),g_iMenuType); reg.SetValue(_T("ScreenMenuColor0"),g_menuColors[0]); reg.SetValue(_T("ScreenMenuColor1"),g_menuColors[1]); reg.SetValue(_T("ScreenMenuColor2"),g_menuColors[2]); reg.SetValue(_T("ScreenMenuColor3"),g_menuColors[3]); } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Command:步距设置 void WalkStep() { XString sProfile; xg_getvar(_T("CPROFILE"), sProfile); if(!sProfile) sProfile=_T("Settings"); double nAng=g_nWalkAngleStep*180.0/PI; if(GetDist(_T("\n行走步距"), g_nWalkDistStep, RSG_NONEG|RSG_NOZERO)!=RTCAN && GetReal(_T("\n转角步长"), nAng, RSG_NONEG|RSG_NOZERO)!=RTCAN) { g_nWalkAngleStep=CT_std_angle(nAng*PI/180.0); CRegProperty regProp(GetRegLocation(), sProfile); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.SetValue(_T("WalkDistStep"), g_nWalkDistStep); regProp.SetValue(_T("WalkAngleStep"), g_nWalkAngleStep); } } //炸碎成粗线前求解所有墙体的粗线内侧参数 TARCH_IMPEXP void SolidFillOn() { //DocSetDrawMode(DRAW_2D); DocSetIsSolidFill(TRUE); PickSet ssObj(SS_FREE); if(GetEntByDxf(ssObj, _T("ATS_WALL,ATS_COLUMN,TCH_WALLPATCH"), 1)==Acad::eOk) { UpdateGraphic(ssObj); } adsout << _T("<墙体填充开>"); int nCmdActive=0; xg_getvar(_T("CMDACTIVE"), &nCmdActive); if(!nCmdActive) acedPostCommandPrompt(); } TARCH_IMPEXP void SolidFillOff() { DocSetIsSolidFill(FALSE); PickSet ssObj(SS_FREE); if(GetEntByDxf(ssObj, _T("ATS_WALL,ATS_COLUMN,TCH_WALLPATCH"), 1)==Acad::eOk) UpdateGraphic(ssObj); adsout << _T("<墙体填充关>"); int nCmdActive=0; xg_getvar(_T("CMDACTIVE"), &nCmdActive); if(!nCmdActive) acedPostCommandPrompt(); } TARCH_IMPEXP void BoldLineOn() { DocSetIsLineWeight(TRUE); PickSet ssObj(SS_FREE); if(GetEntByDxf(ssObj, _T("ATS_WALL,ATS_COLUMN,TCH_WALLPATCH"), 1)==Acad::eOk) { UpdateGraphic(ssObj); } adsout << _T("<墙线加粗开>"); int nCmdActive=0; xg_getvar(_T("CMDACTIVE"), &nCmdActive); if(!nCmdActive) acedPostCommandPrompt(); } TARCH_IMPEXP void BoldLineOff() { DocSetIsLineWeight(FALSE); PickSet ssObj(SS_FREE); if(GetEntByDxf(ssObj, _T("ATS_WALL,ATS_COLUMN,TCH_WALLPATCH"), 1)==Acad::eOk) UpdateGraphic(ssObj); adsout << _T("<墙线加粗关>"); int nCmdActive=0; xg_getvar(_T("CMDACTIVE"), &nCmdActive); if(!nCmdActive) acedPostCommandPrompt(); } ////////////////////////////////////////////////// // Command: 开关基线的显示 // 系统变量_T("WallBaseLine"), 保存在OS注册表中 TARCH_IMPEXP void TogWallBase() { TDonotMonitorMe vTemp; int nVal=g_bShowBase+1; if(nVal>2) nVal=0; DocSetShowBase(nVal); PickSet ss(SS_FREE); if(GetEntByDxf(ss, _T("ATS_WALL,ATS_CURTAIN_WALL"), 1)==Acad::eOk) { UpdateGraphic(ss); } } // Command: 开关基线的显示 // 系统变量_T("WallBaseLine"), 保存在OS注册表中 TARCH_IMPEXP void ToggleWallBase() { TDonotMonitorMe vTemp; if(g_bShowBase) { DocSetShowBase(FALSE); adsout << _T("<墙基线关>"); } else { DocSetShowBase(TRUE); adsout << _T("<墙基线开>"); } PickSet ss(SS_FREE); if(GetEntByDxf(ss, _T("ATS_WALL,ATS_CURTAIN_WALL"),1)==Acad::eOk) { UpdateGraphic(ss); } int nCmdActive=0; xg_getvar(_T("CMDACTIVE"), &nCmdActive); if(!nCmdActive) acedPostCommandPrompt(); } ////////////////////////////////////////////////// // Command: 开关画墙模式的(设计/测量) // 系统变量_T("DrawWall"), 保存在OS注册表中 TARCH_IMPEXP void TogDrawWall() { DocSetDrawWall(!g_nDrawWall); CRegProperty regProp(GetRegLocation(), _T("Settings")); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.SetValue(_T("DrawWall"), g_nDrawWall); } TARCH_IMPEXP void ToggleModelNumber() { g_bModelNumber=!g_bModelNumber; adsout << _T("<模数") << (g_bModelNumber? _T("开>") : _T("关>")); int nCmdActive=0; xg_getvar(_T("CMDACTIVE"), &nCmdActive); if(!nCmdActive) acedPostCommandPrompt(); CRegProperty regProp(GetRegLocation(), _T("Settings")); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.SetValue(_T("ModelNumber"), g_bModelNumber); } // 透明命令 void DragRubber() { adsout << _T("\n自由复制的拖动方式<") << g_bDragRubber << _T(">:"); ads_initget(RSG_NONEG, NULL); if(ads_getint(_T(""), &g_bDragRubber)==RTNORM) { if(g_bDragRubber) g_bDragRubber=TRUE; CRegProperty regProp(GetRegLocation(), _T("Settings")); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.SetValue(_T("DragRubber"), g_bDragRubber); } } ////////////////////////////////////////////////////////////////////// int GetCoordPrec2() { return ads_retint(DocGetPrec2()); } int SetCoordPrec2() { BOOL bVal=DocGetPrec2(); DocSetPrec2(!bVal); return ads_retint(DocGetPrec2()); } int GetDynamicCoord() { return ads_retint(g_bDynamicCoord); } int SetDynamicCoord() { g_bDynamicCoord=!g_bDynamicCoord; return GetDynamicCoord(); } // sg add 100824,增加编组开关 int GetMakeGroupState() { return ads_retint(g_bMakeGroup); } int SetMakeGroupState() { g_bMakeGroup=!g_bMakeGroup; // sg add 100915,根据编组按钮的状态,修改系统变量值 int nPickStyle = 0; TGGetVar(_T("pickstyle"), &nPickStyle); if (nPickStyle==0 || nPickStyle==1) { nPickStyle = g_bMakeGroup?1:0; } else { nPickStyle = g_bMakeGroup?3:2; } TGSetVar(_T("pickstyle"), nPickStyle); return GetMakeGroupState(); } // sg add 100915,增加文字图层控制开关 int TARCH_IMPEXP GetTextLayerChange() { return ads_retint(g_bTextDefaultLayer); } int TARCH_IMPEXP SetTextLayerChange() { g_bTextDefaultLayer = !g_bTextDefaultLayer; return GetTextLayerChange(); } // add by gjm 2015/05/05 bool TARCH_IMPEXP GetSymbolDefLayer() { return g_bSymbolDefLayer; } bool TARCH_IMPEXP SetSymbolDefLayer() {g_bSymbolDefLayer = !g_bSymbolDefLayer; return GetSymbolDefLayer();} bool TARCH_IMPEXP GetCoordDefLayer() { return g_bCoordDefLayer; } bool TARCH_IMPEXP SetCoordDefLayer() {g_bCoordDefLayer = !g_bCoordDefLayer; return GetCoordDefLayer();} bool TARCH_IMPEXP GetElevaDefLayer() { return g_bElevaDefLayer; } bool TARCH_IMPEXP SetElevaDefLayer() {g_bElevaDefLayer = !g_bElevaDefLayer; return GetElevaDefLayer();} // end int GetABCoord() { return ads_retint(g_bABCoord); } int SetABCoord() { g_bABCoord=!g_bABCoord; CRegProperty regProp(GetRegLocation(), _T("Settings")); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.SetValue(_T("ABCoord"), g_bABCoord); return GetABCoord(); } int GetSolidFillState() { ads_retint(DocGetIsSolidFill()); return RTNORM; } int SetSolidFillState() { if(DocGetIsSolidFill()) SolidFillOff(); else SolidFillOn(); return GetSolidFillState(); } int GetBoldLineState() { ads_retint(DocGetIsLineWeight()); return RTNORM; } int SetBoldLineState() { if(DocGetIsLineWeight()) BoldLineOff(); else BoldLineOn(); return GetBoldLineState(); } int GetSpaceAreaState() { int nSpCode=DocGetSpaceDispMode(); BOOL bShow=(nSpCode&SPF_AREA)!=0; ads_retint(bShow); return RTNORM; } int GetSpaceUnitState() { int nSpCode=DocGetSpaceDispMode(); BOOL bShow=(nSpCode&SPF_UNIT)!=0; ads_retint(bShow); return RTNORM; } int SetSpaceAreaState() { int nSpCode=DocGetSpaceDispMode(); BOOL bShow=(nSpCode&SPF_AREA)!=0; bShow=!bShow; if(bShow) nSpCode|=SPF_AREA; else nSpCode &= ~SPF_AREA; DocSetSpaceDispMode(nSpCode); ads_retint(bShow); return RTNORM; } int SetSpaceUnitState() { int nSpCode=DocGetSpaceDispMode(); BOOL bShow=(nSpCode&SPF_UNIT)!=0; bShow=!bShow; if(bShow) nSpCode|=SPF_UNIT; else nSpCode &= ~SPF_UNIT; DocSetSpaceDispMode(nSpCode); ads_retint(bShow); return RTNORM; } int GetDimChkState() { return ads_retint(DocGetCheckDim()); } int SetDimChkState() { BOOL bNewCheck=!DocGetCheckDim(); DocSetCheckDim(bNewCheck); PickSet ssUpdate(SS_FREE); if(GetEntByDxf(ssUpdate, _T("ATS_DIMENSION2"), 0)==Acad::eOk) { UpdateGraphic(ssUpdate); } return GetDimChkState(); } int GetDimAdjState() { ads_retint(g_nDimAdjust); return RTNORM; } int SetDimAdjState() { g_nDimAdjust++; //=!g_nDimAdjust; if(g_nDimAdjust>2) g_nDimAdjust=0; return GetDimAdjState(); } int GetBaselineState() { return ads_retint(DocGetShowBase()); } int SetBaselineState() { TogWallBase(); return GetBaselineState(); } int Is2DOnly() { if(DocGetDrawMode()==DRAW_2D) ads_rett(); return RTNORM; } int Is3DOnly() { if(DocGetDrawMode()==DRAW_3D) ads_rett(); return RTNORM; } int Is2Dand3D() { if(DocGetDrawMode()==DRAW_2D+DRAW_3D) ads_rett(); return RTNORM; } int GetPScale() { double nScale=DocGetPScale(); int cvport; VERIFY(xg_getvar(_T("CVPORT"), &cvport)==RTNORM); if(cvport==1) nScale=1.0; return ads_retint( AS_INT(nScale)); } int SetPScale() { resbuf *rbArg=ads_getargs(); if(rbArg) { if(rbArg->restype==RTSHORT) { double nScale=rbArg->resval.rint; if(nScale>1.0E-3) { if(DocSetPScale(nScale)) xg_setvar(_T("HPSCALE"), nScale); DocStatus(); } } else if(rbArg->restype==RTREAL) { double nScale=rbArg->resval.rreal; if(nScale>1.0E-3) { if(DocSetPScale(nScale)) xg_setvar(_T("HPSCALE"), nScale); DocStatus(); } } ads_relrb(rbArg); } return RTNORM; } int TMakeBlock() { resbuf *rbArg=ads_getargs(); RBList rbBuf=rbArg; if(rbArg && rbArg->restype==RTPICKS) { PickSet ss(SS_FREE); ss = rbArg->resval.rlname; if(!g_nRunMode) { XPoint ptLow, ptUp; ss.GetExtend(ptLow, ptUp); XString sName; if(ss.MakeAnonymous(ptLow, sName, FALSE)==RTNORM) { MakeTBlockInsert(sName, ptLow, 1.0, 1.0, 1.0, 0.0, 0); ads_rett(); return RTNORM; } } } ads_retnil(); return RTNORM; } int GetPfx() { 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; ads_retstr(dir); return RTNORM; } int GetLispPath() { 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; if(g_nRunMode) _tcscat(dir, _T("LISP2D\\")); else _tcscat(dir, _T("LISP\\")); ads_retstr(dir); return RTNORM; } int Circle2Polyline() { resbuf *rbArg=ads_getargs(); if(rbArg && rbArg->restype==RTENAME) { Entity ent; ent = rbArg->resval.rlname; if(ent.Is(_T("CIRCLE"))) { XCircle cir(ent); XCurveSegment seg; seg=cir; XPoly2D poly; seg.AsPoly2D(poly); AcDbPolyline *pline=new AcDbPolyline; PolyConvert(poly, *pline); AcDbEntity *pCir=NULL; AcDbObjectId id; acdbGetObjectId(id, ent); if(acdbOpenObject(pCir, id, AcDb::kForWrite)==Acad::eOk && pCir) { pline->setPropertiesFrom(pCir); Acad::ErrorStatus es=pCir->handOverTo(pline); if(es==Acad::eObjectToBeDeleted) { pline->close(); delete pCir; ads_rett(); } else { pCir->close(); delete pline; } } } } if(rbArg) ads_relrb(rbArg); return RTNORM; } int TDocStatus() { DocStatus(); ads_retvoid(); return RTNORM; } int ApplyLayerChange() { extern void InitLayers(BOOL bTrue); InitLayers(FALSE); InitLayers(TRUE); return RTNORM; } int DragTitle() { extern TARCH_IMPEXP int DragMovePickSet(PickSet &ss, const TCHAR *pszPrompt, const XPoint &ptBase, XPoint &ptFinal); resbuf *rbArg=ads_getargs(); if(rbArg && rbArg->restype==RTPICKS) { PickSet ss(SS_FREE); ss = rbArg->resval.rlname; //modified by whl for UCS XPoint ptLow, ptUp; double angle=Ucs2Wcs(0.0); if(fabs(angle)>0.00001) { ads_matrix mat; XPoint pt; pt.GetRotationMatrix(angle,mat); XPushVar osmode(_T("OSMODE"), 0); SHads_command(RTSTR, _T(".ROTATE"), RTPICKS, (TLong_ptr*)ss, RTSTR, _T(""),RT3DPOINT,&pt, RTREAL, -angle*180/PI, RTNONE); ss.GetExtend(ptLow, ptUp); SHads_command(RTSTR, _T("ROTATE"), RTPICKS, (TLong_ptr*)ss, RTSTR, _T(""),RT3DPOINT,&pt, RTREAL, angle*180/PI, RTNONE); ptLow.TransformBy(mat); } else ss.GetExtend(ptLow,ptUp); XPoint ptLimMin; VERIFY(xg_getvar(_T("LIMMIN"), ptLimMin)==RTNORM); adsout << _T("\n图框位置<") << Dist2Str(ptLimMin.x) << _T(",") << Dist2Str(ptLimMin.y) << _T(">:"); XPoint xp; int nRet= TchExport::DragMovePickSet(ss, _T(""), Wcs2Ucs(ptLow), xp); if(nRet==RTNORM) ; else if(nRet==RTNONE) { ptLow=Wcs2Ucs(ptLow); XPushVar osmode(_T("OSMODE"), 0); SHads_command(RTSTR, _T(".MOVE"), RTPICKS, (TLong_ptr *)ss, RTSTR, _T(""), RT3DPOINT, &ptLow, RT3DPOINT, &ptLimMin, RTNONE); } else ss.Erase(); } if(rbArg) ads_relrb(rbArg); ads_retvoid(); return RTNORM; } ////////////////////////////////////////////////////////////// // 配合二维工具集 // 窗-门-高窗循环切换 int GetWDState() { int _wdins=1; if(xg_getsym(_T("_wdins"), &_wdins)!=RTNORM) { _wdins=1; xg_putsym(_T("_wdins"), 1); } return ads_retint(_wdins); } int SetWDState() { int _wdins=1; if(xg_getsym(_T("_wdins"), &_wdins)==RTNORM) { _wdins++; if(_wdins>3) _wdins=1; xg_putsym(_T("_wdins"), _wdins); } else { _wdins=1; xg_putsym(_T("_wdins"), 1); } return ads_retint(_wdins); } // 自调开关 int GetDamnu1() { resbuf *v=NULL; if(ads_getsym(_T("_dim_auto"), &v)!=RTNORM || !v) return ads_retint(0); ads_retint(v->restype==RTNIL? 0 : 1); ads_relrb(v); //int _dim_auto=1; // t--自调开, nil--自调关 return RTNORM; } int SetDamnu1() { resbuf *v=NULL; if(ads_getsym(_T("_dim_auto"), &v)!=RTNORM || !v) { resbuf *rb = ads_buildlist(RTT, NULL); //rb.restype=RTT; ads_putsym(_T("_dim_auto"), rb); ads_retint(1); ads_relrb(rb); } else { int nVal= v->restype==RTNIL? 0 : 1; nVal=!nVal; //resbuf rb; v->restype = nVal? RTT:RTNIL; VERIFY(ads_putsym(_T("_dim_auto"), v)==RTNORM); ads_retint(nVal); ads_relrb(v); } return RTNORM; } // _up_down: t--上调, nil--下调 int GetLineThick() { double nThick=DocGetHighBold(); ads_retreal(nThick); return RTNORM; } ////////////////////////////////////////////////////////////////////////////// TARCH_IMPEXP void ToggleOsnapWall() { DocSetWallOsnapType(!g_nOsnapType); adsout << _T("<墙体捕捉") << (g_nOsnapType? _T("边线>") : _T("基线>")); int nCmdActive=0; xg_getvar(_T("CMDACTIVE"), &nCmdActive); if(!nCmdActive) acedPostCommandPrompt(); CRegProperty regProp(GetRegLocation(), _T("Settings")); regProp.SetTopRootKey(HKEY_CURRENT_USER); regProp.SetValue(_T("OsnapWall"), g_nOsnapType); } void TogIntWall() { DocSetInt3DWallVisible(!g_bIntWall3DVisible); RBList mask(RTDXF0, _T("ATS_WALL,ATS_CURTAIN_WALL,ATS_OPENING"), NULL); PickSet ss(SS_FREE); if(ss.Get(_T("X"), NULL, NULL, mask)==RTNORM) { UpdateGraphic(ss); } } // Command: void CurLayerHeight() { double nHeight=DocGetLHeight(); if(GetDist(_T("\n当前层高"), nHeight, RSG_NONEG|RSG_NOZERO)==RTNORM) { DocSetLHeight(nHeight); } } void Text2Base() { double nDist2Base=DocGetText2Base(); if(GetReal(_T("\n文字距离基线"), nDist2Base, RSG_NONEG|RSG_NOZERO)==RTNORM) { DocSetText2Base(nDist2Base); } } void DblClkEdit() { int nAns=YesNoQuestion(_T("\n鼠标双击是否进行对象编辑"),g_bDblClkEditObj); if(nAns==RTCAN) return; g_bDblClkEditObj=nAns!=Q_NO; } int LevelLine() { int nAns=YesNoQuestion(_T("\n是否隐去层间线"), !DocGetLevelLine()); if(nAns==RTCAN) return RTNORM; DocSetLevelLine(nAns==Q_NO); return RTNORM; } TARCH_IMPEXP const TCHAR * GetRegLocation() { return (const TCHAR *)g_szRegLoc; } TARCH_IMPEXP int GetCustomFlag() { return g_nCustomFlag; } // Command: void CurPScale() { double nHeight=DocGetPScale(); if(GetReal(_T("\n当前比例"), nHeight, RSG_NONEG|RSG_NOZERO)==RTNORM) { if(DocSetPScale(nHeight)) xg_setvar(_T("HPSCALE"), nHeight); } DocStatus(); } int SpaceSwitch() { PickSet ssSpaces(SS_FREE); RBList spaceMask(RTDXF0, _T("ATS_SPACE"), NULL); ssSpaces.Get(_T("X"), NULL, NULL, spaceMask); int nSpFlag=DocGetSpaceDispMode(); if(nSpFlag&SPF_CODE) { nSpFlag &= ~SPF_CODE; } else { nSpFlag |= SPF_CODE; } DocSetSpaceDispMode(nSpFlag); UpdateGraphic(ssSpaces); return RTNORM; } int IsAcad2002sc() { extern double g_nAcadVer; // sg modify 120228,自R19平台起,API进行了调整,下面的函数作废了 //const TCHAR *pszRegAcad=acrxProductKey(); const TCHAR *pszRegAcad=NULL; #if (ADS > 18) pszRegAcad = acdbHostApplicationServices()->getMachineRegistryProductRootKey(); #else pszRegAcad = acrxProductKey(); #endif ASSERT(pszRegAcad); XString sRegAcad, sReg1, sReg2; sRegAcad=pszRegAcad; BOOL bCont=FALSE;; int nCount=sRegAcad.Length(); for(int n=nCount-1; n>=0; n--) { if(sRegAcad[n]==_T('\\')) { if(n==nCount-1) return RTERROR; StrCpy(sReg1, sRegAcad, &sRegAcad[n]); StrCpy(sReg2, &sRegAcad[n+1], NULL); bCont=TRUE; break; } } if(!bCont) return RTERROR; CString csLangAbbrev; CRegProperty regProp(sReg1, sReg2); regProp.SetTopRootKey(HKEY_LOCAL_MACHINE); regProp.GetValue(_T("LangAbbrev"), csLangAbbrev); if(_tcsicmp(csLangAbbrev, _T("chs"))==0 && fabs(TchGeLib::g_nAcadVer-15.06)<1.0E-6) ads_rett(); else ads_retnil(); return RTNORM; } // sg add 091222,增加一个版本信息的命令,主要考虑知道插件的版本信息 void TPlugBbxx() { XString sTchIni; if (!FindFile(_T("tch.ini"), sTchIni)) { acutPrintf(_T("找不到上华配置文件,无法获取版本信息! ")); return; } // 获得标题 CString sTittle; GetPrivateProfileString(_T("Product"), _T("Title"), _T("TPlugIn8.0"), sTittle.GetBuffer(MAX_PATH), MAX_PATH, sTchIni); sTittle.ReleaseBuffer(); // 获得版本信息 CString sSubVer; GetPrivateProfileString(_T("Product"), _T("SubVer"), _T("Build091225"), sSubVer.GetBuffer(MAX_PATH), MAX_PATH, sTchIni); sSubVer.ReleaseBuffer(); // 对版本信息进行组合 CString sResult; sResult = sTittle + _T(" ") + sSubVer; // 输出 acutPrintf(sResult); } //监控系统消息类 和 选择集类声明 int THookMsg::s_iValue = -1; THookMsg::THookMsg() { acedRegisterFilterWinMsg(ListenMsg); } THookMsg::~THookMsg() { acedRemoveFilterWinMsg(ListenMsg); } int THookMsg::GetValue() { int iRe = s_iValue; s_iValue = -1; return iRe; } #if ADS > 22 bool THookMsg::ListenMsg(MSG* pMsg) #else BOOL THookMsg::ListenMsg(MSG* pMsg) #endif { switch (pMsg->message) { case WM_RBUTTONDOWN: { s_iValue = 1; } break; case WM_LBUTTONDOWN: { s_iValue = 0; } break; case WM_KEYDOWN: { if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_SPACE) { s_iValue = 2; } else if (pMsg->wParam == VK_ESCAPE) { s_iValue = 3; } } break; default: break; } return(false);//消息继续传递下去 }