MouseBasedObjectMoveManagerOnMouseMoveEvent Event |
Namespace: VIZCore3D.NET.Manager
public event MouseBaseObjectMouseMoveEventHandler OnMouseMoveEvent
// VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; // 마우스 위치 public System.Drawing.Point MousePt { get; set; } // 선택 BLOCK 이동 거리 public VIZCore3D.NET.Data.Vertex3D BlockMovingDistance { get; set; } private void Example() { // 마우스 다운 이벤트 vizcore3d.View.MouseBasedObjectMove.OnMouseDownEvent += MouseBasedObjectMove_OnMouseDownEvent; // 마우스 이동 이벤트 vizcore3d.View.MouseBasedObjectMove.OnMouseMoveEvent += MouseBasedObjectMove_OnMouseMoveEvent; // 마우스 업 이벤트 vizcore3d.View.MouseBasedObjectMove.OnMouseUpEvent += MouseBasedObjectMove_OnMouseUpEvent; // 마우스 더블클릭 이벤트 vizcore3d.View.MouseBasedObjectMove.OnMouseDoubleClickEvent += MouseBasedObjectMove_OnMouseDoubleClickEvent; } private void MouseBasedObjectMove_OnMouseDownEvent(object sender, VIZCore3D.NET.Event.EventManager.MouseBaseObjectMoveEventArgs e) { string str = string.Format("Mouse Down : {0} / {1} / {2} / {3} / {4} / {5} / {6}" , e.MoveOption.ToString() , e.GroupId , e.Move.ToString() , e.Anlge , e.MousePosition.X , e.MousePosition.Y , e.Node.Count() ); System.Diagnostics.Debug.WriteLine(str); // Mouse Down 위치 백업 MousePt = e.MousePosition; // 선택 BLOCK 위치 BlockMovingDistance = new VIZCore3D.NET.Data.Vertex3D(0, 0, 0); } private void MouseBasedObjectMove_OnMouseMoveEvent(object sender, VIZCore3D.NET.Event.EventManager.MouseBaseObjectMoveEventArgs e) { string str = string.Format("Mouse Move : {0} / {1} / {2} / {3} / {4} / {5} / {6}" , e.MoveOption.ToString() , e.GroupId , e.Move.ToString() , e.Anlge , e.MousePosition.X , e.MousePosition.Y , e.Node.Count() ); System.Diagnostics.Debug.WriteLine(str); // 마우스로 회전일 경우는 중단 if (e.MoveOption == VIZCore3D.NET.Manager.MouseBasedObjectMoveManager.MovingOptions.ROTATION) return; // 현재 이동되는 개체의 연계된 리뷰 정보(아이디) 조회 List<int> review = vizcore3d.View.MouseBasedObjectMove.GetLinkedReview(e.GroupId); if (review.Count == 0) return; // 해당 리뷰(노트)의 정보 조회 VIZCore3D.NET.Data.NoteItem note = vizcore3d.Review.Note.GetItem(review[0]); // 해당 리뷰(노트)의 위치 정보 조회 List<VIZCore3D.NET.Data.ReviewPosition> position = note.Position; // 마우스가 이동한 거리만큼 리뷰의 위치를 재설정 note.UpdatePosition(position[0], position[0].Position + e.Move); // BLOCK 이동 거리 누적 BlockMovingDistance = BlockMovingDistance + e.Move; } private void MouseBasedObjectMove_OnMouseUpEvent(object sender, VIZCore3D.NET.Event.EventManager.MouseBaseObjectMoveEventArgs e) { string str = string.Format("Mouse Up : {0} / {1} / {2} / {3} / {4} / {5} / {6}" , e.MoveOption.ToString() , e.GroupId , e.Move.ToString() , e.Anlge , e.MousePosition.X , e.MousePosition.Y , e.Node.Count() ); System.Diagnostics.Debug.WriteLine(str); string ptStr = string.Format("X: {0}=={1} / Y: {2}=={3}", MousePt.X, e.MousePosition.X, MousePt.Y, e.MousePosition.Y); System.Diagnostics.Debug.WriteLine(ptStr); List<VIZCore3D.NET.Data.NearestObjectByAxisPoint> items = vizcore3d.GeometryUtility.GetNearestObjects( e.MousePosition.X /* Mouse Location X */ , e.MousePosition.Y /* Mouse Location Y */ , true /* Visible Only */ , false /* Opaque Only */ ); if (items.Count != 1) return; // 현재 이동되는 개체의 연계된 리뷰 정보(아이디) 조회 List<int> review = vizcore3d.View.MouseBasedObjectMove.GetLinkedReview(e.GroupId); if (review.Count == 0) return; // 해당 리뷰(노트)의 정보 조회 VIZCore3D.NET.Data.NoteItem note = vizcore3d.Review.Note.GetItem(review[0]); // 해당 리뷰(노트)의 위치 정보 조회 List<VIZCore3D.NET.Data.ReviewPosition> position = note.Position; // 마우스가 이동한 거리만큼 리뷰의 위치를 재설정 note.UpdatePosition(position[0], position[0].Position - new VIZCore3D.NET.Data.Vertex3D(BlockMovingDistance.X, BlockMovingDistance.Y, BlockMovingDistance.Z)); // 원래 이동전 위치로 이동 vizcore3d.Object3D.Transform.Move(e.Node.ToArray(), -BlockMovingDistance.X, -BlockMovingDistance.Y, -BlockMovingDistance.Z, false); } private void MouseBasedObjectMove_OnMouseDoubleClickEvent(object sender, Event.EventManager.MouseBaseObjectMoveEventArgs e) { string str = string.Format("Mouse DoubleClick : {0} / {1} / {2} / {3} / {4} / {5} / {6}" , e.MoveOption.ToString() , e.GroupId , e.Move.ToString() , e.Anlge , e.MousePosition.X , e.MousePosition.Y , e.Node.Count() ); System.Diagnostics.Debug.WriteLine(str); List<VIZCore3D.NET.Data.NearestObjectByAxisPoint> items = vizcore3d.GeometryUtility.GetNearestObjects( e.MousePosition.X /* Mouse Location X */ , e.MousePosition.Y /* Mouse Location Y */ , true /* Visible Only */ , false /* Opaque Only */ ); if (items.Count == 0) return; // 선택된 블록 90도 회전 vizcore3d.Object3D.Transform.Rotate(e.Node.ToArray(), 0, 0, 90, false, false); }