Click or drag to resize

MouseBasedObjectMoveManagerOnMouseUpEvent Event

마우스 Up 이벤트

Namespace:  VIZCore3D.NET.Manager
Assembly:  VIZCore3D.NET (in VIZCore3D.NET.dll) Version: 2.8.24.1104 (2.8.24.1104)
Syntax
C#
public event MouseBaseObjectMouseUpEventHandler OnMouseUpEvent

Value

Type: MouseBaseObjectMouseUpEventHandler
Examples
C#
// 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);
}
See Also