private VIZCore3D.NET.VIZCore3DControl vizcore3d;
public System.Drawing.Point MousePt { get; set; }
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);
MousePt = e.MousePosition;
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);
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
, e.MousePosition.Y
, true
, false
);
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
, e.MousePosition.Y
, true
, false
);
if (items.Count == 0) return;
vizcore3d.Object3D.Transform.Rotate(e.Node.ToArray(), 0, 0, 90, false, false);
}