Newer
Older
Correlator / PipeGallery / Manage / DataFactory.cs
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PipeGallery.Chart;
using PipeGallery.Correlator;
using PipeGallery.Model;
using PipeGallery.ViewModel;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Controls;
using System.Windows.Threading;

namespace PipeGallery.Manage
{


    public class DataFactory
    {
        public static Dictionary<string, ChartBase> ChartBaseDictionary = new Dictionary<string, ChartBase>();

        public static List<string> SnapshotList = new List<string>();

        public static string HomePageChartId = "管线泄漏定位";
        public static string AuditionChartId = "听音";
        public static string FilterBlueChartId = "过滤器蓝";
        public static string FilterRedChartId = "过滤器红";

        //private static DispatcherTimer timer = new DispatcherTimer();
        /// <summary>
        /// 插件根据Guid得到缓存中
        /// </summary>
        /// <param name="strGuid">数据源对应的GUID</param>
        /// <returns></returns>
        internal static object GetShowData(string id)
        {
            ChartBase modelBase = ChartBaseDictionary[id];
            return modelBase;
        }

        //过滤器界面数据初始化
        internal static void InitalFilterBlueData(Canvas canvasCoordinates, Grid gridChartContainer)
        {
            //坐标系
            CoordinatesInfoType _coordinates = new CoordinatesInfoType();

            _coordinates.YMaxValue = 100;
            _coordinates.YMinValue = 0;
            _coordinates.YMarkCount = 10;
            _coordinates.XMaxValue = 3000;
            _coordinates.XMinValue = 20;
            _coordinates.XMarkCount = 1;
            _coordinates.YName = "";
            _coordinates.XName = "频率(Hz)";

            _coordinates.DrawCoordinates(canvasCoordinates, true, ChartType.FilterView);

            CurveGroupInfo curveGroupInfo = new CurveGroupInfo();
            //设置图标ID
            curveGroupInfo.ID = DataFactory.FilterBlueChartId;
            curveGroupInfo.DataControl = ControlType.CurveChart;
            curveGroupInfo.CurveStrokeThickness = 1;
            curveGroupInfo.Name = "TestData";
            curveGroupInfo.Color = "#62aedd";
            curveGroupInfo.ChartType = ChartType.FilterView;
            DataFactory.ChartBaseDictionary[curveGroupInfo.ID] = curveGroupInfo;

            //界面数据展示
            //图表数据展示
            BaseControl baseControl = new BaseControl(DataFactory.FilterBlueChartId, _coordinates);
            gridChartContainer.Children.Add(baseControl);

            ////随机生成一组数据
            //Random rd = new Random();
            //for (int i = 0; i < 300; i++)
            //{
            //    int r = rd.Next(0, 100);
            //    PointInfo p = new PointInfo();
            //    //X轴值
            //    p.XValue = i * 10;
            //    //Y轴值
            //    p.YValue = r;
                
            //    curveGroupInfo.CurvePointListInfo.Add(p);
            //}

            //启动一个定时器
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(2);
            timer.Tick += delegate
            {
                if (CalculteSatus.fx != null && CalculteSatus.freB != null)
                {
                    double coefficient = 100 / CalculteSatus.freB.Max();

                    curveGroupInfo.CurvePointListInfo.Clear();
                    if (CalculteSatus.fx != null)
                    {
                        for (int i = 0; i < CalculteSatus.fx.Length; i++)
                        {
                            PointInfo p = new PointInfo();
                            p.XValue = CalculteSatus.fx[i];//X轴值
                            p.YValue = CalculteSatus.freB[i] * coefficient;//Y轴值
                            curveGroupInfo.CurvePointListInfo.Add(p);
                        }


                    }

                    curveGroupInfo.RefreshGeometricFigure();
                }
            };
            timer.Start();
        }

