using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestMicroStructure
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void rbtnInputSingle_CheckedChanged(object sender, EventArgs e)
{
if (rbtnInputSingle.Checked)
{
lblFileInput.Text = "数据文件";
lblFileInput.Location = new Point(26, lblFileInput.Location.Y);
lblFileFault.Enabled = false;
txtFileFault.Enabled = false;
btnFileFault.Enabled = false;
lblFileGrid.Enabled = false;
txtFileGrid.Enabled = false;
btbFileGrid.Enabled = false;
}
}
private void rbtnInputMult_CheckedChanged(object sender, EventArgs e)
{
if (rbtnInputMult.Checked)
{
lblFileInput.Text = "等值线文件";
lblFileInput.Location = new Point(14, lblFileInput.Location.Y);
lblFileFault.Enabled = true;
txtFileFault.Enabled = true;
btnFileFault.Enabled = true;
lblFileGrid.Enabled = true;
txtFileGrid.Enabled = true;
btbFileGrid.Enabled = true;
}
}
///
/// 执行计算
///
/// 事件按钮
/// 事件参数
private void btnOK_Click(object sender, EventArgs e)
{
StructureCalculateParameter par = new StructureCalculateParameter();
par.m_dExtendDis = Convert.ToDouble(this.txtExtendDistance.Text);
par.m_dCloseDistance = Convert.ToDouble(this.txtCloseDistance.Text);
par.m_dMinimumArea = Convert.ToDouble(this.txtMiniArea.Text);
par.m_dOffsetDis = Convert.ToDouble(this.txtOffsetDistance.Text);
par.m_dMiniAngle = Convert.ToDouble(this.txtMiniAngle.Text);
par.m_dRedundant = Convert.ToDouble(this.txtRedundant.Text);
par.m_dRadius = Convert.ToDouble(this.txtStructureRadius.Text);
par.m_nLimitNum = Convert.ToInt32(this.txtMinPoints.Text);
par.m_dFaultCloseDis = Convert.ToDouble(this.txtFaultCloseDistance.Text);
par.m_bFaultFilter = this.ckbFaultFilter.Checked;
par.m_bSmooth = this.ckbSmooth.Checked;
par.m_dZoomin = Convert.ToDouble(this.txtZoomin.Text);
par.m_dUnitSacle = Convert.ToDouble(this.txtUnitScale.Text);
par.m_minDepth = -1000;
par.m_maxDepth = 1000;
par.m_ShapeTypes = StructureType.StructrueNone
| StructureType.High | StructureType.Low
| StructureType.NoseHigh | StructureType.NoseLow
| StructureType.FaultHigh | StructureType.FaultLow;
par.CurveLayer = "Contour\\Other,Contour\\Mark,等值线";
par.FaultageLayer = "0,断层";
string strCurveFile = this.txtFileInput.Text;
string strFaultFile = this.txtFileFault.Text;
string strGridFile = this.txtFileGrid.Text;
string strOutput = this.txtFileOutput.Text;
string strStatisticFile = Path.Combine(Path.GetDirectoryName(strOutput)
, Path.GetFileNameWithoutExtension(strOutput) + "_structure.csv");
// 执行计算
if (rbtnInputMult.Checked)
{
CreateMicroStructureOld(strCurveFile, strFaultFile, strGridFile, strOutput, ref par);
}
else
{
CreateMicroStructure(strCurveFile, strOutput, strStatisticFile, ref par,"断层", "等值线");
//CreateMicroStructure(strCurveFile, strOutput, strStatisticFile, ref par, "0", "Contour\\Other,Contour\\Mark");//\\Other
}
if (File.Exists(strOutput))
{
string strData = File.ReadAllText(strOutput, Encoding.Default);
File.WriteAllText(strOutput, strData.Insert(0, @"HowToViewCurve
Property 0 13395711 65568 0 0 0.000000 0.000000 0
Solid
NoDraw
Layer M 构造\鼻状
Layer HowToViewCurve
HowToViewCurve
Property 0 6724095 65568 0 0 0.000000 0.000000 0
Solid
NoDraw
Layer M 构造\断鼻
Layer HowToViewCurve
HowToViewCurve
Property 0 16763904 65568 0 0 0.000000 0.000000 0
Solid
NoDraw
Layer M 构造\断沟
Layer HowToViewCurve
HowToViewCurve
Property 0 16776960 65568 0 0 0.000000 0.000000 0
Solid
NoDraw
Layer M 构造\沟槽
Layer HowToViewCurve
HowToViewCurve
Property 0 16751052 65568 0 0 0.000000 0.000000 0
Solid
NoDraw
Layer M 构造\低点
Layer HowToViewCurve
HowToViewCurve
Property 0 559607 65568 0 0 0.000000 0.000000 0
Solid
NoDraw
Layer M 构造\高点
Layer HowToViewCurve
HowToViewCurve
"), Encoding.Default);
}
MessageBox.Show(this, "计算完成!");
}
#if DEBUG
//const string DLL_FILE = @"C:\GeoIntelligent\Code\dirgdf\bin\Debug\WellCalibrate.dll";
const string DLL_FILE = "MicroStructurePP.dll";
#else
const string DLL_FILE = "MicroStructurePP.dll";
#endif
[DllImport(DLL_FILE, EntryPoint = "CreateMicroStructureOld", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern void CreateMicroStructureOld(string curveFile, string faultFile, string gridFile, string ResultFile,ref StructureCalculateParameter par);
[DllImport(DLL_FILE, EntryPoint = "CreateMicroStructure", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern void CreateMicroStructure(string intputFile,
string resultFile, string statisticFile,
ref StructureCalculateParameter par, string faultLayer, string curveLayer);
private void btnFileInput_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.RestoreDirectory = true;
ofd.Filter = "*.dfd|*.dfd|*.*|*.*||";
if(ofd.ShowDialog() != DialogResult.OK)
{
return;
}
this.txtFileInput.Text = ofd.FileName;
}
private void btnFileFault_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.RestoreDirectory = true;
ofd.Filter = "*.dfd|*.dfd|*.*|*.*||";
if (ofd.ShowDialog() != DialogResult.OK)
{
return;
}
this.txtFileFault.Text = ofd.FileName;
}
private void btbFileGrid_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.RestoreDirectory = true;
ofd.Filter = "*.dfg|*.dfg|*.*|*.*||";
if (ofd.ShowDialog() != DialogResult.OK)
{
return;
}
this.txtFileGrid.Text = ofd.FileName;
}
private void btnFileOutput_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.RestoreDirectory = true;
sfd.Filter = "*.dfd|*.dfd|*.*|*.*||";
if(sfd.ShowDialog()!= DialogResult.OK)
{
return;
}
this.txtFileOutput.Text = sfd.FileName;
}
}
}