Exemplo n.º 1
0
    private static void BuildGauges(string[] Raw)
    {
        foreach (var Gauge in Raw)
        {
            var Components = Gauge.Split(',');

            GaugeData Data = new GaugeData();
            Data.MeterId   = Int32.Parse(Components[0]);
            Data.Name      = Components[1];
            Data.Latitude  = float.Parse(Components[2]);
            Data.Longitude = float.Parse(Components[3]);

            var Lines = File.ReadAllLines("../../Data/Rainfall/Raw/" + Components[1] + "_rain.csv");

            float Total = 0;
            Int32 Count = Lines.Length;
            while (Count-- > 1)
            {
                var Parts = Lines[Count].Split(',');
                Total += float.Parse(Parts[2]);
            }

            Data.RainfallTotal = Total;
            Gauges.Add(Data);
        }
    }
Exemplo n.º 2
0
        private void AssignGaugeDlg_Load(object sender, EventArgs e)
        {
            try
            {
                int module_id;
                theUfSession.UF.AskApplicationModule(out module_id);
                if (module_id != UFConstants.UF_APP_DRAFTING)
                {
                    MessageBox.Show("請先轉換為製圖模組後再執行!");
                    this.Close();
                }

                Is_Local = Environment.GetEnvironmentVariable("UGII_ENV_FILE");
                if (Is_Local != null)
                {
                    //取得AssignGaugeData
                    status = CaxGetDatData.GetAssignGaugeData(out AGData);
                    if (!status)
                    {
                        CaxLog.ShowListingWindow("GetAssignGaugeData失敗,請檢查MEConfig是否有檔案");
                        return;
                    }

                    //取得圖紙範圍資料Data
                    status = CaxGetDatData.GetDraftingCoordinateData(out cCoordinateData);

                    //取得PRODUCT資料(未完成,資料庫還沒建立)
                    ISession            session    = MyHibernateHelper.SessionFactory.OpenSession();
                    IList <Sys_Product> sysProduct = session.QueryOver <Sys_Product>().List <Sys_Product>();
                    foreach (Sys_Product i in sysProduct)
                    {
                        listProduct.Add(i.productName);
                    }
                }
                else
                {
                    //取得AssignGaugeData
                    string AssignGaugeData_dat  = "AssignGaugeData.dat";
                    string AssignGaugeData_Path = string.Format(@"{0}\{1}", "D:", AssignGaugeData_dat);
                    AGData = System.IO.File.ReadAllLines(AssignGaugeData_Path);

                    //取得圖紙範圍資料Data
                    string DraftingCoordinate_dat  = "DraftingCoordinate.dat";
                    string DraftingCoordinate_Path = string.Format(@"{0}\{1}", "D:", DraftingCoordinate_dat);
                    if (!System.IO.File.Exists(DraftingCoordinate_Path))
                    {
                        MessageBox.Show("路徑:" + DraftingCoordinate_Path + "不存在");
                        return;
                    }

                    CaxPublic.ReadCoordinateData(DraftingCoordinate_Path, out cCoordinateData);
                }
                //預設關閉選擇物件
                //SelectDimen.Enabled = false;

                #region 存AGData到DicGaugeData中
                foreach (string Row in AGData)
                {
                    string[] splitRow = Row.Split(',');
                    if (splitRow.Length == 0)
                    {
                        continue;
                    }

                    GaugeData cGaugeData = new GaugeData();
                    status = DicGaugeData.TryGetValue(splitRow[1], out cGaugeData);
                    if (status)
                    {
                        continue;
                    }

                    cGaugeData       = new GaugeData();
                    cGaugeData.Color = splitRow[0];
                    try
                    {
                        cGaugeData.EngName = splitRow[2];
                    }
                    catch (System.Exception ex)
                    {
                        cGaugeData.EngName = "";
                    }
                    DicGaugeData.Add(splitRow[1], cGaugeData);
                }
                #endregion

                //填檢具到下拉選單中
                //Gauge.Items.Add("");
                //Gauge.Items.AddRange(DicGaugeData.Keys.ToArray());
                //填檢具到SelfCheck下拉選單中
                //SelfCheckGauge.Items.Add("");
                //foreach (KeyValuePair<string,GaugeData> kvp in DicGaugeData)
                //{
                //    if (kvp.Key.Contains("T"))
                //    {
                //        continue;
                //    }
                //    SelfCheckGauge.Items.Add(kvp.Key);
                //}

                //取得sheet並填入下拉選單中
                int          SheetCount  = 0;
                NXOpen.Tag[] SheetTagAry = null;
                theUfSession.Draw.AskDrawings(out SheetCount, out SheetTagAry);
                for (int i = 0; i < SheetCount; i++)
                {
                    NXOpen.Drawings.DrawingSheet CurrentSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[i]);
                    ListSheet.Items.Add(CurrentSheet.Name);
                }

                //預設開啟sheet1圖紙
                NXOpen.Drawings.DrawingSheet DefaultSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[0]);
                ListSheet.Text = DefaultSheet.Name;

                //取得圖紙長寬
                SheetLength = DefaultSheet.Length;
                SheetHeight = DefaultSheet.Height;

                //填入IQC、IPQC與SelfCheck的單位
                //string[] CheckUnits = new string[] { "HRS", "PCS", "100%" };
                //Freq_Units.Items.AddRange(CheckUnits.ToArray());
                //SelfCheck_Units.Items.AddRange(CheckUnits.ToArray());
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Exemplo n.º 3
0
        private void AssignGaugeDlg_Load(object sender, EventArgs e)
        {
            /*
             * //取回目前泡泡最大值
             * try
             * {
             *  BallonNum = Convert.ToInt32(workPart.GetStringAttribute(CaxME.DimenAttr.BallonNum));
             * }
             * catch (System.Exception ex)
             * {
             *  BallonNum = 0;
             * }
             */

            //預設關閉選擇物件
            SelectObject.Enabled = false;

            //取得AssignGaugeData
            string[] AGData = new string[] { };
            status = CaxGetDatData.GetAssignGaugeData(out AGData);
            if (!status)
            {
                CaxLog.ShowListingWindow("GetAssignGaugeData失敗,請檢查MEConfig是否有檔案");
                return;
            }

            #region 存AGData到DicGaugeData中
            foreach (string Row in AGData)
            {
                string[] splitRow = Row.Split(',');
                if (splitRow.Length == 0)
                {
                    continue;
                }

                GaugeData cGaugeData = new GaugeData();
                status = DicGaugeData.TryGetValue(splitRow[1], out cGaugeData);
                if (status)
                {
                    continue;
                }

                cGaugeData       = new GaugeData();
                cGaugeData.Color = splitRow[0];
                try
                {
                    cGaugeData.EngName = splitRow[2];
                }
                catch (System.Exception ex)
                {
                    cGaugeData.EngName = "";
                }
                DicGaugeData.Add(splitRow[1], cGaugeData);
            }
            #endregion

            //填檢具到IQC、IPQC下拉選單中
            Gauge.Items.Add("");
            Gauge.Items.AddRange(DicGaugeData.Keys.ToArray());
            //填檢具到SelfCheck下拉選單中
            SelfCheckGauge.Items.Add("");
            foreach (KeyValuePair <string, GaugeData> kvp in DicGaugeData)
            {
                if (kvp.Key.Contains("T"))
                {
                    continue;
                }
                SelfCheckGauge.Items.Add(kvp.Key);
            }

            //取得sheet並填入下拉選單中
            int          SheetCount  = 0;
            NXOpen.Tag[] SheetTagAry = null;
            theUfSession.Draw.AskDrawings(out SheetCount, out SheetTagAry);
            for (int i = 0; i < SheetCount; i++)
            {
                NXOpen.Drawings.DrawingSheet CurrentSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[i]);
                ListSheet.Items.Add(CurrentSheet.Name);
            }

            //預設開啟sheet1圖紙
            NXOpen.Drawings.DrawingSheet DefaultSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[0]);
            ListSheet.Text = DefaultSheet.Name;

            //取得圖紙長寬
            SheetLength = DefaultSheet.Length;
            SheetHeight = DefaultSheet.Height;

            //填入IQC、IPQC與SelfCheck的單位
            string[] CheckUnits = new string[] { "HRS", "PCS", "100%Check" };
            Freq_Units.Items.AddRange(CheckUnits.ToArray());
            SelfCheck_Units.Items.AddRange(CheckUnits.ToArray());

            //取得圖紙範圍資料Data
            CaxGetDatData.GetDraftingCoordinateData(out cCoordinateData);
        }