        internal static void InitalFilterRedData(Canvas canvasCoordinates, Grid gridChartContainer)
        {
            //坐标系
            CoordinatesInfoType _coordinates = new CoordinatesInfoType();

            _coordinates.YMaxValue = 100;
            _coordinates.YMinValue = 0;
            _coordinates.YMarkCount = 10;
            _coordinates.XMaxValue = 3000;
            _coordinates.XMinValue = 20;
            _coordinates.XMarkCount = 1;
            _coordinates.YName = "";
            _coordinates.XName = "频率(Hz)";

            _coordinates.DrawCoordinates(canvasCoordinates, true, ChartType.FilterView);

            CurveGroupInfo curveGroupInfo = new CurveGroupInfo();
            //设置图标ID
            curveGroupInfo.ID = DataFactory.FilterRedChartId;
            curveGroupInfo.DataControl = ControlType.CurveChart;
            curveGroupInfo.CurveStrokeThickness = 1;
            curveGroupInfo.Name = "TestData";
            curveGroupInfo.Color = "#d07076";
            curveGroupInfo.ChartType = ChartType.FilterView;
            DataFactory.ChartBaseDictionary[curveGroupInfo.ID] = curveGroupInfo;

            //界面数据展示
            //图表数据展示
            BaseControl baseControl = new BaseControl(DataFactory.FilterRedChartId, _coordinates);
            gridChartContainer.Children.Add(baseControl);

            ////随机生成一组数据
            //Random rd = new Random();
            //for (int i = 0; i < 300; i++)
            //{
            //    int r = rd.Next(0, 100);
            //    PointInfo p = new PointInfo();
            //    //X轴值
            //    p.XValue = i * 10;
            //    //Y轴值
            //    p.YValue = r;

            //    curveGroupInfo.CurvePointListInfo.Add(p);
            //}

            //启动一个定时器
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(2);
            timer.Tick += delegate
            {
                if (CalculteSatus.fx != null && CalculteSatus.freA != null)
                {
                    double coefficient = 100 / CalculteSatus.freA.Max();

                    curveGroupInfo.CurvePointListInfo.Clear();
                    if (CalculteSatus.fx != null)
                    {
                        for (int i = 0; i < CalculteSatus.fx.Length; i++)
                        {
                            PointInfo p = new PointInfo();
                            p.XValue = CalculteSatus.fx[i];//X轴值
                            p.YValue = CalculteSatus.freA[i] * coefficient;//Y轴值
                            curveGroupInfo.CurvePointListInfo.Add(p);
                        }
                    }

                    curveGroupInfo.RefreshGeometricFigure();
                }
            };
            timer.Start();
        }

        private static int SetSignalIntensity(int value)
        {
            if (value >= -56)
            {
                return 5;
            }
            else if (value < -56 && value >= -72)
            {
                return 4;
            }
            else if (value < -72 && value >= -88)
            {
                return 3;
            }
            else if (value < -88 && value >= -104)
            {
                return 2;
            }
            else if (value < -104 && value >= -120)
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }

        //听音界面数据初始化
        internal static void InitalAuditionData(Canvas canvasCoordinates, Grid gridChartContainer)
        {
            //坐标系
            CoordinatesInfoType _coordinates = new CoordinatesInfoType();

            _coordinates.YMaxValue = 100;
            _coordinates.YMinValue = -100;
            _coordinates.YMarkCount = 10;
            _coordinates.XMaxValue = 100;
            _coordinates.XMinValue = 0;
            _coordinates.XMarkCount = 20;
            _coordinates.XName = "";

            _coordinates.DrawCoordinates(canvasCoordinates, true, ChartType.AuditionView);

            CurveGroupInfo curveGroupInfo = new CurveGroupInfo();
            //设置图标ID
            curveGroupInfo.ID = DataFactory.AuditionChartId;
            curveGroupInfo.DataControl = ControlType.CurveChart;
            curveGroupInfo.CurveStrokeThickness = 1;
            curveGroupInfo.Name = "TestData";
            curveGroupInfo.Color = "#e6f4ff";
            DataFactory.ChartBaseDictionary[curveGroupInfo.ID] = curveGroupInfo;

            //界面数据展示
            //图表数据展示
            BaseControl baseControl = new BaseControl(DataFactory.AuditionChartId, _coordinates);
            gridChartContainer.Children.Add(baseControl);

            RefreshAuditionData();

        }

