1525 lines
52 KiB
C++
1525 lines
52 KiB
C++
// 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);
|
||
}
|
||
}
|