Files
envi-code/SourceCode/Code2026/tg_shs/shs_kerncmd/KernCmd.cpp
T

1524 lines
51 KiB
C++
Raw Normal View History

2026-09-28 15:28:50 +08:00
// KernCmd.cpp : Defines the initialization routines for the DLL.
//
// KernCmd.cpp : Defines the initialization routines for the DLL.
//
#include "stdafx.h"
#include <afxdllx.h>
#include "actrans.h"
#include "rxregsvc.h"
#include "optionSheet.h"
#include "projectManager.h"
#include "ximage.h"
#include "LayerManager.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// 2010年3月15日 wubo
// 移植Geo
// 原来的方式
// MY_RES_HERE;
// static AFX_EXTENSION_MODULE KernCmdDLL = { NULL, NULL };
#if (ADS<=14)
extern "C" HINSTANCE _hdllInstance;
#else
// extern "C" {
HINSTANCE _hdllInstance = NULL;
AC_IMPLEMENT_EXTENSION_MODULE(KernCmdDLL);
// }
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// 2010年3月15日,wubo
// 移植Geo
// 修改为标准方式
if (dwReason == DLL_PROCESS_ATTACH)
{
_hdllInstance = hInstance;
KernCmdDLL.AttachInstance(hInstance);
//InitAcUiDLL();
}
else if (dwReason == DLL_PROCESS_DETACH)
{
KernCmdDLL.DetachInstance();
}
return TRUE;
// 原来的方式
//_hdllInstance = hInstance;
//return 1; // ok
}
#endif
extern "C" BOOL APIENTRY // name modified
InitModule(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) // name modified
{
if (dwReason == DLL_PROCESS_ATTACH)
{
// [2010-3-16 10:50 wubo] 移植到新Geo库
//// Extension DLL one-time initialization
//if (!AfxInitExtensionModule(KernCmdDLL, hInstance))
// return 0;
//CAcModuleResourceOverride::SetDefaultResource(hInstance);
//// Insert this DLL into the resource chain
//new CDynLinkLibrary(KernCmdDLL);
// Init for AOL
// InitAol(APPNAME);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
// [2010-3-16 10:50 wubo] 移植到新Geo库
// AfxTermExtensionModule(KernCmdDLL);
}
return TRUE; // ok
}
void OnLoadApp();
void OnUnloadApp();
int OnDwgLoaded();
int OnDoFunc();
extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg) {
case AcRx::kInitAppMsg:
InitModule(_hdllInstance, DLL_PROCESS_ATTACH, NULL);
acrxUnlockApplication(pkt);
#if (ADS>14)
acrxDynamicLinker->registerAppMDIAware(pkt);
#endif
OnLoadApp();
break;
case AcRx::kLoadDwgMsg:
OnDwgLoaded();
break;
case AcRx::kInvkSubrMsg:
OnDoFunc();
break;
case AcRx::kSaveMsg:
break;
case AcRx::kUnloadDwgMsg: // Bug no message coming
break;
case AcRx::kUnloadAppMsg:
OnUnloadApp();
InitModule(_hdllInstance, DLL_PROCESS_DETACH, NULL);
break;
}
return AcRx::kRetOK;
}
extern XString g_sSectWinBlock;
TARCH_IMPEXP extern BOOL g_bProjectBarVisible;
TARCH_IMPEXP extern BOOL g_bAutoOpenRecent;
extern BOOL g_bProjectBarDockLeft;
extern int g_iProjectBarWidth;
extern int g_iProjectBarUnFoldFlags;
void OpPrototype();
void GiveUpOpPrototype();
void Win2Lib();
void ChExtWallElev(); // 增加
void EditObj();
void BrkWall();
void BrkWallEx();// add wlw
void DrWall();
void ChExtWallThick();
void MarkExtWall();
void MarkIntWall();
void ShapeWall();
void DelWallShape();
void AlignWall();
void WRect();
void WArc();
void WCir();
void Walls();
void ChSWall();
void AddInsulate();
void DelInsulate();
void FilletWall();
void OffsetWall();
void HLExtWall();
void SDWall();
void ChamferWall(); // add by xlc
void RemoveDupEnt();
void SetWallMater();
// void SetColuMater();
void ChHeight();
void UcsWall();
// void ChMater();
void ChWallThick();
void ChWallTerm();
// 由墙边线偏移出线或弧
void Wall2Curve();
void DivideWall();
void MarkWall();
void SanShui();
void SanShui3d();
void ElevDiffIO();
void RoofOutline();
void SpaceArea();
void SpaceArea1();
// 搜索房间
void AskSpArea();
void SpOutline();
void SpGround();
void FloorArea();
void ProjectArea();
void ShareArea(); // 公摊面积 add by fxj 080624
void SortSpaceCodeCmd(); // 房间排序,sg add 081215
// 门窗命令
void InsWDH();
void InsBayWDH();
void InsHoleWDH();
void ReplaceWDH();
void BanOpening(); // 带窗
void ChHWin();
void InsDoorWin();
void InsHWin();
void InsWin();
void InsAWin();
void InsDoor();
void InsHole();
void ProWin();
void OpSlot();
void InsBayWin();
void PolyHole();
void HighLevelWin();
void ChangeOpeningWidth();
void DelOpSlot();
void DupHLOpening();
void ChWinLab();
void ValidateOpening();
void BatNameOpening();
void ExpandWinFrame();
void MapWinFrame();
void WinLib2d();
void DoorLib2d();
void WDLib3d();
void EWinLib();
void EDoorLib();
void EBalLib();
void RailLib();
// 柱子命令
void PolyColu();
void Column2D();
void ShapeColu();
void CornerColumn();
void AddPatch();
void SubPatch();
void ManualUpdatePatch();
void AutoUpdatePatch();
void InitSet();
void ExportTch();
// 统计命令
void Statics();
void StaticExtBlocks();
// void MergeOpeningTable();
void InsertDbf();
void OpenEx();
void ArchSet();
void ConvertRoof();
void DualSlopeRoof();
void CuspRoof();
// [2/19/2008 nsh]
// -------begin-------
void ConvertRoof2();
void DualSlopeRoof2();
void CuspRoof2();
// --------end--------
void MountRoof(); // add by xlc on 081202
void MountRoof2(); // ywb 090914 for TSun8.0矩形屋顶支持M单位绘图
// [4/9/2008 nsh]
// 新楼梯的操作函数
void CrossStair();
void ParallelStair();
void ScissorsStair();
void CornerStair();
void DoubleMulStair();
void TriangleStair();
void RectCornerStair();
void AutoStair();
// ------------------
void CreateDormer();
void ModifyDormer();
void ElevUcs();
void ConvertTch();
void RainPipe(); // 加雨水管.add by zyu on 100118
void ConvertCurtain();
void Poly2Step();
// sg add 111130,根据9.0需求,增加踏步切换命令
void StepStoneSwitchCmd();
void Poly2Balcony();
// sg add 111129,根据9.0需求,增加栏板切换命令
void RailingSwitchCmd();
void Poly2Slab();
void VertSlab();
void LineStair();
void ArcStair();
void CurveStair();
void RectStair();
void Elevator();
void Poly2Rail();
void CurveMesh();
void Rail();
void Ascent();
void DragCopy();
void DragMove();
void RelMove();
void T3DOrbit();
void RevPline();
void IRender();
void IGroupFloor();
void IConvert2D();
void GroupFloor();
void ConvertTo2D();
void ChScale();
void UpdateDwgView();
void GetExtend();
void SaveLayoutConfig();
void RestoreLayoutConfig();
void MakeLayoutViewport();
// Test Command
void CheckXD();
void ConvDoor2d();
void ConvWin2d();
void ConvDoor3d();
void ConvWin3d();
void ExplDwb();
void ExplWD3d();
void ConvertTgLib();
void ConvSaniware();
void TestLineType();
void ConvertSysLib();
void TestPt();
void TestPolyInput();
void ModifyElev1();
void ModifyElev();
void ConvertReliefmap();//转地形图
// 面积累加
// void PlusText();
void PasteClip();
void SearchBound();
void TestConv();
void TestColu();
// sg delete 100120,两个视口放大命令合并,统一为旧的TMaxVport
// void PMaxVport(); // add by zyu on 10/01/12
void MaxVport();
void ResVport();
void Camera();
void CamLocator();
void PathVideo();
void WalkVideo();
void TestSub();
void TestUnion();
void ConvertExtra();
void xdRemoveDup();
void OnWhichWall();
void SplitPoly();
void ZoomExtAll();
void CutDrawing();
void ThickCurve2Face();
void ResetLabPos();
void LabelFix();
void UnHideEdge();
// Test command
void UpdateDwb();
void ListLinkWall();
void TestIntSWall();
void TestHatch();
void TGif2Jpg();
void TTga2Jpg();
void TestSpace();
void TestAppId();
void HitLine();
void HitTriangle();
void FlatBlock();
void SplitCurve();
void NewMater();
void TransMvInsert();
void UpdateMvLib();
void TestRender();
void SymbCut();
void BuildOutLine();//建筑轮廓
// add by gjm for katana 2013/08/05
void CreateKanata();
// test
void InputKey(const TCHAR &key);
void InputString(LPCTSTR psz)
{
CWnd *pWnd = acedGetAcadTextCmdLine();
if (!pWnd) return;
bool bFind = false;
HWND hChildWnd = ::GetWindow(pWnd->GetSafeHwnd(), GW_CHILD);
while (hChildWnd != NULL)
{
if (2 == GetDlgCtrlID(hChildWnd))
{
bFind = true;
break;
}
hChildWnd = ::GetNextWindow(hChildWnd, GW_HWNDNEXT);
}
if (!bFind) return;
::SetFocus(hChildWnd);
CString str(psz);
for (int i = 0; i < str.GetLength(); ++i)
{
InputKey(str[i]);
}
// ::Sleep(100);
// if (acedGetAcadDwgView())
// ::SetFocus(acedGetAcadDwgView()->GetSafeHwnd());
// else
// ::SetFocus(acedGetAcadFrame()->GetSafeHwnd());
}
void InputKey(const TCHAR &key)
{
CWnd *pWnd = acedGetAcadTextCmdLine();
if (!pWnd) return;
bool bFind = false;
HWND hChildWnd = ::GetWindow(pWnd->GetSafeHwnd(), GW_CHILD);
while (hChildWnd != NULL)
{
if (2 == GetDlgCtrlID(hChildWnd))
{
bFind = true;
break;
}
hChildWnd = ::GetNextWindow(hChildWnd, GW_HWNDNEXT);
}
if (!bFind) return;
// ::SetFocus(hChildWnd);
TCHAR keyUp(key), keyDown(key);
do
{
if (key <= 90 && key >= 65) // 大写
{
keyDown += 32; // 转小写
break;
}
else if (key <= 122 && key >= 97) // 小写
{
keyUp -= 32; // 转大写
break;
}
else if (key == VK_RETURN || key == VK_SPACE || key == VK_ESCAPE)
break;
else
return;
} while (false);
LPARAM lp = 0;
lp = 0x1 | (LPARAM)(MapVirtualKey(key, 0) << 16);
::PostMessage(hChildWnd, WM_KEYDOWN, (WPARAM)keyUp, lp);
// ::PostMessage(hChildWnd, WM_CHAR, keyDown, lp);
lp |= 0x40000000;
lp |= 0x80000000;
//::PostMessage(hChildWnd, WM_KEYUP, keyUp, lp);
}
#include <sstream>
#include <iomanip>
void EnumXDataMap()
{
ads_name name;
ads_point pt;
if (RTNORM != acedEntSel(_T("选择一个实体"), name, pt)) return;
OPENOBJ_BEGIN(name, AcDb::kForRead, AcDbEntity, p)
{
if (!p) return;
TEntityBase *pEnt = TDbCurveEntity::cast(p);
if (!pEnt)
pEnt = TDbEntity::cast(p);
if (!pEnt) return;
TDbXDataMap *pMap = pEnt->GetSpecialtyData();
if (!pMap) return;
CString sType(_T(""));
std::wostringstream stds;
acutPrintf(_T("\n/++++++++++++++++++++++++++++++++++++++++++++++/"));
for (TDbXDataMap::ItC it = pMap->Begin(); it != pMap->End(); ++it)
{
stds.str(_T(""));
const TXData &data = it->second;
switch (data.nVt)
{
case VT_I4:
sType = _T("INT");
stds << data.nVal;
break;
case VT_BSTR:
sType = _T("STRING");
stds << data.pszVal;
break;
case VT_R8:
sType = _T("REAL");
stds << data.dVal[0];
break;
case VT_BYREF|VT_R8:
case VT_BYREF|VT_R8+1:
sType = _T("POINT");
stds << _T("x:") << data.dVal[0] << std::endl
<< _T("y:") << data.dVal[1] << std::endl
<< _T("z:") << data.dVal[2];
break;
case VT_BYREF|VT_R8+2:
case VT_BYREF|VT_R8+3:
sType = _T("VECTOR");
stds << _T("x:") << data.dVal[0] << std::endl
<< _T("y:") << data.dVal[1] << std::endl
<< _T("z:") << data.dVal[2];
break;
case VT_BYREF | VT_R8 + 4:
sType = _T("MATRIX");
break;
case VT_UI4:
case VT_UI8:
sType = _T("ID");
stds << std::hex << data.nVal;
break;
default:
sType = _T("未知");
break;
};
acutPrintf(_T("\n|\tKey : %s"), it->first);
acutPrintf(_T("\n|\tType : %s"), sType);
acutPrintf(_T("\n|\tLength : %d"), data.npszLen);
acutPrintf(_T("\n|\tValue : %s"), stds.str().c_str());
acutPrintf(_T("\n|-------------------------"));
}
acutPrintf(_T("\n/++++++++++++++++++++++++++++++++++++++++++++++/"));
}
OPENOBJ_END()
}
// end
// ADS命令表
//static ArxCommandTable g_cmdTable[] = {
//{_T("TViewDataMap"), EnumXDataMap, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TKatana"), CreateKanata, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TGif2Jpg"), TGif2Jpg, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},// toolcmd
//{_T("TTga2Jpg"), TTga2Jpg, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},// toolcmd
//{_T("TOpen"), OpenEx, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},// toolcmd
//{_T("TPasteClip"), PasteClip, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TChamfer"), ChamferWall, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},// add by xlc
//{_T("TFILLET"), FilletWall, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TUcsWall"), UcsWall, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TDormer"), CreateDormer,ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TCamera"), Camera, ACRX_CMD_MODAL | ACRX_CMD_DEFUN}, // 为了能够调用Command
//{_T("TCamLocator"), CamLocator, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},
//{_T("TCutDrawing"), CutDrawing, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},
//{_T("TCurve2Face"), ThickCurve2Face, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TUnHideEdge"), UnHideEdge, ACRX_CMD_MODAL},// toolcmd
//{_T("TRemoveDupObj"), RemoveDupEnt, ACRX_CMD_MODAL},
//{_T("TMove"), RelMove, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TDragMove"), DragMove, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TDragCopy"), DragCopy, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},// toolcmd
//{ _T("TModElev"), ModifyElev, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},// toolcmd
//{ _T("TModElev1"), ModifyElev1, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TMaxVport"), MaxVport,ACRX_CMD_MODAL | ACRX_CMD_DEFUN},// toolcmd
//{_T("TResVport"), ResVport,ACRX_CMD_MODAL | ACRX_CMD_DEFUN},// toolcmd
//{_T("TConvertReliefmap"), ConvertReliefmap, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},//转地形图
//{_T("TMap2D"), ConvertTo2D, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("_IGroupFloor"), IGroupFloor, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},
//{_T("_IMap2D"), IConvert2D, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},
//{_T("_IZoomExt"), ZoomExtAll, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},
//{_T("TWinLib2d"), WinLib2d, ACRX_CMD_MODAL | ACRX_CMD_DEFUN}, // 二维窗库
//{_T("TDoorLib2d"), DoorLib2d, ACRX_CMD_MODAL | ACRX_CMD_DEFUN}, // 二维门库
//{_T("TWDLib3D"), WDLib3d, ACRX_CMD_MODAL | ACRX_CMD_DEFUN}, // 三维门窗库
//{_T("TRailLib"), RailLib, ACRX_CMD_MODAL | ACRX_CMD_DEFUN}, // 栏杆库
//{_T("TEWinLib"), EWinLib, ACRX_CMD_MODAL | ACRX_CMD_DEFUN}, // 立面门窗库
//{_T("TEBalLib"), EBalLib, ACRX_CMD_MODAL | ACRX_CMD_DEFUN}, // 立面阳台库
//{_T("TResetLabPos"), ResetLabPos, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TLabelFix"), LabelFix, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TWin2Lib"), Win2Lib, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},
//{_T("TOpXTem"), GiveUpOpPrototype, ACRX_CMD_MODAL | ACRX_CMD_DEFUN},
//{_T("UpdateDwb"), UpdateDwb, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("CheckXD"), CheckXD, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("ConvExtra"), ConvertExtra, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("ConvWin2d"), ConvWin2d,ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("ConvDoor2d"), ConvDoor2d, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("ConvWin3d"), ConvWin3d,ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("ConvDoor3d"), ConvDoor3d, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("ExplDwb"), ExplDwb, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("ExplWD3d"), ExplWD3d, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("ConvTgLib"), ConvertTgLib, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("ConvSan"), ConvSaniware, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TestLType"), TestLineType, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("SysLib"), ConvertSysLib, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TestPt"), TestPt, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TestConv"), TestConv, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TestSub"), TestSub, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TestUnion"), TestUnion,ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TRemoveDup2"), xdRemoveDup, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("OnWhichWall"), OnWhichWall, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TSplitPoly"), SplitPoly, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TListWall"), ListLinkWall, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TIntCurv"), TestIntSWall, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TestHatch"), TestHatch, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TestSpace"), TestSpace, ACRX_CMD_MODAL | ACRX_CMD_DEFUN | ACRX_CMD_USEPICKSET},
//{_T("TestAppId"), TestAppId, ACRX_CMD_MODAL},
//{_T("HitLine"), HitLine, ACRX_CMD_MODAL},
//{_T("HitTri"), HitTriangle, ACRX_CMD_MODAL},
//{_T("FlatBlock"), FlatBlock, ACRX_CMD_MODAL},
//{_T("SplitCurve"), SplitCurve, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TransMv"), TransMvInsert, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("UpdateMv"), UpdateMvLib, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//};
void IConvert2DPrep();
void VRCamera();
void ExplSolid();
void OffsetWallBase();
// 透明命令
void DistPrec();
void ObjTip();
void OsnapWall();
void TogWallBase();
void SpDispMode();
void SelObject();
void GenBoundaryFromInsert2D();
void GenBoundary();
void Clip2D();
void PolygonClip();
void RectClip();
void SearchOutline();
void ElevOutline();
void ProxyMode();
void ArmrestMode();
void ArcDimMode();
void ObjView();
void ListSym();
void InsTwoDoor();
void SaveEx();
void CirDeviation();
void LineBoldValue();
void MakeHide();
void LocalVisible();
void UnHide();
void ApartmentArea();
void PolyFace();
void HideEdge();
void Clip3D();
void Poly2Face();
void MirWinLR();
void MirWinIO();
void editblcCommand();
// sg add 120109,根据9.0需求,增加图块改名的功能
void ModifyBlkNameCmd();
void DoorLine();
void FullScreenView();
void SaveView();
void myGraphic();
void myHandrail();
void addHatch();
void removeHatch();
void myStair();
void myFortifyColumn();
void DrawGlassWallCmd();
void MultiStair();
void CreateRectangle();
void CornerWin();
void LayoutRotate();
// void SaveAsTch5();
void Line2Face();
void QuickRender();
void AlignColumn();
void EquipmentOpeningCmd(); // 设备箱
// 节能
void MakeExtSpace();
void CondensionCheck();
void RepBuildingPara();
void AccountArea();// add by fxj 090617 面积计算
// by lcf
void DrawingFrame();
void SectionOpening();
void OpeningGirder();
void DrawingList();
void Customize();
void FillOpening();
void WDRegul();
////////////////////////////////////////////
// 图层控制相关命令
// sg add 100611,根据8.5需求,增加打开图层、解锁图层、解冻图层、图元改层、合并图层、图层恢复2等新命令
void OffLayer();
void OffOtherLayer();
void OnLayer();
void OpenAllLayer(); // [11/30/2007 nsh],打开全部图层
void FreezeLayer();
void FreezeOtherLayer();
void UnFreezeLayer();
void LockLayer();
void LockOtherLayer();
void UnLockLayer();
void ResetLayer();
void ResetAllLayer();
void UniteLayer();
void ChangeLayer();
void LayerManager();
bool ReadStandardLayerToJudgeWhetherPerform();
void UpdateCADLayerByChangeStandardLayer(bool bNotChange, std::vector<SLayerStandardRecord*> &arStandardBefore);
void ReadStandardLayerToInitVector(std::vector<SLayerStandardRecord*> &arStandardLayerRecord);
void DeleteOldStandardLayerInCAD(std::vector<SLayerStandardRecord*> &arStandardBefore);
void ChangeNewStandardLayerToUpdate(std::vector<SLayerStandardRecord*> &arStandardAfter);
void ModifyStandardByOldLayerFile(std::vector<SLayerStandardRecord*> &arStandardAfter);
void LayerConvert();
void ReadLayerFromTextFile(CStdioFile *fp, std::vector<SLayerStandardRecord*> &pLayerStandard, std::vector<CString> &arNotCreatStandardLayer);
void InitNotCreatStandardLayer(CStdioFile *fp, std::vector<CString> &arNotCreatStandardLayer);
void GetAccmColorByString(CString sColor, AcCmColor &color);
AcDbObjectId GetIdByName(LPCTSTR name);
////////////////////////////////////////////
void ProjectManager();
void DictConfig();
void DictConfigCtl();
void ProjectBar();
void SelectFloor();
void Option();// by fxj 080911
// by cwk
void WallAlignRoof();
void DualSlopeRoof();
void CuspRoof();
void UnionScale();// [11/20/2007 nsh]
void SlabAlignRoof(); // add by xlc on 080228
void PartWall(); // add by fxj 080825
// sg add 110215,编号设置
void SetWinLabel();
//jsx add 160728,单位设置
void UnitSet();
// ACED 命令表
static ArxCommandTable g_acedCmdTable[] = {
//{_T("TUnionScale"),UnionScale,ACRX_CMD_MODAL},// 比例缩放命令,[11/20/2007 nsh],toolcmd
//{_T("TCurtainWall"),DrawGlassWallCmd,ACRX_CMD_MODAL},// 玻璃幕墙 add 03/02/24 by whl
//{_T("TCornerWin"),CornerWin,ACRX_CMD_MODAL},// 角窗 add by whl
//{_T("TRect"),CreateRectangle,ACRX_CMD_MODAL},// 矩形 add by whl
//{_T("TStrm"), RainPipe, ACRX_CMD_MODAL}, // 加雨水管 add by zyu on 100118
//{_T("TGroupFloor"), GroupFloor, ACRX_CMD_MODAL | ACRX_CMD_NONEWSTACK },
//{_T("TSavexe"), SaveEx,ACRX_CMD_MODAL},// add by whl on 040928,toolcmd
//{_T("IMap2DPrep"), IConvert2DPrep, ACRX_CMD_MODAL},
//{_T("TOpTem"), OpPrototype, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TConvTch"), ConvertTch, ACRX_CMD_MODAL},
//{_T("TWALL"), DrWall, ACRX_CMD_MODAL}, // 双线直墙
//{_T("TDivWall"), DivideWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TSWALL"), SDWall, ACRX_CMD_MODAL}, // 单线变双
//{_T("TDoorLine"), DoorLine, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TPartWall"), PartWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// add by fxj 080825 墙体分段
//{_T("TSetWinLab"), SetWinLabel, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // sg add 110215,编号设置
//{_T("TConvertCurtain"),ConvertCurtain,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TOpening"), InsWDH, ACRX_CMD_MODAL},
//{_T("TBayOpening"), InsBayWDH, ACRX_CMD_MODAL},
//{_T("THoldOpening"), InsHoleWDH, ACRX_CMD_MODAL},
//{_T("TReplaceOpening"),ReplaceWDH,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TMirWinLR"), MirWinLR, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TMirWinIO"), MirWinIO, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TVRCamera"), VRCamera, ACRX_CMD_MODAL},
//{_T("T3DO"), T3DOrbit, ACRX_CMD_MODAL},// toolcmd
//{_T("TSol2Face"), ExplSolid, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TMergeFace"), PolyFace, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("THideEdge"), HideEdge,ACRX_CMD_MODAL},// toolcmd
//{_T("TPoly2Face"), Poly2Face, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TBlkLay"), editblcCommand, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TBlkName"), ModifyBlkNameCmd, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // sg add 120109,根据9.0需求,增加图块改名的功能
//{_T("TOsnapWall"), OsnapWall, ACRX_CMD_TRANSPARENT}, // 切换墙体的捕捉
//{_T("TogWallBase"), TogWallBase, ACRX_CMD_TRANSPARENT}, // 切换墙体基线的显示
//{_T("TObjView"), ObjView, ACRX_CMD_TRANSPARENT},// toolcmd
//{_T("TObjInfo"), ObjTip, ACRX_CMD_TRANSPARENT}, // 对象查询// toolcmd
//{_T("TListSym"), ListSym, ACRX_CMD_TRANSPARENT},// toolcmd
//{_T("TDeviation"), CirDeviation, ACRX_CMD_TRANSPARENT},
//{_T("TLineBold"), LineBoldValue, ACRX_CMD_TRANSPARENT},
//{_T("TSelObj"), SelObject, ACRX_CMD_MODAL | ACRX_CMD_REDRAW},// toolcmd
//{_T("TChEWallHeight"), ChExtWallElev, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 降低所选外墙的底标高 (增加)
//{_T("TMarkExtWall"), MarkExtWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 标记外墙
//{_T("TMarkIntWall"), MarkIntWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 标记内墙
//{_T("THLExtWall"), HLExtWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 加亮外墙
//{_T("TWall2Curve"), Wall2Curve, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TOffset"), OffsetWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 在建筑软件中不使用
//{_T("TAlignWall"), AlignWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TAdjWallBase"), OffsetWallBase, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TShapeWall"), ShapeWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TWallAlignRoof"),WallAlignRoof,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TSlabAlignRoof"),SlabAlignRoof,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// 平板其屋顶
//{_T("TDelWallShape"), DelWallShape, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TAddInsulate"), AddInsulate, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 加保温
//{_T("TDelInsulate"), DelInsulate, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 取消保温
//{_T("TFixWall"), BrkWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TFixWallEx"), BrkWallEx, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},//修墙角2,增强版有bug可小范围使用
//{_T("TMARKWALL"), MarkWall, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 识别内外墙
//{_T("TChWallTerm"), ChWallTerm, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TChHeight"), ChHeight, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 改墙柱子高
//{_T("TWallThick"), ChWallThick, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 改墙厚
//{_T("TEXTTHICK"), ChExtWallThick, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 改外墙厚
//{_T("TRoflna"), RoofOutline, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 产生屋顶线
//{_T("TOutlna"), SanShui, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 产生散水线
//{_T("TOutl3d"), SanShui3d, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TElevDiff"), ElevDiffIO, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 室内外高差
//{_T("TUpdSpace"), SpaceArea, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 标注房间面积
//{_T("TEnUpdSpace"), SpaceArea1, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 标注房间面积,节能用
//{_T("TSpArea"), AskSpArea, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TSpOutline"), SpOutline, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TSpGround"), SpGround, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 房间封面
//{_T("TFloorArea"), FloorArea, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 标准层建筑面积统计
//{_T("TProjectArea"),ProjectArea, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 工程建筑面积统计
//{_T("TApartArea"), ApartmentArea, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 套内面积
//{_T("TPlusText"), AccountArea, ACRX_CMD_MODAL},// 面积计算 add by fxj 090617 modified by fxj 090724
//{_T("TShareArea"), ShareArea, ACRX_CMD_MODAL},// 公摊面积 by fxj 080624
//{_T("TSortSpace"), SortSpaceCodeCmd, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 房间排序,sg add 081215
//{_T("TBanWin"), BanOpening, ACRX_CMD_MODAL},
//{_T("TDelOpSlot"), DelOpSlot, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TChOpWidth"), ChangeOpeningWidth, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TOpSlot"), OpSlot, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 二维门窗套
//{_T("TPolyHole"), PolyHole, ACRX_CMD_MODAL},
//{_T("TValidOp"), ValidateOpening, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TBatLabel"), BatNameOpening, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TChWinLab"), ChWinLab, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TChHWin"), ChHWin, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TExpWinFrame"), ExpandWinFrame, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TMapWinFrame"), MapWinFrame, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TFillOpening"),FillOpening,ACRX_CMD_MODAL},// lgh 20110329
//{_T("TWDRegul"), WDRegul, ACRX_CMD_MODAL},
//{_T("TEquipment"), EquipmentOpeningCmd, ACRX_CMD_MODAL}, // 设备箱
//{_T("TPolyColu"), PolyColu, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TCornColu"), CornerColumn, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TInsColu"), ShapeColu, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 插入标准柱子
//{_T("TFortiColu"), myFortifyColumn,ACRX_CMD_MODAL},
//{_T("TAlignColu"), AlignColumn, ACRX_CMD_MODAL}, // 柱齐墙边
//{_T("TAddPatch"), AddPatch, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET | ACRX_CMD_REDRAW },
//{_T("TMUpdPatch"), ManualUpdatePatch, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TAUpdPatch"), AutoUpdatePatch, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TUcsElev"), ElevUcs, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("ObjEdit"), EditObj, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TSlopeRoof"), ConvertRoof, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TDualSlopeRoof"), DualSlopeRoof, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TCuspRoof"), CuspRoof, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TRectRoof"), MountRoof, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// add by xlc on 081202
//{_T("TRectRoof2"), MountRoof2, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// add by ywb on 090914
//{_T("TSlopeRoof2"), ConvertRoof2, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TDualSlopeRoof2"), DualSlopeRoof2, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TCuspRoof2"), CuspRoof2, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TStep"), Poly2Step, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TStepStoneSwitch"), StepStoneSwitchCmd, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TBalcony"), Poly2Balcony, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TRailingSwitch"), RailingSwitchCmd, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TSlab"), Poly2Slab, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TVertSlab"), VertSlab, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TLStair"), LineStair, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TAStair"), ArcStair, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TCStair"), CurveStair, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TRStair"), RectStair, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("THandRail"), Poly2Rail, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TCurveMesh"), CurveMesh, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TRail"), Rail, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TAscent"), Ascent, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TElevator"), Elevator, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TMultiStair"), MultiStair, ACRX_CMD_MODAL},
//{_T("TDrawCrossStair"),CrossStair,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TDrawParallelStair"),ParallelStair,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TDrawScissorsStair"),ScissorsStair,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TDrawCornerStair"),CornerStair,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TDrawDoubleMulStair"),DoubleMulStair,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TDrawTriangleStair"),TriangleStair,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TDrawRectCornerStair"),RectCornerStair,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TDrawAutoStair"),AutoStair,ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},
//{_T("TRevPline"), RevPline, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TBlockPoly"), GenBoundaryFromInsert2D, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TCurvePoly"), GenBoundary, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TSeOutline"), SearchOutline, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TElevOutline"), ElevOutline, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TClip"), Clip2D, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TUpdView"), UpdateDwgView, ACRX_CMD_TRANSPARENT},// toolcmd
//{_T("TSaveLayout"), SaveLayoutConfig, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TRestoreLayout"), RestoreLayoutConfig, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TGetExtend"), GetExtend, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TMkHide"), MakeHide, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TLocVis"), LocalVisible, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TUnHide"), UnHide, ACRX_CMD_MODAL},// toolcmd
//{_T("TFullView"), FullScreenView, ACRX_CMD_MODAL},// toolcmd
//{_T("TSaveView"), SaveView, ACRX_CMD_MODAL},// toolcmd
//{_T("TLinePattern"), myGraphic, ACRX_CMD_MODAL},
//{_T("TStairHand"), myStair, ACRX_CMD_MODAL},
//{_T("TLinkHand"), myHandrail, ACRX_CMD_MODAL},
//{_T("THatchAddHole"), addHatch, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("THatchDelHole"), removeHatch, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TLayoutRot"), LayoutRotate, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TChScale"), ChScale, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// toolcmd
//{_T("TMakeVP"), MakeLayoutViewport, ACRX_CMD_MODAL},// toolcmd
//{_T("TLine2Face"), Line2Face, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 线转面// toolcmd
//{_T("TRepBuild"), RepBuildingPara, ACRX_CMD_MODAL}, // 报告建筑参数
//{_T("TExtSpace"), MakeExtSpace, ACRX_CMD_MODAL}, // 搜索室外空间
//{_T("TConCheck"), CondensionCheck, ACRX_CMD_MODAL}, // 结露检查
//{_T("TTitleFrame"),DrawingFrame,ACRX_CMD_MODAL},// 新插图框命令// toolcmd
//{_T("MCGL"), OpeningGirder, ACRX_CMD_MODAL},// 剖面门窗过梁绘制
//{_T("TSectWin"),SectionOpening,ACRX_CMD_MODAL},// 剖面门窗
//{_T("TTitleList"), DrawingList, ACRX_CMD_MODAL},// 图纸目录// toolcmd
//{_T("TCustomize"),Customize,ACRX_CMD_MODAL},// 自定义
//{_T("TOffLayer"), OffLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 关闭图层
//{_T("TOffOtherLayer"), OffOtherLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 关闭其他
//{_T("TOnLayer"), OnLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 打开图层
//{_T("TOpenAllLayer"),OpenAllLayer,ACRX_CMD_MODAL}, // 打开所有图层
//{_T("TFreezeLayer"), FreezeLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 冻结图层
//{_T("TFreezeOtherLayer"), FreezeOtherLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET},// 冻结其他
//{_T("TUnFreezeLayer"), UnFreezeLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 解冻图层
//{_T("TLockLayer"), LockLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 锁定图层
//{_T("TLockOtherLayer"), LockOtherLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 锁定其他
//{_T("TUnLockLayer"), UnLockLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 解锁图层
//{_T("TResetLayer"), ResetLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 图层恢复,只对上华命令操作过的层起作用
//{_T("TResetAllLayer"), ResetAllLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 图层恢复,对CAD操作过的层也起作用
//{_T("TUniteLayer"), UniteLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 合并图层
//{_T("TChangeLayer"), ChangeLayer, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 图元改层
//{_T("TLayerManager"), LayerManager, ACRX_CMD_MODAL}, // 图层管理
//{_T("TLayerConvert"), LayerConvert, ACRX_CMD_MODAL}, // 图层转换
//{_T("TSetting"),DictConfig,ACRX_CMD_MODAL},
//{_T("TSettingEx"),DictConfigCtl,ACRX_CMD_MODAL},
{_T("TOptions"),Option,ACRX_CMD_MODAL},// 上华选项 by fxj 080911
//{_T("TProjectManager"),ProjectManager,ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET},
//{_T("TProjectBar"), ProjectBar, ACRX_CMD_TRANSPARENT},
//{_T("TSelectFloor"),SelectFloor,ACRX_CMD_TRANSPARENT},
//{_T("TUnitSet"),UnitSet,ACRX_CMD_TRANSPARENT},//单位设置
//{ _T("TBuildOutLine"), BuildOutLine, ACRX_CMD_TRANSPARENT},//建筑轮廓
};
extern int EditWall(AcDbObjectId id);
extern int EditOpening(AcDbObjectId id);
extern int EditColumn(AcDbObjectId id);
extern int EditSpace(AcDbObjectId id) ;
extern int EditSlopeRoof(AcDbObjectId id);
extern int EditStep(AcDbObjectId id);
extern int EditBalcony(AcDbObjectId id);
extern int EditLineStair(AcDbObjectId id);
extern int EditArcStair(AcDbObjectId id);
extern int EditCurveStair(AcDbObjectId id);
extern int EditRectStair(AcDbObjectId id);
extern int EditAscent(AcDbObjectId id);
extern int EditCamera(AcDbObjectId id);
extern int EditBlockInsert(AcDbObjectId idInsert);
extern int EditHandRail(AcDbObjectId id);
extern int EditCornerWin(AcDbObjectId id); // added by whl on 03/03/19
extern int EditRect(AcDbObjectId id); // added by whl on 03/03/19
extern int EditCurtainWall(AcDbObjectId id); // added by whl on 03/03/19
extern int EditMultiStair(AcDbObjectId id); // add by whl
extern int EditDormer0(AcDbObjectId id);
extern int EditDualSlopeRoof(AcDbObjectId id_DualSlopeRoof); // add by cwk on 061208
extern int EditCuspRoof(AcDbObjectId id_CuspRoof); // add by cwk on 061214
extern int EditCrossStair(AcDbObjectId id); // add by nsh
extern int EditParallelStair(AcDbObjectId id); // add by nsh
extern int EditScissorsStair(AcDbObjectId id); // add by nsh
extern int EditCornerStair(AcDbObjectId id); // add by nsh
extern int EditDoubleMulStair(AcDbObjectId id); // add by nsh
extern int EditTriangleStair(AcDbObjectId id); // add by nsh
extern int EditRectCornerStair(AcDbObjectId id); // add by nsh
extern int EditAutoStair(AcDbObjectId id); // add by nsh
extern int EditApron(AcDbObjectId id); // sg add 080828,散水
extern int EditMountRoof(AcDbObjectId id_MountRoof); // add by xlc on 081203
//extern int EditFloorRect(AcDbObjectId id); // sg add 100121,楼层框
extern int EditEquipment(AcDbObjectId id); //add by lgy 20120605 设备箱
static AecObjectEditMethod g_pOldEditWall = NULL,
g_pOldEditOpening = NULL,
g_pOldEditColumn = NULL,
g_pOldEditRoof = NULL,
g_pOldEditStep = NULL,
g_pOldEditBalcony = NULL,
g_pOldEditLineStair = NULL,
g_pOldEditArcStair = NULL,
g_pOldEditCurveStair = NULL,
g_pOldEditRectStair = NULL,
g_pOldEditAscent = NULL,
g_pOldEditSpace = NULL,
g_pOldEditHandRail = NULL,
g_pOldEditCamera = NULL,
g_pOldEditDormer = NULL,
g_pOldEditCornerWin = NULL,
g_pOldEditCurtainWall = NULL,
g_pOldEditRect = NULL,
g_pOldEditMultiStair = NULL,
g_pOldEditDualSlopeRoof = NULL,
g_pOldEditCuspRoof = NULL,
g_pOldEditCrossStair = NULL, // add by nsh
g_pOldEditParallelStair = NULL, // add by nsh
g_pOldEditScissorsStair = NULL, // add by nsh
g_pOldEditCornerStair = NULL, // add by nsh
g_pOldEditDoubleMulStair = NULL, // add by nsh
g_pOldEditTriangleStair = NULL, // add by nsh
g_pOldEditRectCornerStair = NULL, // add by nsh
g_pOldEditAutoStair = NULL, // add by nsh
g_pOldEditApron = NULL, // sg add 080828,散水
g_pOldEditMountRoof = NULL, // add by xlc on 081203
g_pOldEditEquipment = NULL, //add by lgy 020605 编辑设备箱
g_pOldEditFloorRect = NULL; // sg add 100121,楼层框
// [2010-3-16 10:51 wubo] 移植到新Geo库
//TARCH_IMPEXP void TchAddCommand(const TCHAR *szAppName0,
// const ArxCommandTable cmdTable[], // 命令数组
// const UINT eleNum, BOOL bLispCmd);
void LoadReg()
{
{
CRegProperty regProp(GetRegLocation(), _T("Settings"));
regProp.SetTopRootKey(HKEY_CURRENT_USER);
CString temp;
if (regProp.GetValue(_T("SectWinBlock"), temp))
g_sSectWinBlock = temp;
}
{
XString sKey;
sKey << GetRegLocation() << _T("\\Settings");
CRegProperty regProp1(sKey,_T("ProjectBar"));
regProp1.SetTopRootKey(HKEY_CURRENT_USER);
regProp1.GetValue(_T("Visible"),g_bProjectBarVisible);
regProp1.GetValue(_T("Width"),g_iProjectBarWidth);
regProp1.GetValue(_T("DockLeft"),g_bProjectBarDockLeft);
regProp1.GetValue(_T("UnFoldStatus"),g_iProjectBarUnFoldFlags);
}
}
void SaveReg()
{
{
CRegProperty regProp(GetRegLocation(), _T("Settings"));
regProp.SetTopRootKey(HKEY_CURRENT_USER);
regProp.SetValue(_T("SectWinBlock"), g_sSectWinBlock);
}
{
XString sKey;
sKey << GetRegLocation() << _T("\\Settings");
CRegProperty regProp1(sKey,_T("ProjectBar"));
regProp1.SetTopRootKey(HKEY_CURRENT_USER);
regProp1.SetValue(_T("Visible"),g_bProjectBarVisible);
regProp1.SetValue(_T("Width"),g_iProjectBarWidth);
regProp1.SetValue(_T("DockLeft"),g_bProjectBarDockLeft);
regProp1.SetValue(_T("UnFoldStatus"),g_iProjectBarUnFoldFlags);
}
}
TKeyMapTable g_KeyMapTable;
void CreateLayerForNewDoc(AcDbDatabase*);
class TProjectDocReactor:public AcApDocManagerReactor
{
// AutoCAD Document Event Reactor
public:
TProjectDocReactor()
{
#if ADS < 21
AcDbVoidPtrArray* pDbArray = acdbActiveDatabaseArray();
for (int i = 0; i < pDbArray->length(); ++i)
{
AcDbDatabase *pDatabase = (AcDbDatabase*)pDbArray->at(i);
#else
const AcArray<AcDbDatabase*> &DbArray = acdbActiveDatabaseArray();
for (int i = 0; i < DbArray.length(); ++i)
{
AcDbDatabase *pDatabase = (AcDbDatabase*)DbArray.at(i);
#endif
if (pDatabase)
CreateLayerForNewDoc(pDatabase);
}
}
virtual void documentActivated(AcApDocument* pDoc)
{
CString sNewFile = DocGetProjectFile();
if (sNewFile != _T("")&&
FindFile(sNewFile)&&
!g_project.Is(sNewFile))
{
if (g_project.Load(sNewFile)&&g_projectBar.GetSafeHwnd() != NULL)
g_projectBar.Refresh();
}
}
virtual void documentCreated( AcApDocument* pDoc )
{
if (pDoc && pDoc->database())
CreateLayerForNewDoc(pDoc->database());
}
};
extern BOOL g_bDisableEcho=FALSE;//是否提示
//TProjectDocReactor g_projectDocReactor;
// 在应用程序加载上需要做的动作
void OnLoadApp()
{
TchAddCommand(_T("SHS_KERNCMD"), g_acedCmdTable, ELEMENTS(g_acedCmdTable), FALSE);
int nCustomFlag = GetCustomFlag();
if (!(nCustomFlag&CUSTOM_NO_DMLOAD)) {
InitDLRegistry(_hdllInstance, _T("SHS_KernCmd"));
//UpdateDLRegistry(_T("SHS_KernCmd"), g_cmdTable, ELEMENTS(g_cmdTable));
UpdateDLRegistry(_T("SHS_KernCmd"), g_acedCmdTable, ELEMENTS(g_acedCmdTable));
}
g_pOldEditWall = TDbWall::SetEditMethod(EditWall);
g_pOldEditColumn = TDbColumn::SetEditMethod(EditColumn);
g_pOldEditCurtainWall = TDbCurtainWall::SetEditMethod(EditCurtainWall);
g_pOldEditOpening = TDbOpening::SetEditMethod(EditOpening);
g_pOldEditRoof = TDbSlopeRoof::SetEditMethod(EditSlopeRoof);
g_pOldEditStep = TDbStep::SetEditMethod(EditStep);
g_pOldEditBalcony = TDbBalcony::SetEditMethod(EditBalcony);
g_pOldEditLineStair = TDbLineStair::SetEditMethod(EditLineStair);
g_pOldEditArcStair = TDbArcStair::SetEditMethod(EditArcStair);
g_pOldEditCurveStair = TDbCurveStair::SetEditMethod(EditCurveStair);
g_pOldEditRectStair = TDbRectStair::SetEditMethod(EditRectStair);
g_pOldEditAscent = TDbAscent::SetEditMethod(EditAscent);
g_pOldEditSpace = TDbSpace::SetEditMethod(EditSpace);
g_pOldEditHandRail = TDbHandRail::SetEditMethod(EditHandRail);
g_pOldEditCamera = TDbCamera::SetEditMethod(EditCamera);
g_pOldEditDormer = TDbDormer::SetEditMethod(EditDormer0);
g_pOldEditCornerWin = TDbCornerWin::SetEditMethod(EditCornerWin);
g_pOldEditRect = TDbRect::SetEditMethod(EditRect);
g_pOldEditMultiStair = TDbMultiStair::SetEditMethod(EditMultiStair);
g_pOldEditDualSlopeRoof = TDbDualSlopeRoof::SetEditMethod(EditDualSlopeRoof);
g_pOldEditCuspRoof = TDbCuspRoof::SetEditMethod(EditCuspRoof);
g_pOldEditCrossStair = TDbCrossStair::SetEditMethod(EditCrossStair); // add by nsh
g_pOldEditParallelStair = TDbParallelStair::SetEditMethod(EditParallelStair); // add by nsh
g_pOldEditScissorsStair = TDbScissorsStair::SetEditMethod(EditScissorsStair); // add by nsh
g_pOldEditCornerStair = TDbCornerStair::SetEditMethod(EditCornerStair); // add by nsh
g_pOldEditDoubleMulStair = TDbDoubleMulStair::SetEditMethod(EditDoubleMulStair); // add by nsh
g_pOldEditTriangleStair = TDbTriangleStair::SetEditMethod(EditTriangleStair); // add by nsh
g_pOldEditRectCornerStair = TDbRectCornerStair::SetEditMethod(EditRectCornerStair); // add by nsh
g_pOldEditAutoStair = TDbAutoStair::SetEditMethod(EditAutoStair); // add by nsh
g_pOldEditApron = TDbApron::SetEditMethod(EditApron); // sg add, 080828
g_pOldEditMountRoof = TDbMountRoof::SetEditMethod(EditMountRoof); // add by xlc on 081203
// g_pOldEditFloorRect = TDbFloorRect::SetEditMethod(EditFloorRect); // sg add 100121,楼层框
g_pOldEditEquipment = TDbEquipmentBox::SetEditMethod(EditEquipment); //add by lgy 020605 布设备箱
LoadReg();
g_pKeyMapTable = &g_KeyMapTable;
g_KeyMapTable.ReadShortCutKey();
//if (acDocManager != NULL)
// acDocManager->addReactor(&g_projectDocReactor);
if (g_bAutoOpenRecent)
{
XPushMemVar<BOOL> vTemp(g_bDisableEcho,TRUE);
g_projectBar.OpenRecent(false);
}
}
// 在应用程序卸载时需要做的动作
void OnUnloadApp()
{
extern void ReleaseGridTemplate();
acedRegCmds->removeGroup(_T("SHS_KERNCMD"));
TDbWall::SetEditMethod(g_pOldEditWall);
TDbColumn::SetEditMethod(g_pOldEditColumn);
TDbCurtainWall::SetEditMethod(g_pOldEditCurtainWall);
TDbOpening::SetEditMethod(g_pOldEditOpening);
TDbSlopeRoof::SetEditMethod(g_pOldEditRoof);
TDbStep::SetEditMethod(g_pOldEditStep);
TDbBalcony::SetEditMethod(g_pOldEditBalcony);
TDbLineStair::SetEditMethod(g_pOldEditLineStair);
TDbArcStair::SetEditMethod(g_pOldEditArcStair);
TDbCurveStair::SetEditMethod(g_pOldEditCurveStair);
TDbRectStair::SetEditMethod(g_pOldEditRectStair);
TDbAscent::SetEditMethod(g_pOldEditAscent);
TDbSpace::SetEditMethod(g_pOldEditSpace);
TDbHandRail::SetEditMethod(g_pOldEditHandRail);
TDbCamera::SetEditMethod(g_pOldEditCamera);
TDbDormer::SetEditMethod(g_pOldEditDormer);
// added by whl on 03/03/19
TDbCornerWin::SetEditMethod(g_pOldEditCornerWin);
TDbRect::SetEditMethod(g_pOldEditRect);
TDbMultiStair::SetEditMethod(g_pOldEditMultiStair);
TDbDualSlopeRoof::SetEditMethod(g_pOldEditDualSlopeRoof);
TDbCuspRoof::SetEditMethod(g_pOldEditCuspRoof);
TDbCrossStair::SetEditMethod(g_pOldEditCrossStair);
TDbParallelStair::SetEditMethod(g_pOldEditParallelStair);
TDbScissorsStair::SetEditMethod(g_pOldEditScissorsStair);
TDbCornerStair::SetEditMethod(g_pOldEditCornerStair);
TDbDoubleMulStair::SetEditMethod(g_pOldEditDoubleMulStair);
TDbTriangleStair::SetEditMethod(g_pOldEditTriangleStair);
TDbRectCornerStair::SetEditMethod(g_pOldEditRectCornerStair);
TDbAutoStair::SetEditMethod(g_pOldEditAutoStair);
TDbApron::SetEditMethod(g_pOldEditApron);
TDbMountRoof::SetEditMethod(g_pOldEditMountRoof); // add by xlc on 081203
TDbFloorRect::SetEditMethod(g_pOldEditFloorRect); // sg add 100121,楼层框
TDbEquipmentBox::SetEditMethod(g_pOldEditEquipment);//add by lgy 020605 布设备箱
ReleaseGridTemplate();
SaveReg();
g_pKeyMapTable = NULL;
//if (acDocManager != NULL)
// acDocManager->removeReactor(&g_projectDocReactor);
if (g_projectBar.GetSafeHwnd() != NULL)
g_projectBar.DestroyWindow();
}
int OnDwgLoaded()
{
// ACAD的Demand loading机制在键入命令加载时, 发送了两次本消息
if (g_nProtectCode>0)
{
int i;
// for (i=0; i<ELEMENTS(g_cmdTable); i++)
//{
// XString sCmdName(256);
// sCmdName << _T("C:") << GetFullCmdName(g_cmdTable[i].szCmdGlobal);
// ads_defun(sCmdName, i);
// }
}
return RTNORM;
}
int OnDoFunc()
{
int cindex;
XPushVar<int> cmdecho(_T("CMDECHO"), 0);
XPushVar<int> blipmode(_T("BLIPMODE"), 0);
cindex = ads_getfuncode();
int nRet = RTNORM;
//if (cindex >= 0 && cindex < ELEMENTS(g_cmdTable))
//{
// XPushUndo vTemp;
// AcTransaction *pTrans = actrTransactionManager->startTransaction();
// try {
//(*g_cmdTable[cindex].pFun)();
// } catch(...) {
// }
// actrTransactionManager->endTransaction();
//}
ads_retvoid();
return RTNORM;
}
extern int EditComp(const Entity &e);
void EditObject(Entity ent)
{
#ifdef TIME_LIMIT
GEOAPI bool IsValidTotalTime();
if (!IsValidTotalTime())
return;
#endif
ent.Redraw(3);//wlw 14.1.8增加高亮
AcDbObjectId idObj;
if (acdbGetObjectId(idObj, ent) == Acad::eOk)
{
XDbObject obj(idObj, AcDb::kForRead);
AecObjectEditMethod pMethod = NULL;
if (obj.m_pObject->isKindOf(AcDbBlockReference::desc()) || ent.Is(_T("SHS_MVINSERT")))
{
obj.Close();
EditBlockInsert(idObj);
}
else if (obj.m_pObject->isKindOf(TDbEntity::desc()))
{
TDbEntity *pDbEnt = TDbEntity::cast(obj.m_pObject);
pMethod = pDbEnt->GetEditMethod();
if (pMethod)
{
obj.Close();
pMethod(idObj);
}
}
else if (obj.m_pObject->isKindOf(TDbCurveEntity::desc()))
{
TDbCurveEntity *pDbEnt = TDbCurveEntity::cast(obj.m_pObject);
pMethod = pDbEnt->GetEditMethod();
if (pMethod)
{
obj.Close();
pMethod(idObj);
}
}
else
{
obj.Close();
/*
if (EditComp(ent) != RTNORM)
{
PickSet ss0(SS_FREE|SS_CREATE), ss1(SS_FREE|SS_CREATE);
ss0 += ent;
ads_sssetfirst(ss0, ss1);
SendAcadCommand(_T("_ai_propchk\n"));
}
*/
}
}
ent.Redraw(4);//wlw 14.1.8增加高亮
}
// 对象编辑
// Command:
void EditObj()
{
Entity ent;
RBList mask;
if (SelectEntity(_T("\n选择要编辑的物体: "), ent, mask) != RTNORM)
{
return;
}
RBList maskDimSym(RTDXF0, _T("SHS_*"), 68, 1, NULL);
if (ent.MatchBase(maskDimSym))
{
if (!AT_loaded(_T("shs_annotate")))
acrxLoadModule(_T("shs_annotate.arx"), 0, Adesk::kTrue);
}
EditObject(ent);
// TArchCmdReactor::UpdateCorners();
// return RTNORM;
}
void ListSym()
{
XString sTable;
if (ads_getstring(0, _T("\n符号表名称: "), sTable) == RTNORM)
{
XSymbolList lstNames(sTable);
for (int i=0; i<lstNames.Length(); i++)
{
adsout << _T("\n") << lstNames[i];
}
}
}
void TestPt()
{
// void TestAdsName();
// TestAdsName();
XPoint pt;
Entity ent;
if (ads_getpoint(NULL, _T("\nPick a point:"), pt) == RTNORM &&
ent.FilterSelect(_T("\nSelect a poly: "), RBList(RTDXF0, _T("POLYLINE,LWPOLYLINE"), 70, 1, NULL)) == RTNORM)
{
XPoly2D poly(ent);
int nFlag = (pt&poly);
adsout << _T("\nTest flag=") << nFlag;
}
}
void ListLinkWall()
{
Entity ent;
RBList mask(RTDXF0, _T("SHS_WALL,SHS_CURTAIN_WALL"), NULL);
if (SelectEntity(_T("\nSelect a Wall:"), ent, mask) == RTNORM)
{
OPENOBJ_BEGIN(ent, AcDb::kForRead, TDbWall, pWall);
if (pWall)
{
OPENOBJ_BEGIN(pWall->GetLeftStart(FALSE), AcDb::kForWrite, AcDbEntity, pLeftStart);
if (pLeftStart)
{
pLeftStart->setColorIndex(1);
}
OPENOBJ_END();
OPENOBJ_BEGIN(pWall->GetRightStart(FALSE), AcDb::kForWrite, AcDbEntity, pRightStart);
if (pRightStart)
{
pRightStart->setColorIndex(2);
}
OPENOBJ_END();
OPENOBJ_BEGIN(pWall->GetLeftEnd(FALSE), AcDb::kForWrite, AcDbEntity, pLeftEnd);
if (pLeftEnd)
{
pLeftEnd->setColorIndex(3);
}
OPENOBJ_END();
OPENOBJ_BEGIN(pWall->GetRightEnd(FALSE), AcDb::kForWrite, AcDbEntity, pRightEnd);
if (pRightEnd)
{
pRightEnd->setColorIndex(4);
}
OPENOBJ_END();
}
OPENOBJ_END();
}
}
void TestIntSWall()
{
PickSet ss(SS_FREE);
RBList mask = ads_buildlist(RTDXF0, _T("LINE,ARC,CIRCLE"), -4, _T("<NOT"), 8, LAY_AXIS, -4, _T("NOT>"), NULL);
g_ssPickFirst.Free();
if (SelectEntities(_T("\n选择待转成墙体的简单曲线(LINE,ARC,CIRCLE):"), ss, mask) == RTNORM)
{
adsout << _T("\n处理重线...");
HandleCurveDup(ss);
adsout << _T("\n处理交线...");
HandleCurveInters(ss, 10.0);
// adsout << _T("\n识别外墙...");
}
}
void TestHatch()
{
Entity ent;
RBList mask(RTDXF0, _T("HATCH"), NULL);
if (SelectEntity(_T("\nPlease select a hatch:"), ent, mask) == RTNORM)
{
OPENOBJ_BEGIN(ent, AcDb::kForRead, AcDbHatch, pHatch);
if (pHatch)
{
int nLoopNum = pHatch->numLoops();
for (int i=0; i<nLoopNum; i++)
{
Adesk::Int32 loopType = 0;
AcGePoint2dArray vertexes;
AcGeDoubleArray bulges;
if (pHatch->getLoopAt(i, loopType, vertexes, bulges) == Acad::eOk)
{
adsout << _T("\nLoop") << i << _T(" vertex num=") << vertexes.length();
adsout << _T("\nLoop") << i << _T(" bulges num=") << bulges.length();
}
}
}
OPENOBJ_END();
}
}
// Zyu modify on 100722,支持64位
//extern int g_iSrcImgType;
//extern int WriteJpeg( FILE * input_file, FILE * output_file);
void TGif2Jpg()
{
XString sFileIn;
if (GetFileDia(sFileIn, 0, _T("gif"), _T("选择GIF文件")) == RTNORM)
{
XPathParser parser(sFileIn);
XString sFileOut;
sFileOut << parser.m_sDrive << parser.m_sDir << parser.m_sFileName << _T(".jpg");
FILE *fpIn = _tfopen(sFileIn, _T("rb"));
if (!fpIn)
{
return;
}
FILE *fpOut = _tfopen(sFileOut, _T("wb"));
if (fpOut)
{
/*
XPushMemVar<int> vTemp(g_iSrcImgType, 1);
WriteJpeg(fpIn, fpOut);
*/
CTangentImage::WriteJpeg(fpIn, fpOut, CXIMAGE_FORMAT_GIF);
fclose(fpOut);
}
fclose(fpIn);
}
}
void TTga2Jpg()
{
XString sFileIn;
if (GetFileDia(sFileIn, 0, _T("tga"), _T("选择TGA文件")) == RTNORM)
{
XPathParser parser(sFileIn);
XString sFileOut;
sFileOut << parser.m_sDrive << parser.m_sDir << parser.m_sFileName << _T(".jpg");
// Zyu modify on 100722,支持64位
/*
FILE *fpIn = _tfopen(sFileIn, _T("rb"));
if (!fpIn)
{
return;
}
FILE *fpOut = _tfopen(sFileOut, _T("wb"));
if (fpOut)
{
XPushMemVar<int> vTemp(g_iSrcImgType, 2);
WriteJpeg(fpIn, fpOut);
fclose(fpOut);
}
fclose(fpIn);
*/
CTangentImage::WriteJpeg(sFileIn, sFileOut, CXIMAGE_FORMAT_TGA);
}
}