        public static void RefreshAuditionData()
        {
            AuditionViewModel.Instance.SensorASignalIntensity = 5;
            AuditionViewModel.Instance.SensorBSignalIntensity = 5;
            AuditionViewModel.Instance.Volume = 30;

            //随机生成一组数据
            Random rd = new Random();

            CurveGroupInfo curveGroupInfo = DataFactory.GetShowData(DataFactory.AuditionChartId) as CurveGroupInfo;
            if (curveGroupInfo == null)
                return;

            for (int i = 0; i < 1000; i++)
            {
                //随机生成一组数据
                int r = rd.Next(-60, 60);
                PointInfo p = new PointInfo();
                //X轴值
                p.XValue = i;
                //Y轴值
                p.YValue = r;

                curveGroupInfo.CurvePointListInfo.Add(p);

            }

            //启动一个定时器,改变绑定数值
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.Tick += delegate
            {
                curveGroupInfo.CurvePointListInfo.Clear();
                for (int i = 0; i < 1000; i++)
                {
                    //随机生成一组数据
                    int r = rd.Next(-60, 60);
                    PointInfo p = new PointInfo();
                    //X轴值
                    p.XValue = i;
                    //Y轴值
                    p.YValue = r;
                    curveGroupInfo.CurvePointListInfo.Add(p);

                }

                curveGroupInfo.RefreshGeometricFigure();

            };
            timer.Start();

        }

        /// <summary>
        /// 首页数据初始化
        /// </summary>
        internal static void InitalHomePageData(Canvas canvasCoordinates, Grid gridChartContainer)
        {
            //坐标系
            CoordinatesInfoType _coordinates = new CoordinatesInfoType();

            _coordinates.YMaxValue = 1.2;//CalculteSatus.corrCoeffVecAbs == null ? 1 : CalculteSatus.corrCoeffVecAbs.Max();
            _coordinates.YMinValue = 0;
            _coordinates.YMarkCount = 10;
            _coordinates.XMaxValue = 1000;
            _coordinates.XMinValue = 0;
            _coordinates.XMarkCount = 20;
            _coordinates.XName = "";

            _coordinates.DrawCoordinates(canvasCoordinates, true);
     
            //柱状组
            ColumnGroupInfo columnGroupInfo = new ColumnGroupInfo();
            //设置图标ID
            columnGroupInfo.ID = DataFactory.HomePageChartId;
            columnGroupInfo.DataControl = ControlType.ColumnChart;
            columnGroupInfo.Name = "TestData";
            DataFactory.ChartBaseDictionary[columnGroupInfo.ID] = columnGroupInfo;

            //界面数据展示
            //图表数据展示
            BaseControl baseControl = new BaseControl(DataFactory.HomePageChartId, _coordinates);
            gridChartContainer.Children.Add(baseControl);

            //ColumnGroupInfo columnGroupInfo = DataFactory.GetShowData(DataFactory.HomePageChartId) as ColumnGroupInfo;
            if (columnGroupInfo == null)
                return;

            //启动一个定时器
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.Tick += delegate
            {
                //if (HomePageViewModel.Instance.StartState)
                {
                    if (CalculteSatus.disVec == null)
                    {
                        return;
                    }

                    _coordinates.XMaxValue = CalculteSatus.disVec[CalculteSatus.disVec.Length - 1];
                    //_coordinates.YMaxValue = CalculteSatus.corrCoeffVecAbs == null ? 1 : CalculteSatus.corrCoeffVecAbs.Max();

                    double yMax = CalculteSatus.corrCoeffVecAbs.Max();

                    columnGroupInfo.ColumnListInfo = new List<ColumnInfo>();
                    for (int i = 0; i < CalculteSatus.disVec.Length; i++)
                    {
                        ColumnInfo columnInfo = new ColumnInfo();
                        columnInfo.Name = "";
                        //X轴的值
                        columnInfo.XValue = CalculteSatus.disVec[i];
                        //Y轴柱状的初始值,如没有,可设置为y周的原点值
                        columnInfo.StartValue = 0;

                        //Y轴柱状的末值
                        columnInfo.EndValue = CalculteSatus.corrCoeffVecAbs[i] / yMax;
                        //添加到柱状组里
                        columnGroupInfo.ColumnListInfo.Add(columnInfo);
                    }

                    columnGroupInfo.RefreshGeometricFigure();

                    double Max = 0.0;
                    int pos = 0;
                    for (int i = 0; i < CalculteSatus.corrCoeffVecAbs.Length; i++)
                    {
                        if (CalculteSatus.corrCoeffVecAbs[i] > Max)
                        {
                            Max = CalculteSatus.corrCoeffVecAbs[i];
                            pos = i;
                        }
                    }

                    HomePageViewModel.Instance.SpeedValuePos = (int)(CalculteSatus.disVec[pos] * 950 / _coordinates.XMaxValue);
                    //HomePageViewModel.Instance.SpeedValue = (CalculteSatus.timeDiff == 0 ? "0" : CalculteSatus.timeDiff.ToString("0.00")) + "ms";
                }
       
            };
            timer.Start();

            ////过滤器数值展示
            //HomePageViewModel.Instance.FilterValue = "";
            ////信噪比数值展示
            //HomePageViewModel.Instance.SNR = "";
            ////管道数值展示
            //HomePageViewModel.Instance.PipeLine = "";
            ////声速数值展示
            //HomePageViewModel.Instance.SoundSpeed = "";
            ////经过了数值展示
            //HomePageViewModel.Instance.Pass = "";

            ////设置检测总距离
            //HomePageViewModel.Instance.TotalDistance = 0;
            ////速度距离:橙色
            //HomePageViewModel.Instance.SpeedDistance = 20;
            ////速度值:橙色
            //HomePageViewModel.Instance.SpeedValue = "-8.4ms";

            ////发射器A数值
            //HomePageViewModel.Instance.TransmitterABattery = 0;
            //HomePageViewModel.Instance.TransmitterADistance = 0;
            //HomePageViewModel.Instance.TransmitterASignalIntensity = 0;
            //HomePageViewModel.Instance.TransmitterAFault = true;

            ////发射器B数值
            //HomePageViewModel.Instance.TransmitterBBattery = 0;
            //HomePageViewModel.Instance.TransmitterBDistance = 0;
            //HomePageViewModel.Instance.TransmitterBSignalIntensity = 0;
            //HomePageViewModel.Instance.TransmitterBFault = true;

        }