Exemplo n.º 4
0
        private void OK_Click(object sender, EventArgs e)
        {
            if (DicSelDimension.Keys.Count == 0)
            {
                CaxLog.ShowListingWindow("請使用【選擇物件】選擇標註尺寸!");
                return;
            }

            #region 選擇Assign
            if (chb_Assign.Checked == true)
            {
                if (FAIcheckBox.Checked == false & IQCcheckBox.Checked == false & IPQCcheckBox.Checked == false & FQCcheckBox.Checked == false)
                {
                    CaxLog.ShowListingWindow("請先選擇一種檢驗報告格式!");
                    return;
                }
                if (Gauge.Text == "" && SelfCheckGauge.Text == "")
                {
                    CaxLog.ShowListingWindow("資料不足,請先填寫【IQC】或【IPQC】或【SelfCheck】!");
                    return;
                }
                if (Gauge.Text != "" && (Freq_0.Text == "" || Freq_1.Text == "" || Freq_Units.Text == ""))
                {
                    CaxLog.ShowListingWindow("IQC尚未填寫完畢!");
                    return;
                }
                if (SelfCheckGauge.Text != "" && (SelfCheck_0.Text == "" || SelfCheck_1.Text == "" || SelfCheck_Units.Text == ""))
                {
                    CaxLog.ShowListingWindow("SelfCheck尚未填寫完畢!");
                    return;
                }

                foreach (KeyValuePair <NXObject, string> kvp in DicSelDimension)
                {
                    //取得原始顏色
                    int oldColor = CaxME.GetDimensionColor(kvp.Key);
                    if (oldColor == -1)
                    {
                        oldColor = 125;
                    }
                    //取得檢具顏色
                    GaugeData cGaugeData = new GaugeData();
                    if (SelfCheckGauge.Text != "")
                    {
                        status = DicGaugeData.TryGetValue(SelfCheckGauge.Text, out cGaugeData);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("此檢具資料可能有誤");
                            return;
                        }
                    }
                    if (Gauge.Text != "")
                    {
                        status = DicGaugeData.TryGetValue(Gauge.Text, out cGaugeData);
                        if (!status)
                        {
                            CaxLog.ShowListingWindow("此檢具資料可能有誤");
                            return;
                        }
                    }

                    //改變標註尺寸顏色
                    CaxME.SetDimensionColor(kvp.Key, Convert.ToInt32(cGaugeData.Color));
                    //塞屬性
                    kvp.Key.SetAttribute(CaxME.DimenAttr.OldColor, oldColor.ToString());//舊顏色
                    if (Gauge.Text != "")
                    {
                        if (FAIcheckBox.Checked == true)
                        {
                            kvp.Key.SetAttribute(CaxME.DimenAttr.FAI_Gauge, Gauge.Text);//檢具名稱
                            kvp.Key.SetAttribute(CaxME.DimenAttr.FAI_Freq, Freq_0.Text + "PC/" + Freq_1.Text + Freq_Units.Text);
                        }
                        if (IQCcheckBox.Checked == true)
                        {
                            kvp.Key.SetAttribute(CaxME.DimenAttr.IQC_Gauge, Gauge.Text);//檢具名稱
                            kvp.Key.SetAttribute(CaxME.DimenAttr.IQC_Freq, Freq_0.Text + "PC/" + Freq_1.Text + Freq_Units.Text);
                        }
                        if (IPQCcheckBox.Checked == true)
                        {
                            kvp.Key.SetAttribute(CaxME.DimenAttr.IPQC_Gauge, Gauge.Text);//檢具名稱
                            kvp.Key.SetAttribute(CaxME.DimenAttr.IPQC_Freq, Freq_0.Text + "PC/" + Freq_1.Text + Freq_Units.Text);
                        }
                        if (FQCcheckBox.Checked == true)
                        {
                            kvp.Key.SetAttribute(CaxME.DimenAttr.FQC_Gauge, Gauge.Text);//檢具名稱
                            kvp.Key.SetAttribute(CaxME.DimenAttr.FQC_Freq, Freq_0.Text + "PC/" + Freq_1.Text + Freq_Units.Text);
                        }
                    }
                    if (SelfCheckGauge.Text != "")
                    {
                        kvp.Key.SetAttribute(CaxME.DimenAttr.SelfCheck_Gauge, SelfCheckGauge.Text);                                               //檢具名稱
                        kvp.Key.SetAttribute(CaxME.DimenAttr.SelfCheck_Freq, SelfCheck_0.Text + "PC/" + SelfCheck_1.Text + SelfCheck_Units.Text); //SelfCheck
                    }

                    /*
                     * //泡泡順序增加
                     * BallonNum++;
                     * //取得泡泡的座標
                     * CaxME.BoxCoordinate TextCoordi = new CaxME.BoxCoordinate();
                     * Point3d CreateBallonPt = new Point3d();
                     * CaxME.GetTextBoxCoordinate(kvp.Key.Tag, out TextCoordi);
                     * if (Math.Abs(TextCoordi.upper_left[0] - TextCoordi.lower_left[0]) < 0.01)
                     * {
                     *  CreateBallonPt.X = (TextCoordi.upper_left[0] + TextCoordi.lower_left[0]) / 2 - 2;
                     *  CreateBallonPt.Y = (TextCoordi.upper_left[1] + TextCoordi.lower_left[1]) / 2;
                     * }
                     * else
                     * {
                     *  CreateBallonPt.X = (TextCoordi.upper_left[0] + TextCoordi.lower_left[0]) / 2;
                     *  CreateBallonPt.Y = (TextCoordi.upper_left[1] + TextCoordi.lower_left[1]) / 2 - 2;
                     * }
                     * //插入泡泡
                     * CaxME.CreateBallonOnSheet(BallonNum.ToString(), CreateBallonPt);
                     * //取得泡泡在圖紙的區域
                     * string SheetNum = ListSheet.Text, RegionX = "", RegionY = "";
                     * for (int i = 0; i < cCoordinateData.DraftingCoordinate.Count;i++ )
                     * {
                     *  string SheetSize = cCoordinateData.DraftingCoordinate[i].SheetSize;
                     *  if (Math.Ceiling(SheetHeight) != Convert.ToDouble(SheetSize.Split(',')[0]) || Math.Ceiling(SheetLength) != Convert.ToDouble(SheetSize.Split(',')[1]))
                     *  {
                     *      continue;
                     *  }
                     *  //比對X
                     *  for (int j = 0; j < cCoordinateData.DraftingCoordinate[i].RegionX.Count;j++ )
                     *  {
                     *      string X0 = cCoordinateData.DraftingCoordinate[i].RegionX[j].X0;
                     *      string X1 = cCoordinateData.DraftingCoordinate[i].RegionX[j].X1;
                     *      if (CreateBallonPt.X >= Convert.ToDouble(X0) && CreateBallonPt.X <= Convert.ToDouble(X1))
                     *      {
                     *          RegionX = cCoordinateData.DraftingCoordinate[i].RegionX[j].Zone;
                     *      }
                     *  }
                     *  //比對Y
                     *  for (int j = 0; j < cCoordinateData.DraftingCoordinate[i].RegionY.Count; j++)
                     *  {
                     *      string Y0 = cCoordinateData.DraftingCoordinate[i].RegionY[j].Y0;
                     *      string Y1 = cCoordinateData.DraftingCoordinate[i].RegionY[j].Y1;
                     *      if (CreateBallonPt.Y >= Convert.ToDouble(Y0) && CreateBallonPt.Y <= Convert.ToDouble(Y1))
                     *      {
                     *          RegionY = cCoordinateData.DraftingCoordinate[i].RegionY[j].Zone;
                     *      }
                     *  }
                     * }
                     * //塞泡泡屬性
                     * kvp.Key.SetAttribute(CaxME.DimenAttr.BallonNum, BallonNum.ToString());
                     * kvp.Key.SetAttribute(CaxME.DimenAttr.BallonLocation, SheetNum + "-" + RegionY + RegionX);
                     */
                }
            }

            #endregion

            #region 選擇Remove
            if (chb_Remove.Checked == true)
            {
                foreach (KeyValuePair <NXObject, string> kvp in DicSelDimension)
                {
                    //恢復原始顏色
                    string oldColor = "";
                    try
                    {
                        //第二次以上指定顏色的話,抓出來的顏色就不是內建顏色EX:125->108->186,抓到的是108
                        oldColor = kvp.Key.GetStringAttribute(CaxME.DimenAttr.OldColor);
                        //內建原始顏色
                        oldColor = "125";
                    }
                    catch (System.Exception ex)
                    {
                        oldColor = "125";
                    }
                    CaxME.SetDimensionColor(kvp.Key, Convert.ToInt32(oldColor));

                    //取得泡泡資訊
                    string BallonNum = "";
                    try
                    {
                        BallonNum = kvp.Key.GetStringAttribute(CaxME.DimenAttr.BallonNum);
                    }
                    catch (System.Exception ex)
                    {
                        BallonNum = "";
                    }
                    if (BallonNum != "")
                    {
                        CaxME.DeleteBallon(BallonNum);
                    }

                    kvp.Key.DeleteAllAttributesByType(NXObject.AttributeType.String);
                }
            }
            #endregion

            SelectObject.Text = "選擇物件(0)";
        }
