private void btnGetNormal_Click(object sender, EventArgs e) { if (String.IsNullOrEmpty(txtScreenX.Text) == true) { return; } if (String.IsNullOrEmpty(txtScreenY.Text) == true) { return; } int x = Convert.ToInt32(Convert.ToSingle(txtScreenX.Text)); int y = Convert.ToInt32(Convert.ToSingle(txtScreenY.Text)); VIZCore3D.NET.Data.PickedSurfaceData item = vizcore3d.View.GetPickedSurfaceNormalVector(x, y); AddSurfaceData( item.Picked , item.Surface , item.Position , item.Normal); if (item.Picked && item.Surface) { DrawLine(item.Position, item.Normal); } }
private void View_OnViewDefaultMouseDownEvent(object sender, MouseEventArgs e) { if (ckEnable.Checked == false) { return; } if (e.Button != MouseButtons.Left) { return; } VIZCore3D.NET.Data.PickedSurfaceData data = vizcore3d.View.GetPickedSurfaceNormalVector(e.X, e.Y); // 선택된 부재가 없음 if (data.Picked == false) { return; } // 표면점이 없음 if (data.Surface == false) { return; } // 선택된 지점 VIZCore3D.NET.Data.Vertex3D position = data.Position; // 선택된 지점의 Normal Vector VIZCore3D.NET.Data.Vector3D normal = data.Normal; string str = string.Format("VERTEX: {0}\r\nNORMAL : {1}", position.ToString(), normal.ToString()); System.Console.WriteLine(str); int nodeIndex = vizcore3d.View.HitTest(e.X, e.Y); if (nodeIndex < 0) { return; } VIZCore3D.NET.Data.Node node = vizcore3d.Object3D.FromIndex(nodeIndex); int noteId = vizcore3d.Review.Note.AddNoteSurface(string.Format("{0}\r\n{1}", node.GetParentName(), str), new VIZCore3D.NET.Data.Vertex3D(position.X + 5000, position.Y + 5000, position.Z + 1000), position, GetStyle()); if (ckDepthTest.Checked == true) { vizcore3d.Review.Note.EnableDepthTest(noteId, true); } }