        /// <summary>
        /// 初始化菜单
        /// </summary>
        internal static void InitalMenuData()
        {
            MenuInfo m1 = new MenuInfo();
            m1.Name = "音频";
            MenuViewModel.Instance.MenuInfos.Add(m1);

            MenuInfo m2 = new MenuInfo();
            m2.Name = "快照";
            MenuViewModel.Instance.MenuInfos.Add(m2);
        }


        /// <summary>
        /// 初始化自定义声速列表
        /// </summary>
        internal static void InitalSoundSpeedData(int id)
        {
            SoundSpeedEditViewModel.Instance.SoundSpeedInfos.Clear();
            string josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "config.json", Encoding.UTF8);
            JObject jo = JObject.Parse(josnString);
            int i = 0;
            foreach(var v in jo["CustomMaterial"][id]["range"])
            {
                string[] range = v.ToString().Split('-');
 
                SoundSpeedInfo soundSpeedInfo = new SoundSpeedInfo();
                soundSpeedInfo.ID = Guid.NewGuid().ToString();
                soundSpeedInfo.Order = i + 1;
                soundSpeedInfo.MinRange = range[0];
                soundSpeedInfo.MaxRange = range[1];      
                soundSpeedInfo.Speed = jo["CustomMaterial"][id]["speed"][i++].ToString();
                //绑定一个菜单项
                SoundSpeedEditViewModel.Instance.SoundSpeedInfos.Add(soundSpeedInfo);
            }
        }

