using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; using Newtonsoft.Json.Linq; using System.Xml; using System.Collections.Generic; using System.Drawing; using System.Reflection.Metadata.Ecma335; namespace GeoSigmaDrawLib { public class GeoSigmaWellSectionXY : GeoSigmaWellPoleXY { public GeoSigmaWellSectionXY(GeoSigmaXY.eViewType vType = GeoSigmaXY.eViewType.wellsection) : base(vType) { // mViewType = GeoSigmaXY.eViewType.wellpole; //pView = GeoSigmaLib.CreateWellPoleView(); // GeoSigmaLib.RegisterCallback(pView, s_wndCallback); ReadParamsFile(); } public bool SetBendsSmooth() { bool b = GeoSigmaLib.SetBendsSmooth(pView); return b; } public bool IsSelectedWellSection() { return GeoSigmaLib.IsSelectedWellSection(pView); } public bool IsWellSectionBendsSmooth() { return GeoSigmaLib.IsWellSectionBendsSmooth(pView); } public int WellSectionFlatternStyle() { return GeoSigmaLib.WellSectionFlatternStyle(pView); } //层拉平方式 0真是位置,1层顶拉平,2层底拉平,3井顶拉平,4井底拉平 public bool SetWellSectionFlatternStyle(int style) { return GeoSigmaLib.SetWellSectionFlatternStyle(pView, style); } public int SectionWellShowStyle() { return GeoSigmaLib.SectionWellShowStyle(pView); } // 1 =简单样式 ,2= 完整样式 , 3= 分割线样式 public bool SetSectionWellShowStyle(int style) { return GeoSigmaLib.SetSectionWellShowStyle(pView, style); } public bool WellSectionConnectAllLayers() { return GeoSigmaLib.WellSectionConnectAllLayers(pView); } public bool WellSectionBreakAllBends() { return GeoSigmaLib.WellSectionBreakAllBends(pView); } public int WellSectionBendLinkStyle() { return GeoSigmaLib.WellSectionBendLinkStyle(pView); } //=1 井柱外, =2 井柱中心 3= 地层道 ,4=小层道 public bool SetWellSectionBendLinkStyle(int style) { return GeoSigmaLib.SetWellSectionBendLinkStyle(pView, style); } public int WellSectionBendLeftExtendStyle() {//=1 不延伸 =2水平延伸,3=趋势延伸 return GeoSigmaLib.WellSectionBendLeftExtendStyle(pView); } public bool SetWellSectionBendLeftExtendStyle(int style)//=1 不延伸 =2水平延伸,3=趋势延伸 { return GeoSigmaLib.SetWellSectionBendLeftExtendStyle(pView, style); } public int WellSectionBendRightExtendStyle() {//=1 不延伸 =2水平延伸,3=趋势延伸 return GeoSigmaLib.WellSectionBendRightExtendStyle(pView); } public bool SetWellSectionBendRightExtendStyle(int style)//=1 不延伸 =2水平延伸,3=趋势延伸 { return GeoSigmaLib.SetWellSectionBendRightExtendStyle(pView, style); } public bool SetWellSectionDrawAddFaultItem() { return GeoSigmaLib.SetWellSectionDrawAddFaultItem(pView); } public bool WellSectionAddDepthRuler() { return GeoSigmaLib.WellSectionAddDepthRuler(pView); } public bool WellSectionIsAddBendLayerPoint() { return GeoSigmaLib.WellSectionIsAddBendLayerPoint(pView); } public bool WellSectionAddBendLayerPoint() { return GeoSigmaLib.WellSectionAddBendLayerPoint(pView); } public bool WellSectionDeleteBendLayerPoint() { return GeoSigmaLib.WellSectionDeleteBendLayerPoint(pView); } public bool WellSectionIsAddFaultPoint() { return GeoSigmaLib.WellSectionIsAddFaultPoint(pView); } public bool WellSectionAddFaultPoint() { return GeoSigmaLib.WellSectionAddFaultPoint(pView); } public bool WellSectionDeleteFaultPoint() { return GeoSigmaLib.WellSectionDeleteFaultPoint(pView); } public bool WellSectionBreakLeftBend() { return GeoSigmaLib.WellSectionBreakLeftBend(pView); } public bool WellSectionBreakRightBend() { return GeoSigmaLib.WellSectionBreakRightBend(pView); } public bool WellSectionConnectLeftLayer() { return GeoSigmaLib.WellSectionConnectLeftLayer(pView); } public bool WellSectionConnectRightLayer() { return GeoSigmaLib.WellSectionConnectRightLayer(pView); } public bool WellSectionConnectLeftRightLayer() { return GeoSigmaLib.WellSectionConnectLeftRightLayer(pView); } public IntPtr CreateWellSection(string title,double depthScale,double levelScale,double horizonScale) { return GeoSigmaLib.CreateWellSection(pView, title, depthScale, levelScale, horizonScale); } public bool WellSectionAddNewWell(string wellName, double depthScale, double top, double bottom, double x, double y, double bushingLevel, string wellTemplateFile, ref UInt64 objHandle) { return GeoSigmaLib.WellSectionAddNewWell(pView, wellName, depthScale, top, bottom, x, y, bushingLevel, wellTemplateFile, ref objHandle); } public bool WellSectionReSetAllWellsPosition(bool bNeedComputedDepth,double topExtent, double bottomExtent) { return GeoSigmaLib.WellSectionReSetAllWellsPosition(pView,bNeedComputedDepth ,topExtent,bottomExtent); } public bool WellSectionConnectLayers(string trackTypeStr) { return GeoSigmaLib.WellSectionConnectLayers(pView, trackTypeStr); } public static bool SetWellSectionStratificationJson(IntPtr pSection, string str) { bool b = GeoSigmaLib.SetWellSectionStratificationJson(pSection, str); return b; } public static bool SetWellSectionStratumDivisionJson(IntPtr pSection, string str) { bool b = GeoSigmaLib.SetWellSectionStratumDivisionJson(pSection, str); return b; } public bool WellSectionApplyingTemplateFileForWell(string filePath, UInt64 wellHandle) { bool b = GeoSigmaLib.WellSectionApplyingTemplateFileForWell(pView, filePath, wellHandle); return b; } public bool WellSectionApplyingWellTemplateForSection(UInt64 wellHandle) { bool b = GeoSigmaLib.WellSectionApplyingWellTemplateForSection(pView, wellHandle); return b; } public bool WellSectionApplyingTemplateFileForSection(string filePath) { bool b = GeoSigmaLib.WellSectionApplyingTemplateFileForSection(pView, filePath); return b; } public bool WellSectionGetLinkTracksTypes(UInt64 sectionHandle, out string[] NamesArr) {//获得有连接bend的井道类型 NamesArr = new string[0]; IntPtr typeStrBuf; typeStrBuf = IntPtr.Zero; int typeStrLen; typeStrLen = 0; bool b = GeoSigmaLib.WellSectionGetLinkTracksTypes(sectionHandle, ref typeStrBuf, ref typeStrLen); if (b && typeStrLen > 0) { string strType = Marshal.PtrToStringAnsi(typeStrBuf, typeStrLen); NamesArr = strType.Split('|'); GeoSigmaLib.FreeByteArray(typeStrBuf); } return b; } public bool WellSectionBreakBends(UInt64 sectionHandle, string[] trackTypes) { bool b = false; string strTypes = ""; for(int i = 0; i < trackTypes.Length; i++) { strTypes = strTypes + "|" + trackTypes[i]; } strTypes = strTypes.TrimStart('|'); b = GeoSigmaLib.WellSectionBreakBends(pView,sectionHandle, strTypes); return b; } public bool WellSectionGetWellStratumTracksTypes(UInt64 sectionHandle, out string[] NamesArr) { //获得剖面中井能够进行层位连接的井道类型 NamesArr = new string[0]; IntPtr typeStrBuf; typeStrBuf = IntPtr.Zero; int typeStrLen; typeStrLen = 0; bool b = GeoSigmaLib.WellSectionGetWellStratumTracksTypes(sectionHandle, ref typeStrBuf, ref typeStrLen); if (b && typeStrLen > 0) { string strType = Marshal.PtrToStringAnsi(typeStrBuf, typeStrLen); NamesArr = strType.Split('|'); GeoSigmaLib.FreeByteArray(typeStrBuf); } return b; } public bool WellSectionSetWellRealDistance() { bool b = GeoSigmaLib.WellSectionSetWellRealDistance(pView); return b; } public bool WellSectionGetTotalWellsDistance(UInt64 sectionHandle, ref int wellNum, ref double totalDistance) { bool b = GeoSigmaLib.WellSectionGetTotalWellsDistance(sectionHandle, ref wellNum, ref totalDistance); return b; } public bool WellSectionSetWellsDistance(UInt64 sectionHandle,double distance) { return GeoSigmaLib.WellSectionSetWellsDistance(sectionHandle, distance); } public bool WellSectionAddWellsMap(string sybmolPath) { return GeoSigmaLib.WellSectionAddWellsMap(pView, sybmolPath); } } }