///<summary>移动</summary> void scene_EditObjectMove(object sender, Earth.PickEventArgs e) { btnSave.IsEnabled = isModify = true; if (editobj.modifyStatus == EModifyStatus.未修改) { editobj.modifyStatus = EModifyStatus.修改; editobj.color = Colors.Red; } if (editobj is pPowerLine && e.pickedObject is EDDot) //线路修改,从eddot传递到线路 { assobj = e.pickedObject as EDDot; pPowerLine lin = editobj as pPowerLine; lin.VecPoints[assobj.order] = assobj.VecLocation; lin.sendChangedLocation(); } else if (editobj is pArea && e.pickedObject is EDDot) //区域修改, 从eddot传递到区域 { assobj = e.pickedObject as EDDot; pArea lin = editobj as pArea; lin.VecPoints[assobj.order] = assobj.VecLocation; lin.sendChangedLocation(); } }
///<summary>选中对象</summary> void scene_EditObjectSelected(object sender, Earth.PickEventArgs e) { if (editobj == null) { editobj = e.pickedObject; isNewObject = false; pgAcnt.SelectedObject = editobj.busiAccount; btnCreate.IsEnabled = false; btnDelete.IsEnabled = true; btnSave.IsEnabled = isModify = false; btnExit.IsEnabled = true; if (editobj is pPowerLine) //选中的线段 { pPowerLine lin = editobj as pPowerLine; int idx = 0; foreach (Point pnt in lin.points) { EDDot dot = new EDDot(elayer) { id = MyClassLibrary.helper.getGUID(), location = pnt.ToString(), }; dot.order = idx; dot.scaleX = dot.scaleY = dot.scaleZ = distnet.UnitMeasure * 5; elayer.AddObject(dot); idx++; } distnet.scene.UpdateModel(); } else if (editobj is pArea) //选中的区域 { pArea lin = editobj as pArea; int idx = 0; foreach (Point pnt in lin.points) //zh注,应改写为原始坐标点集 { EDDot dot = new EDDot(elayer) { id = MyClassLibrary.helper.getGUID(), location = pnt.ToString(), }; dot.order = idx; dot.scaleX = dot.scaleY = dot.scaleZ = distnet.UnitMeasure * 5; elayer.AddObject(dot); idx++; } distnet.scene.UpdateModel(); } oldID = editobj.id; } else if (e.pickedObject is EDDot) //选中的控制点, 服务于线段和区域 { assobj = e.pickedObject as EDDot; btnDelDot.Visibility = btnAddDot.Visibility = System.Windows.Visibility.Visible; } }
//拾取到对象,处理特别显示,包括供电范围与电源追溯 void scene_Picked(object sender, Earth.PickEventArgs e) { root.distnet.clearTraceSupplyRange(); if (e.pickedObject == null) { return; } if (e.pickedObject is DNDistTransformer || e.pickedObject is DNSwitchHouse) //电源追溯 { root.distnet.showSourceTrace(e.pickedObject); //List<TopoFindResult> items = root.distnet.findByMaxLength(e.pickedObject.id, new List<EObjectType>() { EObjectType.两卷主变, EObjectType.三卷主变 }, 200); //测试按长度搜 ////List<TopoFindResult> items = root.distnet.findByMinSurplusLoad(e.pickedObject.id, new List<EObjectType>() { EObjectType.两卷主变, EObjectType.三卷主变 }, -10);//测度按负荷余量搜 ////查看测试结果 //int idx = 0; //foreach (var itm in items) //{ // idx++; // Color c=Colors.White; // if (idx == 1) // c = Colors.OrangeRed; // else if (idx == 2) // c = Colors.Purple; // else if (idx == 3) // c = Colors.Orchid; // else if (idx == 4) // c = Colors.GreenYellow; // foreach (string id in itm.path) // { // PowerBasicObject item = root.distnet.findObj(id); // if (item is pSymbolObject) // { // (item as pSymbolObject).color = c; // (item as pSymbolObject).AnimationBegin(pSymbolObject.EAnimationType.闪烁); // } // else if (item is pPowerLine) // { // (item as pPowerLine).lineColor = c; // (item as pPowerLine).AnimationBegin(pPowerLine.EAnimationType.闪烁); // } // } //} } else if (e.pickedObject is DNMainTransformer || e.pickedObject is DNSubStation) //供电范围 { root.distnet.showSupplyRange(e.pickedObject); } }
///<summary>选中对象</summary> void scene_EditObjectSelected(object sender, Earth.PickEventArgs e) { if (isTopoBrowser) //拓扑浏览模式 { handleTopoBrowsePickedObject(e.pickedObject); } else //编辑模式 { #region 编辑模式 if (e.pickedObject == editobj) { return; } elayer.pModels.Clear(); if (e.pickedObject is EDDot) //选中的控制点, 服务于线段和区域 { assobj = e.pickedObject as EDDot; btnDelDot.Visibility = btnAddDot.Visibility = System.Windows.Visibility.Visible; } else { editobj = e.pickedObject; isNewObject = false; pgAcnt.SelectedObject = editobj.busiAccount; //btnCreate.IsEnabled = false; btnDelete.IsEnabled = true; //btnSave.IsEnabled = isModify = false; //btnExit.IsEnabled = true; if (editobj is pPowerLine) //选中的线段 { pPowerLine lin = editobj as pPowerLine; int idx = 0; foreach (Point pnt in lin.points) { EDDot dot = new EDDot(elayer) { id = MyClassLibrary.helper.getGUID(), location = pnt.ToString(), }; dot.order = idx; dot.scaleX = dot.scaleY = dot.scaleZ = distnet.UnitMeasure * 5; dot.symbolid = "小圆圈"; dot.isUseXModel = false; elayer.AddObject(dot); idx++; } } else if (editobj is pArea) //选中的区域 { pArea lin = editobj as pArea; int idx = 0; foreach (Point pnt in lin.points) //zh注,应改写为原始坐标点集 { EDDot dot = new EDDot(elayer) { id = MyClassLibrary.helper.getGUID(), location = pnt.ToString(), }; dot.order = idx; dot.scaleX = dot.scaleY = dot.scaleZ = distnet.UnitMeasure * 5; elayer.AddObject(dot); idx++; } } distnet.scene.UpdateModel(); oldID = editobj.id; } #endregion } //if (editobj == null) //{ // editobj = e.pickedObject; // isNewObject = false; // pgAcnt.SelectedObject = editobj.busiAccount; // btnCreate.IsEnabled = false; // btnDelete.IsEnabled = true; // btnSave.IsEnabled = isModify = false; // btnExit.IsEnabled = true; // if (editobj is pPowerLine) //选中的线段 // { // pPowerLine lin = editobj as pPowerLine; // int idx = 0; // foreach (Point pnt in lin.points) // { // EDDot dot = new EDDot(elayer) // { // id=MyClassLibrary.helper.getGUID(), // location=pnt.ToString(), // }; // dot.order = idx; // dot.scaleX = dot.scaleY = dot.scaleZ = distnet.UnitMeasure*5; // elayer.AddObject(dot); // idx++; // } // distnet.scene.UpdateModel(); // } // else if (editobj is pArea) //选中的区域 // { // pArea lin = editobj as pArea; // int idx = 0; // foreach (Point pnt in lin.points) //zh注,应改写为原始坐标点集 // { // EDDot dot = new EDDot(elayer) // { // id = MyClassLibrary.helper.getGUID(), // location = pnt.ToString(), // }; // dot.order = idx; // dot.scaleX = dot.scaleY = dot.scaleZ = distnet.UnitMeasure * 5; // elayer.AddObject(dot); // idx++; // } // distnet.scene.UpdateModel(); // } // oldID = editobj.id; //} //else if (e.pickedObject is EDDot) //选中的控制点, 服务于线段和区域 //{ // assobj = e.pickedObject as EDDot; // btnDelDot.Visibility = btnAddDot.Visibility = System.Windows.Visibility.Visible; //} }