        internal static void ResetHomePageData()
        {
            ColumnGroupInfo columnGroupInfo = DataFactory.GetShowData(DataFactory.HomePageChartId) as ColumnGroupInfo;
            if (columnGroupInfo == null)
                return;

            columnGroupInfo.ColumnListInfo = new List<ColumnInfo>();
            ColumnInfo columnInfo = new ColumnInfo();
            columnInfo.Name = "";
            columnInfo.XValue = 0;
            columnInfo.StartValue = 0;
            columnInfo.EndValue = 0;
            columnGroupInfo.ColumnListInfo.Add(columnInfo);
            columnGroupInfo.RefreshGeometricFigure();

            CorrelatorDataSaveThread.filterInfo.LowPass = 0;
            CorrelatorDataSaveThread.filterInfo.HighPass = 0;
            CorrelatorDataSaveThread.isNoFilter = true;

            HomePageViewModel.Instance.FilterValue = "";
            HomePageViewModel.Instance.SNR = "";
            HomePageViewModel.Instance.PipeLine = "";
            HomePageViewModel.Instance.SoundSpeed = "";
            HomePageViewModel.Instance.Pass = "";
            HomePageViewModel.Instance.TotalDistance = 0;
            HomePageViewModel.Instance.SpeedDistance = 20;
            HomePageViewModel.Instance.SpeedValue = "";
            HomePageViewModel.Instance.TransmitterADistance = 0;
            HomePageViewModel.Instance.TransmitterBDistance = 0;

            if (CalculteSatus.corrCoeffVecAbs != null && CalculteSatus.disVec != null)
            {
                Array.Clear(CalculteSatus.corrCoeffVecAbs, 0, CalculteSatus.corrCoeffVecAbs.Length);
                Array.Clear(CalculteSatus.disVec, 0, CalculteSatus.disVec.Length);
            }
        }

        

        #region 管径
        private static readonly String[] qiutie = { "0-99", "100-199", "200-299", "300-399", "400-599", "600-799", "800-899", "1000+" };
        private static readonly String[] zhutie = { "0-99", "100-199", "200-299", "300-399", "400-499", "500-699", "700+" };
        private static readonly String[] gang = { "0-19", "20-99", "100-199", "200-299", "300-499", "500-699", "700-899", "900+" };
        private static readonly String[] tong = { "0-14", "15-24", "25-59", "60+" };
        private static readonly String[] qian = { "0-19", "20+" };
        private static readonly String[] shuining = { "0-99", "100-199", "200-349", "350-499", "500-699", "700-899", "900+" };
        private static readonly String[] PVC = { "0-17", "18-22", "23-27", "28-49", "50-74", "75-99", "100-199", "200+" };
        private static readonly String[] HDPE = { "0-17", "18-22", "23-74", "75-199", "200+" };
        private static readonly String[] MDPE = { "0-17", "18-22", "23-74", "75-199", "200+" };
        private static readonly String[] boligang = { "0-49", "50-99", "100-199", "200-399", "400-799", "800-1199", "1200-1999", "2000+" };
        private static readonly String[] hunningtu = { "0-499", "500-699", "700-899", "900-1199", "1200-1799", "1800+" };
        private static readonly String[] niantu = { "0-99", "100-199", "200-349", "350-499", "500-699", "700-899", "900+" };
        private static readonly String[] LDPE = { "0-17", "18-22", "23-74", "75+" };
        #endregion

        internal static void InitalPipeRangeData(String pipeMaterialName)
        {
            SelectPipeRangeViewModel.Instance.PipeRangeInfos.Clear();

            switch(pipeMaterialName)
            {
                case "球铁":
                    foreach (string range in qiutie)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }          
                    break;
                case "铸铁":
                    foreach (string range in zhutie)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "钢":
                    foreach (string range in gang)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "铜":
                    foreach (string range in tong)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "铅":
                    foreach (string range in qian)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "水泥":
                    foreach (string range in shuining)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "PVC":
                    foreach (string range in PVC)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "HDPE":
                    foreach (string range in HDPE)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "MDPE":
                    foreach (string range in MDPE)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "玻璃钢":
                    foreach (string range in boligang)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "混凝土":
                    foreach (string range in hunningtu)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;
                case "粘土":
                    foreach (string range in niantu)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;

                case "LDPE":
                    foreach (string range in LDPE)
                    {
                        PipeRangeInfo pipeRange = new PipeRangeInfo();
                        pipeRange.Range = range + "mm";
                        SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                    }
                    break;

                default:
                    string josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "config.json", Encoding.UTF8);
                    JObject jo = JObject.Parse(josnString);

