/// <summary> /// 장애물이 삭제될 경우 발생하는 이벤트 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ObsDeleteCommandExecuted(object sender, ExecutedRoutedEventArgs e) { List <ObsShape> deldata = new List <ObsShape>(); foreach (var item in ObsDiagram.SelectedItems) { if (item is ObsShape) { ObsShape del = item as ObsShape; deldata.Add(del); } } VIewer3D.Instance.RemoveObsPoints(); for (int i = 0; i < deldata.Count; i++) { ObsDiagram.RemoveShape(deldata[i]); } if (loadTime == false) { Save(); } }
/// <summary> /// 3D 에서 장애물 삭제시 장애물 다이어그램에서도 삭제한다. /// </summary> /// <param name="xPoint"></param> /// <param name="yPoint"></param> public void deleteObsShape(double xPoint, double yPoint) { var Obs = ObsDiagram.Items.OfType <ObsShape>().Where(x => x.ObsPointX == xPoint && x.ObsPointY == yPoint).ToList(); if (Obs.Count == 1) { ObsDiagram.RemoveShape(Obs[0]); } reConnection(); }
/// <summary> /// 마우스 휠 클릭시 클릭한 시점을 중앙으로 이동해준다. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ObsDiagram_MouseDown(object sender, MouseButtonEventArgs e) { if (e.MiddleButton == MouseButtonState.Pressed) { //클릭 위치 확인 하여 클릭 시점 중앙으로 위치 이동 Point ClickPoint = (this.ObsDiagram as RadDiagram).GetTransformedPoint(e.GetPosition(this.ObsDiagram as UIElement)); double width = ObsDiagram.Viewport.Width / 2; double heigh = ObsDiagram.Viewport.Height / 2; Point setPoistion = new System.Windows.Point(ClickPoint.X - width, ClickPoint.Y - heigh); ObsDiagram.BringIntoView(setPoistion, ObsDiagram.Zoom, true); } }
/// <summary> /// 장애물 노드를 추가해준다. /// </summary> /// <param name="pointX"></param> /// <param name="pointY"></param> /// <param name="pointType"></param> public void add_ObsPoint(float pointX, float pointY, int pointType) { //탭 장애물로 전환해주고 tabCon.SelectedIndex = 1; //인덱스 번호를 찾는다 가장 큰 번호에 +1을 한다. int index = 0; var getindex = ObsDiagram.Items.OfType <ObsShape>().OrderByDescending(x => x.Index).ToList(); if (getindex.Count == 0) { index = 0; } else { index = getindex[0].Index + 1; } //다이어그램에 포인트 추가 var shape = new ObsShape() { Position = new Point(createObsX, createObsY), Index = index, PointType = pointType.ToString(), ObsPointX = pointX, ObsPointY = pointY, _oldPointtype = pointType.ToString() }; shape.chitem += Shape_chitem; ObsDiagram.AddShape(shape); createObsX += 150; if (createObsX == 900) { createObsX = 0; createObsY += 120; } ObsDiagram.AutoFit(); }
/// <summary> /// 경로, 장애물 다이어그램을 저장한다. /// </summary> public void Save() { writeDiagram(Navidiagram.Save(), Global.projectNaviDiagram); writeDiagram(ObsDiagram.Save(), Global.projectObsDiagram); }