// KernCmd.cpp : Defines the initialization routines for the DLL. // // KernCmd.cpp : Defines the initialization routines for the DLL. // #include "stdafx.h" #include #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 #include 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 &arStandardBefore); void ReadStandardLayerToInitVector(std::vector &arStandardLayerRecord); void DeleteOldStandardLayerInCAD(std::vector &arStandardBefore); void ChangeNewStandardLayerToUpdate(std::vector &arStandardAfter); void ModifyStandardByOldLayerFile(std::vector &arStandardAfter); void LayerConvert(); void ReadLayerFromTextFile(CStdioFile *fp, std::vector &pLayerStandard, std::vector &arNotCreatStandardLayer); void InitNotCreatStandardLayer(CStdioFile *fp, std::vector &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 &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 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 cmdecho(_T("CMDECHO"), 0); XPushVar 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; iGetLeftStart(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(""), 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; igetLoopAt(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 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 vTemp(g_iSrcImgType, 2); WriteJpeg(fpIn, fpOut); fclose(fpOut); } fclose(fpIn); */ CTangentImage::WriteJpeg(sFileIn, sFileOut, CXIMAGE_FORMAT_TGA); } }