                    foreach (var v in jo["CustomMaterial"])
                    {
                        if (pipeMaterialName == v["name"].ToString())
                        {
                            foreach (var range in v["range"])
                            {
                                PipeRangeInfo pipeRange = new PipeRangeInfo();
                                pipeRange.Range = range.ToString() + "mm";
                                SelectPipeRangeViewModel.Instance.PipeRangeInfos.Add(pipeRange);
                            }
                        }
                    }
                    break;
            }
        }

        internal static void InitalPipeMaterialData()
        {
            for (int i = 0; i < 13; i++)
            {
                PipeMaterialInfo pipeMaterial = new PipeMaterialInfo();
                string name = string.Empty;
                string name2 = "null";
                switch (i)
                {
                    case 0:
                        name = "球铁";
                        break;
                    case 1:
                        name = "铸铁";
                        break;
                    case 2:
                        name = "钢";
                        break;
                    case 3:
                        name = "铜";
                        break;
                    case 4:
                        name = "铅";
                        break;
                    case 5:
                        name = "水泥";
                        break;
                    case 6:
                        name = "PVC";
                        name2 = "聚氯乙烯";
                        break;
                    case 7:
                        name = "HDPE";
                        name2 = "高密度聚乙烯";
                        break;
                    case 8:
                        name = "MDPE";
                        name2 = "中密度聚乙烯";
                        break;
                    case 9:
                        name = "玻璃钢";
                        break;
                    case 10:
                        name = "混凝土";
                        break;
                    case 11:
                        name = "粘土";
                        break;
                    case 12:
                        name = "LDPE";
                        name2 = "低密度聚乙烯";
                        break;
                }
                pipeMaterial.Name = name;
                pipeMaterial.Name2 = name2;
                SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.Add(pipeMaterial);
            }
        }

        /// <summary>
        /// 初始化自定义材质
        /// </summary>
        internal static void InitalCustomizedPipeMaterialData()
        {
            StreamReader sr = new StreamReader(System.AppDomain.CurrentDomain.BaseDirectory + "config.json");
            JObject jo = (JObject)JsonConvert.DeserializeObject(sr.ReadToEnd());
            sr.Close();

            if (SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.Count == 16)
            {
                SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.RemoveAt(15);
                SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.RemoveAt(14);
                SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.RemoveAt(13);
            }

            for (int i = 0; i < 3; i++)
            {
                PipeMaterialInfo pipeMaterial = new PipeMaterialInfo();
                pipeMaterial.Name = jo["CustomMaterial"][i]["name"].ToString();
                pipeMaterial.Name2 = null;
                pipeMaterial.ID = i;
                pipeMaterial.IsEnabled = true;
                SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.Add(pipeMaterial);
            }
        }

        internal static void InitalAudioListData(string select)
        {
            AudioListViewModel.Instance.FileInfos.Clear();

            var dir = Directory.GetCurrentDirectory() + "\\File\\" + select;
            int i = 1;
            foreach (var file in new DirectoryInfo(dir).GetFiles("*", SearchOption.AllDirectories))
            {
                PipeGallery.Model.FileInfo fi = new PipeGallery.Model.FileInfo();
                fi.Order = i++;
                fi.FileName = file.Name.Substring(0,file.Name.IndexOf("."));
                fi.FullPath = dir + "\\" + file.Name;
                fi.FileSize = file.Length;
                fi.CreationTimeUtc = file.LastWriteTime;
                AudioListViewModel.Instance.FileInfos.Add(fi);
            }
            AudioListViewModel.Instance.RefreshShowFileInfos();
        }


        /// <summary>
        /// 还原默认值、编辑名称按钮功能,更新材质
        /// add by gwq
        /// </summary>
        internal static void UpdatePipeMaterialData()
        {
            SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.RemoveAt(13);
            SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.RemoveAt(13);
            SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.RemoveAt(13);

            StreamReader sr = new StreamReader(System.AppDomain.CurrentDomain.BaseDirectory + "config.json");
            JObject jo = (JObject)JsonConvert.DeserializeObject(sr.ReadToEnd());
            sr.Close();
            for (int i = 1; i < 4; i++)
            {
                jo["CustomMaterial"][i-1] = "自定义材质" + i;

                PipeMaterialInfo pipeMaterial = new PipeMaterialInfo();
                pipeMaterial.Name = "自定义材质" + i;               
                SelectPipeMaterialViewModel.Instance.PipeMaterialInfos.Add(pipeMaterial);

                System.IO.StreamWriter sw = new System.IO.StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + "config.json");
                sw.Write(Newtonsoft.Json.JsonConvert.SerializeObject(jo));
                sw.Flush();
                sw.Close();
            }

        }

    }
}