Update test app (new rendering code)
git-svn-id: https://triangle.svn.codeplex.com/svn@75034 0e2699bc-83d4-4a8f-98e7-55e24ab8c7a5
This commit is contained in:
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MeshExplorer
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MeshExplorer
|
||||
{
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace MeshExplorer
|
||||
|
||||
public void AddItem(string message, bool warning)
|
||||
{
|
||||
ILog<LogItem> log = Log.Instance;
|
||||
var log = Log.Instance;
|
||||
|
||||
if (warning)
|
||||
{
|
||||
@@ -32,7 +32,7 @@ namespace MeshExplorer
|
||||
{
|
||||
listLog.Items.Clear();
|
||||
|
||||
ILog<LogItem> log = Log.Instance;
|
||||
var log = Log.Instance;
|
||||
|
||||
foreach (var item in log.Data)
|
||||
{
|
||||
@@ -73,7 +73,26 @@ namespace MeshExplorer
|
||||
|
||||
private void listLog_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Delete)
|
||||
if (e.KeyCode == Keys.C)
|
||||
{
|
||||
if (ModifierKeys == Keys.Control)
|
||||
{
|
||||
var selection = listLog.SelectedItems;
|
||||
|
||||
if (selection != null && selection.Count > 0)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
foreach (var item in selection)
|
||||
{
|
||||
GetRowText(sb, item);
|
||||
}
|
||||
|
||||
Clipboard.SetText(sb.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (e.KeyCode == Keys.Delete)
|
||||
{
|
||||
if (ModifierKeys == Keys.Control)
|
||||
{
|
||||
@@ -110,7 +129,8 @@ namespace MeshExplorer
|
||||
|
||||
if (lvi != null)
|
||||
{
|
||||
sb.AppendLine(lvi.Text);
|
||||
sb.Append(lvi.Text);
|
||||
sb.Append("; ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,13 +5,13 @@ using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using MeshExplorer.Controls;
|
||||
using MeshExplorer.IO;
|
||||
using MeshRenderer.Core;
|
||||
using TriangleNet;
|
||||
using TriangleNet.Geometry;
|
||||
using TriangleNet.Meshing;
|
||||
using TriangleNet.Meshing.Algorithm;
|
||||
using TriangleNet.Smoothing;
|
||||
using TriangleNet.Tools;
|
||||
using TriangleNet.Smoothing;
|
||||
using TriangleNet.Rendering;
|
||||
|
||||
namespace MeshExplorer
|
||||
{
|
||||
@@ -25,7 +25,6 @@ namespace MeshExplorer
|
||||
FormGenerator frmGenerator;
|
||||
|
||||
RenderManager renderManager;
|
||||
RenderData renderData;
|
||||
|
||||
public FormMain()
|
||||
{
|
||||
@@ -41,12 +40,14 @@ namespace MeshExplorer
|
||||
settings = new Settings();
|
||||
|
||||
renderManager = new RenderManager();
|
||||
renderManager.CreateDefaultControl();
|
||||
|
||||
IRenderControl control = new TriangleNet.Rendering.GDI.RenderControl();
|
||||
|
||||
/*
|
||||
if (!renderManager.CreateControl("MeshRenderer.SharpGL2.dll", new string[] { "SharpGL.dll" }))
|
||||
if (!renderManager.TryCreateControl("Triangle.Rendering.SharpGL.dll",
|
||||
new string[] { "SharpGL.dll" }, out control))
|
||||
{
|
||||
renderManager.CreateDefaultControl();
|
||||
control = new TriangleNet.Rendering.GDI.RenderControl();
|
||||
|
||||
if (frmLog == null)
|
||||
{
|
||||
@@ -55,34 +56,47 @@ namespace MeshExplorer
|
||||
|
||||
frmLog.AddItem("Failed to initialize OpenGL.", true);
|
||||
}
|
||||
*/
|
||||
|
||||
var control = renderManager.RenderControl;
|
||||
//*/
|
||||
|
||||
if (control != null)
|
||||
{
|
||||
this.splitContainer1.Panel2.Controls.Add(control);
|
||||
|
||||
// Initialize control
|
||||
control.BackColor = Color.Black;
|
||||
control.Dock = DockStyle.Fill;
|
||||
control.Font = new Font("Consolas", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
|
||||
control.Location = new System.Drawing.Point(0, 0);
|
||||
control.Name = "renderControl1";
|
||||
control.Size = new Size(703, 612);
|
||||
control.TabIndex = 0;
|
||||
control.Text = "meshRenderer1";
|
||||
|
||||
renderManager.Initialize();
|
||||
InitializeRenderControl((Control)control);
|
||||
renderManager.Initialize(control);
|
||||
}
|
||||
else
|
||||
{
|
||||
DarkMessageBox.Show("Ooops ...", "Failed to initialize renderer.");
|
||||
}
|
||||
|
||||
renderData = new RenderData();
|
||||
}
|
||||
|
||||
|
||||
private void InitializeRenderControl(Control control)
|
||||
{
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.Controls.Add(control);
|
||||
|
||||
var size = this.splitContainer1.Panel2.ClientRectangle;
|
||||
|
||||
// Initialize control
|
||||
control.BackColor = Color.Black;
|
||||
control.Dock = DockStyle.Fill;
|
||||
control.Font = new Font("Consolas", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
|
||||
control.Location = new System.Drawing.Point(0, 0);
|
||||
control.Name = "renderControl1";
|
||||
control.Size = new Size(size.Width, size.Height);
|
||||
control.TabIndex = 0;
|
||||
control.Text = "renderControl1";
|
||||
control.MouseClick += new MouseEventHandler(RenderControl_MouseClick);
|
||||
|
||||
this.splitContainer1.ResumeLayout();
|
||||
}
|
||||
|
||||
private void RenderControl_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
var pt = e.Location;
|
||||
|
||||
renderManager.Click(((float)pt.X), ((float)pt.Y), e.Button);
|
||||
}
|
||||
|
||||
private void Form1_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
switch (e.KeyCode)
|
||||
@@ -194,7 +208,7 @@ namespace MeshExplorer
|
||||
// Handle window minimize and maximize
|
||||
if (!isResizing)
|
||||
{
|
||||
renderManager.HandleResize();
|
||||
renderManager.Resize();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,7 +219,7 @@ namespace MeshExplorer
|
||||
if (this.ClientSize != this.oldClientSize)
|
||||
{
|
||||
this.oldClientSize = this.ClientSize;
|
||||
renderManager.HandleResize();
|
||||
renderManager.Resize();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,8 +274,7 @@ namespace MeshExplorer
|
||||
menuToolsRcm.Enabled = false;
|
||||
|
||||
// Render input
|
||||
renderData.SetInputGeometry(input);
|
||||
renderManager.SetData(renderData);
|
||||
renderManager.Set(input);
|
||||
|
||||
// Update window caption
|
||||
this.Text = "Triangle.NET - Mesh Explorer - " + settings.CurrentFile;
|
||||
@@ -270,9 +283,7 @@ namespace MeshExplorer
|
||||
private void HandleMeshImport()
|
||||
{
|
||||
// Render mesh
|
||||
renderData.SetMesh(mesh);
|
||||
renderManager.SetData(renderData);
|
||||
//renderManager.Initialize();
|
||||
renderManager.Set(mesh, true);
|
||||
|
||||
// Update window caption
|
||||
this.Text = "Triangle.NET - Mesh Explorer - " + settings.CurrentFile;
|
||||
@@ -292,8 +303,7 @@ namespace MeshExplorer
|
||||
private void HandleMeshUpdate()
|
||||
{
|
||||
// Render mesh
|
||||
renderData.SetMesh(mesh);
|
||||
renderManager.SetData(renderData);
|
||||
renderManager.Set(mesh, false);
|
||||
|
||||
// Update Statistic view
|
||||
statisticView.HandleMeshUpdate(mesh);
|
||||
@@ -675,7 +685,6 @@ namespace MeshExplorer
|
||||
else
|
||||
{
|
||||
RasterImage img = new RasterImage();
|
||||
img.ColorScheme = ColorManager.LightScheme();
|
||||
img.Export(this.mesh, export.ImageName, size);
|
||||
}
|
||||
}
|
||||
@@ -696,7 +705,7 @@ namespace MeshExplorer
|
||||
|
||||
if (menuViewVoronoi.Checked)
|
||||
{
|
||||
renderManager.ShowVoronoi = false;
|
||||
//renderManager.ShowVoronoi = false;
|
||||
menuViewVoronoi.Checked = false;
|
||||
return;
|
||||
}
|
||||
@@ -712,8 +721,7 @@ namespace MeshExplorer
|
||||
voronoi = new Voronoi(mesh);
|
||||
}
|
||||
|
||||
renderData.SetVoronoi(voronoi);
|
||||
renderManager.SetData(renderData);
|
||||
renderManager.Set(voronoi, false);
|
||||
|
||||
menuViewVoronoi.Checked = true;
|
||||
}
|
||||
|
||||
@@ -57,7 +57,8 @@ namespace MeshExplorer
|
||||
private ITriangle FindTriangleAt(float x, float y)
|
||||
{
|
||||
// Get mesh coordinates
|
||||
var p = renderControl.Zoom.ScreenToWorld(x, y);
|
||||
var p = new System.Drawing.PointF(x, y);
|
||||
renderControl.Zoom.ScreenToWorld(ref p);
|
||||
|
||||
topoControlView.SetPosition(p);
|
||||
|
||||
|
||||
@@ -12,15 +12,15 @@ namespace MeshExplorer.IO
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using TriangleNet;
|
||||
using MeshRenderer.Core;
|
||||
using MeshRenderer.Core.GDI;
|
||||
using TriangleNet.Rendering;
|
||||
using TriangleNet.Rendering.GDI;
|
||||
|
||||
/// <summary>
|
||||
/// Writes an image of the mesh to disk.
|
||||
/// </summary>
|
||||
public class RasterImage
|
||||
{
|
||||
ColorManager colors = ColorManager.Default();
|
||||
ColorManager colors = RasterImage.LightScheme();
|
||||
|
||||
public ColorManager ColorScheme
|
||||
{
|
||||
@@ -36,10 +36,6 @@ namespace MeshExplorer.IO
|
||||
/// <param name="width">The desired width (pixel) of the image.</param>
|
||||
public void Export(Mesh mesh, string filename, int width)
|
||||
{
|
||||
// Get mesh data -- TODO: Use RenderControl's RenderData
|
||||
RenderData data = new RenderData();
|
||||
data.SetMesh(mesh);
|
||||
|
||||
// Check file name
|
||||
if (String.IsNullOrWhiteSpace(filename))
|
||||
{
|
||||
@@ -53,21 +49,21 @@ namespace MeshExplorer.IO
|
||||
{
|
||||
bitmap = new Bitmap(400, 200);
|
||||
Graphics g = Graphics.FromImage(bitmap);
|
||||
g.Clear(colors.Background);
|
||||
g.Clear(Color.White);
|
||||
|
||||
string message = String.Format("Sorry, I won't render {0} points on such a small image!", mesh.Vertices.Count);
|
||||
|
||||
SizeF sz = g.MeasureString(message, SystemFonts.DefaultFont);
|
||||
|
||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
g.DrawString(message, SystemFonts.DefaultFont, colors.Point,
|
||||
g.DrawString(message, SystemFonts.DefaultFont, Brushes.Black,
|
||||
200 - sz.Width / 2, 100 - sz.Height / 2);
|
||||
|
||||
g.Dispose();
|
||||
}
|
||||
else
|
||||
{
|
||||
var bounds = data.Bounds;
|
||||
var bounds = mesh.Bounds;
|
||||
// World margin on each side
|
||||
float margin = (float)bounds.Height * 0.05f;
|
||||
float scale = width / ((float)bounds.Width + 2 * margin);
|
||||
@@ -76,16 +72,18 @@ namespace MeshExplorer.IO
|
||||
|
||||
bitmap = new Bitmap(width, target.Height, PixelFormat.Format32bppPArgb);
|
||||
|
||||
Zoom zoom = new Zoom();
|
||||
zoom.Initialize(target, bounds);
|
||||
|
||||
Graphics g = Graphics.FromImage(bitmap);
|
||||
g.Clear(colors.Background);
|
||||
|
||||
g.SmoothingMode = SmoothingMode.HighQuality;
|
||||
|
||||
MeshRenderer meshRenderer = new MeshRenderer(data, colors);
|
||||
meshRenderer.Render(g, zoom);
|
||||
var context = new RenderContext(new Projection(target), colors);
|
||||
context.Add(mesh, true);
|
||||
|
||||
var renderer = new LayerRenderer();
|
||||
renderer.Context = context;
|
||||
renderer.RenderTarget = g;
|
||||
renderer.Render();
|
||||
|
||||
g.Dispose();
|
||||
}
|
||||
@@ -97,5 +95,19 @@ namespace MeshExplorer.IO
|
||||
|
||||
bitmap.Save(filename, ImageFormat.Png);
|
||||
}
|
||||
|
||||
public static ColorManager LightScheme()
|
||||
{
|
||||
var colors = new ColorManager();
|
||||
|
||||
colors.Background = Color.White;
|
||||
colors.Point = new SolidBrush(Color.FromArgb(60, 80, 120));
|
||||
colors.SteinerPoint = new SolidBrush(Color.DarkGreen);
|
||||
colors.Line = new Pen(Color.FromArgb(150, 150, 150));
|
||||
colors.Segment = new Pen(Color.SteelBlue);
|
||||
colors.VoronoiLine = new Pen(Color.FromArgb(160, 170, 180));
|
||||
|
||||
return colors;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,10 +40,8 @@
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controls\ColorScheme.cs" />
|
||||
@@ -183,9 +181,9 @@
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\MeshRenderer.Core\MeshRenderer.Core.csproj">
|
||||
<Project>{9C5040DA-C739-43A1-8540-E6BD3ED6DB55}</Project>
|
||||
<Name>MeshRenderer.Core</Name>
|
||||
<ProjectReference Include="..\Triangle.Rendering\Triangle.Rendering.csproj">
|
||||
<Project>{41022e0e-bd0f-439e-bc3a-aabb1b43471b}</Project>
|
||||
<Name>Triangle.Rendering</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Triangle\Triangle.csproj">
|
||||
<Project>{F7907A0A-B75F-400B-9E78-BFAD00DB4D6B}</Project>
|
||||
|
||||
@@ -5,8 +5,8 @@ namespace MeshExplorer.Topology
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Text;
|
||||
using System.Windows.Forms;
|
||||
using MeshRenderer.Core;
|
||||
using TriangleNet;
|
||||
using TriangleNet.Rendering;
|
||||
|
||||
public class TopologyRenderControl : Control
|
||||
{
|
||||
@@ -14,12 +14,12 @@ namespace MeshExplorer.Topology
|
||||
private BufferedGraphics buffer;
|
||||
private BufferedGraphicsContext context;
|
||||
|
||||
Zoom zoom;
|
||||
Projection zoom;
|
||||
TopologyRenderer renderer;
|
||||
|
||||
bool initialized = false;
|
||||
|
||||
public Zoom Zoom
|
||||
public Projection Zoom
|
||||
{
|
||||
get { return zoom; }
|
||||
}
|
||||
@@ -33,7 +33,6 @@ namespace MeshExplorer.Topology
|
||||
|
||||
this.BackColor = Color.Black;
|
||||
|
||||
zoom = new Zoom(true);
|
||||
context = new BufferedGraphicsContext();
|
||||
}
|
||||
|
||||
@@ -44,11 +43,11 @@ namespace MeshExplorer.Topology
|
||||
{
|
||||
renderer = new TopologyRenderer(mesh);
|
||||
|
||||
zoom.Initialize(this.ClientRectangle);
|
||||
zoom = new Projection(this.ClientRectangle);
|
||||
//zoom.ClipMargin = 10.0f;
|
||||
|
||||
var b = mesh.Bounds;
|
||||
zoom.Update(new BoundingBox((float)b.Left, (float)b.Right,
|
||||
zoom.Initialize(new BoundingBox((float)b.Left, (float)b.Right,
|
||||
(float)b.Bottom, (float)b.Top));
|
||||
|
||||
InitializeBuffer();
|
||||
|
||||
@@ -3,13 +3,13 @@ namespace MeshExplorer.Topology
|
||||
{
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using MeshRenderer.Core;
|
||||
using TriangleNet;
|
||||
using TriangleNet.Geometry;
|
||||
using TriangleNet.Rendering;
|
||||
|
||||
public class TopologyRenderer
|
||||
{
|
||||
Zoom zoom;
|
||||
Projection zoom;
|
||||
Mesh mesh;
|
||||
PointF[] points;
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace MeshExplorer.Topology
|
||||
/// <summary>
|
||||
/// Renders the mesh.
|
||||
/// </summary>
|
||||
public void Render(Graphics g, Zoom zoom)
|
||||
public void Render(Graphics g, Projection zoom)
|
||||
{
|
||||
this.zoom = zoom;
|
||||
|
||||
@@ -142,7 +142,8 @@ namespace MeshExplorer.Topology
|
||||
{
|
||||
var brush = i == id ? Brushes.DarkRed : Point;
|
||||
|
||||
pt = zoom.WorldToScreen(points[i].X, points[i].Y);
|
||||
pt = points[i];
|
||||
zoom.WorldToScreen(ref pt);
|
||||
g.FillEllipse(brush, pt.X - 10f, pt.Y - 10f, 20, 20);
|
||||
|
||||
pt.X -= i > 9 ? 7 : 4;
|
||||
@@ -164,9 +165,9 @@ namespace MeshExplorer.Topology
|
||||
p1 = points[tri.P1];
|
||||
p2 = points[tri.P2];
|
||||
|
||||
p0 = zoom.WorldToScreen(p0.X, p0.Y);
|
||||
p1 = zoom.WorldToScreen(p1.X, p1.Y);
|
||||
p2 = zoom.WorldToScreen(p2.X, p2.Y);
|
||||
zoom.WorldToScreen(ref p0);
|
||||
zoom.WorldToScreen(ref p1);
|
||||
zoom.WorldToScreen(ref p2);
|
||||
|
||||
g.DrawLine(Line, p0, p1);
|
||||
g.DrawLine(Line, p1, p2);
|
||||
@@ -193,9 +194,9 @@ namespace MeshExplorer.Topology
|
||||
p1 = points[tri.P1];
|
||||
p2 = points[tri.P2];
|
||||
|
||||
p0 = zoom.WorldToScreen(p0.X, p0.Y);
|
||||
p1 = zoom.WorldToScreen(p1.X, p1.Y);
|
||||
p2 = zoom.WorldToScreen(p2.X, p2.Y);
|
||||
zoom.WorldToScreen(ref p0);
|
||||
zoom.WorldToScreen(ref p1);
|
||||
zoom.WorldToScreen(ref p2);
|
||||
|
||||
center = GetIncenter(p0, p1, p2);
|
||||
center.X -= 5;
|
||||
@@ -217,8 +218,8 @@ namespace MeshExplorer.Topology
|
||||
p0 = points[edge.P0];
|
||||
p1 = points[edge.P1];
|
||||
|
||||
p0 = zoom.WorldToScreen(p0.X, p0.Y);
|
||||
p1 = zoom.WorldToScreen(p1.X, p1.Y);
|
||||
zoom.WorldToScreen(ref p0);
|
||||
zoom.WorldToScreen(ref p1);
|
||||
|
||||
g.DrawLine(Line, p0, p1);
|
||||
}
|
||||
@@ -235,8 +236,8 @@ namespace MeshExplorer.Topology
|
||||
p0 = points[seg.P0];
|
||||
p1 = points[seg.P1];
|
||||
|
||||
p0 = zoom.WorldToScreen(p0.X, p0.Y);
|
||||
p1 = zoom.WorldToScreen(p1.X, p1.Y);
|
||||
zoom.WorldToScreen(ref p0);
|
||||
zoom.WorldToScreen(ref p1);
|
||||
|
||||
g.DrawLine(Segment, p0, p1);
|
||||
}
|
||||
@@ -251,8 +252,8 @@ namespace MeshExplorer.Topology
|
||||
p0 = points[selection.Org().ID];
|
||||
p1 = points[selection.Dest().ID];
|
||||
|
||||
p0 = zoom.WorldToScreen(p0.X, p0.Y);
|
||||
p1 = zoom.WorldToScreen(p1.X, p1.Y);
|
||||
zoom.WorldToScreen(ref p0);
|
||||
zoom.WorldToScreen(ref p1);
|
||||
|
||||
g.DrawLine(SelectedEdge, p0, p1);
|
||||
}
|
||||
@@ -270,9 +271,9 @@ namespace MeshExplorer.Topology
|
||||
p[1] = points[tri.P1];
|
||||
p[2] = points[tri.P2];
|
||||
|
||||
p[0] = zoom.WorldToScreen(p[0].X, p[0].Y);
|
||||
p[1] = zoom.WorldToScreen(p[1].X, p[1].Y);
|
||||
p[2] = zoom.WorldToScreen(p[2].X, p[2].Y);
|
||||
zoom.WorldToScreen(ref p[0]);
|
||||
zoom.WorldToScreen(ref p[1]);
|
||||
zoom.WorldToScreen(ref p[2]);
|
||||
|
||||
g.FillPolygon(SelectedTriangle, p);
|
||||
}
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Diagnostics;
|
||||
using System.Windows.Forms;
|
||||
using TriangleNet;
|
||||
using System.Diagnostics;
|
||||
using TriangleNet.Geometry;
|
||||
|
||||
namespace MeshExplorer.Views
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using TriangleNet;
|
||||
using TriangleNet.Geometry;
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using TriangleNet;
|
||||
using TriangleNet.Tools;
|
||||
using TriangleNet.Geometry;
|
||||
using TriangleNet.Tools;
|
||||
|
||||
namespace MeshExplorer.Views
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user