Exemplo n.º 5
0
        /// <summary>
        /// Constantly checks if the game has provided new telemetry data. If it has, an event is fired.
        /// </summary>
        private void UpdateGauge()
        {
            bool loaded = NR2003Binding.Setup();

            OnAddressSpaceLoadedOrThrewError(loaded);

            if (NR2003Binding.WaitForSimToRun())
            {
                OnNR2003LoadedOrThrewError(true);

                TimeSpan    lap      = new TimeSpan(0, 0, 0, 0, 0);
                LapCrossing lapCache = new LapCrossing()
                {
                    carIdx    = new byte[] { 0, 0, 0, 0 },
                    lapNum    = new byte[] { 0, 0, 0, 0 },
                    flags     = new byte[] { 0, 0, 0, 0 },
                    crossedAt = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 },
                };
                GaugeData gaugeCache = new GaugeData();
                while (true)
                {
                    NR2003Binding.RequestData();
                    IntPtr gd = NR2003Binding.GetGaugeData();
                    if (gd != IntPtr.Zero)
                    {
                        GaugeData gauge = (GaugeData)Marshal.PtrToStructure(gd, typeof(GaugeData));
                        if (gauge != gaugeCache)
                        {
                            OnGaugeUpdate(new GaugeUpdatedEventArgs {
                                _gaugeData = gauge
                            });
                        }
                    }

                    IntPtr ptrlap = NR2003Binding.GetLapCrossing();
                    if (ptrlap != IntPtr.Zero)
                    {
                        LapCrossing _lap = (LapCrossing)Marshal.PtrToStructure(ptrlap, typeof(LapCrossing));
                        if (_lap != lapCache)
                        {
                            double   crossed      = BitConverter.ToDouble(_lap.crossedAt, 0);
                            int      seconds      = Convert.ToInt32(Math.Truncate(crossed));
                            int      milliseconds = Convert.ToInt32((crossed - seconds) * 1000);
                            TimeSpan crossedAt    = new TimeSpan(0, 0, 0, seconds, milliseconds);
                            int      carIdx       = BitConverter.ToInt32(_lap.carIdx, 0);
                            if (carIdx == 0 && crossedAt > lap)
                            {
                                OnLapTimeUpdate(new LapTimeUpdatedEventArgs {
                                    lapTime = string.Format("{0:0.000}", (crossedAt - lap).TotalSeconds)
                                });
                                lap      = crossedAt;
                                lapCache = _lap;
                            }
                            else if (carIdx == 0)
                            {
                                lap      = crossedAt;
                                lapCache = _lap;
                            }
                        }
                    }

                    //game only provides data at 36 hz
                    Thread.Sleep(20);
                }
            }
            else
            {
                OnNR2003LoadedOrThrewError(false);
            }
        }