Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

1525 lines
52 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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);
}
}