public bool LoadMPT(Rastr rst, string mptpath, Dictionary <string, DataTable> DTables) { Cursor.Current = Cursors.WaitCursor; try { rst.Load(ASTRALib.RG_KOD.RG_REPL, mptpath, ""); } catch (Exception Err) { Cursor.Current = Cursors.Default; MessageBox.Show("Не удалось загрузить файл мегаточки " + mptpath + "\r\n" + Err.Message); return(false); } rst.OutZero = 1; RastrRetCode retcode = rst.CheckMegapoint(); if (retcode != RastrRetCode.AST_OK) { Cursor.Current = Cursors.Default; MessageBox.Show("Мегаточка не загружена"); return(false); } FillMpt(rst, DTables); // DTABLES формируется при распарсивании xml return(true); }
public void FillMpt(Rastr rst, Dictionary <string, DataTable> DTables) { MTables.Clear(); foreach (KeyValuePair <string, DataTable> kvp in DTables) { DataTable newdt = kvp.Value.Copy(); MTables.Add(kvp.Key, newdt); } int scp1 = GetStartColPOint(rst); for (int i = scp1; i <= 24; i++) { rst.ReadPnt(i, 0); foreach (KeyValuePair <string, DataTable> kvp in MTables) { ASTRALib.table GenTab = (ASTRALib.table)rst.Tables.Item(kvp.Value.TableName); int colcount = kvp.Value.Columns.Count; //Object[] Myrow = new object[colcount]; int x = GenTab.get_FindNextSel(-1); while (x >= 0) { Object[] mycells = new Object[colcount]; string KeyName = kvp.Value.Columns[0].ColumnName; object key = (int)((ASTRALib.col)GenTab.Cols.Item(kvp.Value.Columns[0].ColumnName)).get_Z(x); object KeyNameDecs = (object)((ASTRALib.col)GenTab.Cols.Item(kvp.Value.Columns[1].ColumnName)).get_Z(x); var colT = (ASTRALib.col)GenTab.Cols.Item(3); var colType = colT.get_Prop(ASTRALib.PropType.FL_TIP).ToString(); mycells[0] = key; mycells[1] = KeyNameDecs; mycells[2] = i; for (int c = 3; c < colcount; c++) // читаем остальные параметры { mycells[c] = (Object)((ASTRALib.col)GenTab.Cols.Item(kvp.Value.Columns[c].ColumnName)).get_Z(x); } kvp.Value.Rows.Add(mycells); x = GenTab.get_FindNextSel(x); } } } }
public void FillMpt(Rastr rst, Dictionary<string, DataTable> DTables) { MTables.Clear(); foreach (KeyValuePair<string, DataTable> kvp in DTables) { DataTable newdt = kvp.Value.Copy(); MTables.Add(kvp.Key, newdt); } int scp1 = GetStartColPOint(rst); for (int i = scp1; i <= 24; i++) { rst.ReadPnt(i, 0); foreach (KeyValuePair<string, DataTable> kvp in MTables) { ASTRALib.table GenTab = (ASTRALib.table)rst.Tables.Item(kvp.Value.TableName); int colcount = kvp.Value.Columns.Count; //Object[] Myrow = new object[colcount]; int x = GenTab.get_FindNextSel(-1); while (x >= 0) { Object[] mycells = new Object[colcount]; string KeyName = kvp.Value.Columns[0].ColumnName; object key = (int)((ASTRALib.col)GenTab.Cols.Item(kvp.Value.Columns[0].ColumnName)).get_Z(x); object KeyNameDecs = (object)((ASTRALib.col)GenTab.Cols.Item(kvp.Value.Columns[1].ColumnName)).get_Z(x); var colT = (ASTRALib.col)GenTab.Cols.Item(3); var colType = colT.get_Prop(ASTRALib.PropType.FL_TIP).ToString(); mycells[0] = key; mycells[1] = KeyNameDecs; mycells[2] = i; for (int c = 3; c < colcount; c++) // читаем остальные параметры { mycells[c] = (Object)((ASTRALib.col)GenTab.Cols.Item(kvp.Value.Columns[c].ColumnName)).get_Z(x); } kvp.Value.Rows.Add(mycells); x = GenTab.get_FindNextSel(x); } } } }
// получить двумерный массив для растра private Array getModeObj(Rastr rst) { string modeMessage = string.Empty;; RastrCalc(rst); string[,] paramsArr = new string[2, 24 - startPoint + 1]; for (int i = startPoint - 1; i < 24; i++) { paramsArr[ModeNormal, i] = "0"; paramsArr[ModeFlat, i] = "0"; if (rst.rgm("") == RastrRetCode.AST_NB) { modeMessage += String.Format("Режим не сбалансирован в точке {0} проверить с плоского старта \n", i); if (rst.rgm("p") == RastrRetCode.AST_NB) { modeMessage += String.Format("Режим не сбалансирован в точке {0} проверить с плоского старта \n", i); } else { modeMessage += String.Format("режим в точке {0} сошёлся с плоского старта \n", i); paramsArr[ModeFlat, i] = "5"; } rst.Printp(String.Format("Режим в точке {0} не сбалансирован", i)); } else { paramsArr[ModeNormal, i] = "5"; } if (modeMessage == string.Empty) //если режим сбалансирован { rst.WritePnt(i); } else { MessageBox.Show(modeMessage); } } return(paramsArr); }
// получить список мегаточек в нужной последовательности public static void SetMptList(Rastr rst1, TMpt Mpt1, Rastr rst2, TMpt Mpt2) { ASTRALib.table t1 = (ASTRALib.table)rst1.Tables.Item("MltPntSettings"); ASTRALib.col c1 = (ASTRALib.col)t1.Cols.Item("AbsTime"); Double mpt1StartDate = (Double)c1.get_Z(0); ASTRALib.table t2 = (ASTRALib.table)rst2.Tables.Item("MltPntSettings"); ASTRALib.col c2 = (ASTRALib.col)t2.Cols.Item("AbsTime"); Double mpt2StartDate = (Double)c2.get_Z(0); if (mpt1StartDate < mpt2StartDate) { MPTList.Add(Mpt1); MPTList.Add(Mpt2); } else { MPTList.Add(Mpt2); MPTList.Add(Mpt1); } }
// получить номер точки начала расчета public int GetStartColPOint(Rastr rst) { ASTRALib.table t = (ASTRALib.table)rst.Tables.Item("MltPntSettings"); ASTRALib.col c = (ASTRALib.col)t.Cols.Item("StartCalcPoint"); return((int)c.get_Z(0)); }
// вычисление по формуле (0) ? public void RastrCalc(Rastr rst) { ASTRALib.table tableRst = (ASTRALib.table)rst.Tables.Item("MultiPntConfig"); ASTRALib.col colRst = (ASTRALib.col)tableRst.Cols.Item("Significance"); colRst.Calc("0"); }
// получить двумерный массив для растра private Array getModeObj(Rastr rst) { string modeMessage = string.Empty; ; RastrCalc(rst); string[,] paramsArr = new string[2, 24 - startPoint + 1]; for (int i = startPoint - 1; i < 24; i++) { paramsArr[ModeNormal,i] = "0"; paramsArr[ModeFlat, i] = "0"; if (rst.rgm("") == RastrRetCode.AST_NB) { modeMessage += String.Format("Режим не сбалансирован в точке {0} проверить с плоского старта \n", i); if (rst.rgm("p") == RastrRetCode.AST_NB) modeMessage += String.Format("Режим не сбалансирован в точке {0} проверить с плоского старта \n", i); else { modeMessage += String.Format("режим в точке {0} сошёлся с плоского старта \n", i); paramsArr[ModeFlat, i] = "5"; } rst.Printp(String.Format("Режим в точке {0} не сбалансирован", i)); } else paramsArr[ModeNormal, i] = "5"; if (modeMessage == string.Empty) //если режим сбалансирован rst.WritePnt(i); else MessageBox.Show(modeMessage); } return paramsArr; }
private void Form1_Load(object sender, EventArgs e) { try { rst1 = new Rastr(); rst2 = new Rastr(); } catch (Exception Err) { MessageBox.Show("Ошибка создания объекта actopus.\r\n Возможно, программа actopus не установлена.\r\n Ошибка:" + Err.Message.ToString()); Close(); } LoadXmlConfig(); }
public bool LoadMPT(Rastr rst, string mptpath, Dictionary<string, DataTable> DTables) { Cursor.Current = Cursors.WaitCursor; try { rst.Load(ASTRALib.RG_KOD.RG_REPL, mptpath, ""); } catch (Exception Err) { Cursor.Current = Cursors.Default; MessageBox.Show("Не удалось загрузить файл мегаточки " + mptpath + "\r\n" + Err.Message); return false; } rst.OutZero = 1; RastrRetCode retcode = rst.CheckMegapoint(); if (retcode != RastrRetCode.AST_OK) { Cursor.Current = Cursors.Default; MessageBox.Show("Мегаточка не загружена"); return false; } FillMpt(rst, DTables); // DTABLES формируется при распарсивании xml return true; }
// получить номер точки начала расчета public int GetStartColPOint(Rastr rst) { ASTRALib.table t = (ASTRALib.table)rst.Tables.Item("MltPntSettings"); ASTRALib.col c = (ASTRALib.col)t.Cols.Item("StartCalcPoint"); return (int)c.get_Z(0); }