You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
6.4 KiB
C#
187 lines
6.4 KiB
C#
using GeoSigmaDrawLib;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace QuikGridCS
|
|
{
|
|
public partial class Form1 : Form
|
|
{
|
|
public Form1()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 选择输入文件.
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The e.</param>
|
|
private void btnInputFile_Click(object sender, EventArgs e)
|
|
{
|
|
OpenFileDialog ofd = new OpenFileDialog();
|
|
ofd.Filter = "*.xyz|*.xyz|*.*|*.*";
|
|
ofd.RestoreDirectory = true;
|
|
if(ofd.ShowDialog() == DialogResult.OK)
|
|
{
|
|
this.txtInput.Text = ofd.FileName;
|
|
|
|
this.LoadFile(this.txtInput.Text);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 加载文件.
|
|
/// </summary>
|
|
/// <param name="xyzFile">The xyz file.</param>
|
|
private void LoadFile(string xyzFile)
|
|
{
|
|
if (Interface.QuikGridLoadFileXyz(this.txtInput.Text) == 0)
|
|
{
|
|
return;
|
|
}
|
|
loadGridInfo();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载网格信息.
|
|
/// </summary>
|
|
private void loadGridInfo()
|
|
{
|
|
double xMin = 0;
|
|
double xMax = 0;
|
|
double yMin = 0;
|
|
double yMax = 0;
|
|
int countX = 0;
|
|
int countY = 0;
|
|
double zMin = 0;
|
|
double zMax = 0;
|
|
|
|
int nReturn = Interface.QuikGridGetView(ref xMin, ref xMax, ref yMin, ref yMax, ref countX, ref countY, ref zMin, ref zMax);
|
|
if (nReturn == 0)
|
|
{
|
|
return;
|
|
}
|
|
this.txtXMin.Text = $"{xMin}";
|
|
this.txtXMax.Text = $"{xMax}";
|
|
this.txtYMin.Text = $"{yMin}";
|
|
this.txtYMax.Text = $"{yMax}";
|
|
this.txtZMin.Text = $"{zMin}";
|
|
this.txtZMax.Text = $"{zMax}";
|
|
this.txtXCount.Text = $"{countX}";
|
|
this.txtYCount.Text = $"{countY}";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 输出文件选择事件.
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The e.</param>
|
|
private void btnOutputFile_Click(object sender, EventArgs e)
|
|
{
|
|
SaveFileDialog sfd = new SaveFileDialog();
|
|
sfd.Filter = "Surfer GRD|*.grd";
|
|
sfd.RestoreDirectory = true;
|
|
if (sfd.ShowDialog() == DialogResult.OK)
|
|
{
|
|
this.txtOutput.Text = sfd.FileName;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 选择Kev输出文件.
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The e.</param>
|
|
private void btnOutputFileKev_Click(object sender, EventArgs e)
|
|
{
|
|
SaveFileDialog sfd = new SaveFileDialog();
|
|
sfd.Filter = "*.Kev|*.kev|*.dfd|*.dfd";
|
|
sfd.RestoreDirectory = true;
|
|
if (sfd.ShowDialog() == DialogResult.OK)
|
|
{
|
|
this.txtOutputKev.Text = sfd.FileName;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 执行输出.
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The e.</param>
|
|
private void btnOutput_Click(object sender, EventArgs e)
|
|
{
|
|
string strFileInput = this.txtInput.Text;
|
|
string strFileKev = this.txtOutputKev.Text;
|
|
int nXCount = 0;
|
|
int nYCount = 0;
|
|
if (int.TryParse(this.txtXCount.Text, out nXCount) == false ||
|
|
int.TryParse(this.txtYCount.Text, out nYCount) == false)
|
|
{
|
|
MessageBox.Show("网格数量不正确");
|
|
return;
|
|
}
|
|
double dContourSpace = double.Parse(txtContourSpace.Text);
|
|
int dContourLable = int.Parse(txtContourLableSpace.Text);
|
|
double dSmooth = double.Parse(this.txtSmoothFactor.Text);
|
|
Interface.QuikGridCreate(strFileInput, strFileKev, nXCount, nYCount, dContourSpace, dContourLable, dSmooth);
|
|
MessageBox.Show("网格化成功,结果已经保存到文件!");
|
|
return;
|
|
//Interface.QuikGridGenerateGrid();
|
|
|
|
if (Interface.QuikGridFromFile(strFileInput, nXCount, nYCount)== true)
|
|
{
|
|
Interface.QuikGridGenerateGrid();
|
|
double xMin = 0;
|
|
double xMax = 0;
|
|
double yMin = 0;
|
|
double yMax = 0;
|
|
int countX = 0;
|
|
int countY = 0;
|
|
double zMin = 0;
|
|
double zMax = 0;
|
|
|
|
int nReturn = Interface.QuikGridGetView(ref xMin, ref xMax, ref yMin, ref yMax, ref countX, ref countY, ref zMin, ref zMax);
|
|
if (nReturn == 0)
|
|
{
|
|
return;
|
|
}
|
|
double dStepX = (xMax - xMin) / (countX-1);
|
|
double dStepY = (yMax - yMin) / (countY-1);
|
|
string strFileOut = this.txtOutput.Text;
|
|
if (!string.IsNullOrEmpty(strFileOut))
|
|
{
|
|
Interface.QuikGridSaveFileGrd(strFileOut);
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(strFileKev))
|
|
{
|
|
IntPtr ptrValues = Interface.QuikGridGridValue();
|
|
|
|
DrawerData drawer = new DrawerData();
|
|
long pos = drawer.CreateMesh("背景", ptrValues, xMin, yMin, countX, countY, dStepX, dStepY, zMin, zMax);
|
|
//double dContourSpace = double.Parse(txtContourSpace.Text);
|
|
//int dContourLable = int.Parse(txtContourLableSpace.Text);
|
|
if(dContourSpace>0&& dContourLable > 0)
|
|
{
|
|
drawer.CreateContour(pos, dContourSpace, dContourLable);
|
|
}
|
|
|
|
drawer.SaveAs(strFileKev);
|
|
drawer.Dispose();
|
|
// 释放数据指针
|
|
GeoSigmaLib.PointerArrayDelete(ptrValues);
|
|
}
|
|
|
|
loadGridInfo();
|
|
MessageBox.Show("网格化成功,结果已经保存到文件!");
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|