public void GetStressColorTable(TowerModel tower, Dictionary <int, LISFileItem> NODE_ID_TO_ITEM, int TYPE_ID) { foreach (ListElemBase elem in tower.ElemList) { double AVE_TEMP = 0.0; int cnt = 0; for (int i = 0; i < 8; i++) { if (NODE_ID_TO_ITEM.ContainsKey(elem.Elem_Nodes[i])) { ListNodeBase node = tower.NodeList[tower.NodeElemTable[elem.Elem_Nodes[i]]]; LISFileItem lisItem = NODE_ID_TO_ITEM[elem.Elem_Nodes[i]]; AVE_TEMP += lisItem.VAL[TYPE_ID]; cnt++; } } if (cnt != 0) { AVE_TEMP /= cnt; } ColorGen.AddElemPropertyValue(AVE_TEMP, elem.Elem_Number); } ColorGen.SetElemPropertyMinMaxValue(); ColorGen.SetGivenColorTable(); ColorGen.SetDivisionValues(); }
public void GetDisplacementColorTable(TowerModel tower, Dictionary <int, LISFileItem> NODE_ID_TO_ITEM, int TYPE_ID) { /* * The displacement part has 4 options: * 1,2,3: X Y Z * 4: Displacement Sum */ const int node_use_number = 8; foreach (ListElemBase elem in tower.ElemList) { double value_getter = 0.0; for (int i = 0; i < 8; i++) { if (NODE_ID_TO_ITEM.ContainsKey(elem.Elem_Nodes[i])) { LISFileItem NodeItemGetter = NODE_ID_TO_ITEM[elem.Elem_Nodes[i]]; switch (TYPE_ID) { case 0: value_getter += NodeItemGetter.GetValueListValueByIdx(0); break; case 1: value_getter += NodeItemGetter.GetValueListValueByIdx(1); break; case 2: value_getter += NodeItemGetter.GetValueListValueByIdx(2); break; case 3: value_getter += NodeItemGetter.GetValueListValueByIdx(3); break; } //MessageBox.Show(value_getter.ToString()); } } value_getter /= node_use_number; ColorGen.AddElemPropertyValue(value_getter, elem.Elem_Number); } ColorGen.SetElemPropertyMinMaxValue(); ColorGen.SetGivenColorTable(); ColorGen.SetDivisionValues(); }
public int ImportFile(string fname) { try { FileStream fstream = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory + @"\" + fname, FileMode.Open, FileAccess.Read); StreamReader sfstream = new StreamReader(fstream); sfstream.BaseStream.Seek(0, SeekOrigin.Begin); string tmpNode = sfstream.ReadLine(); int NodeBegin = 0; while (tmpNode != null) { // divide the line it read into parts string[] tmpNodeSplit = Regex.Split(tmpNode.Trim(), " ", RegexOptions.IgnoreCase); if (tmpNodeSplit[0] == "NODE") { NodeBegin = 1; } else if (NodeBegin == 1 && tmpNodeSplit[0] != "") { /* * if this tmpString belongs to the "data line" and * "valid dataline" */ // Why this line exsit? NodeNumber is useless, because the id contains in the val_list // WRONG!!!!!! // NodeNumber is the parse result int NodeNumber = -1; Boolean tryParse = Int32.TryParse(tmpNodeSplit[0], out NodeNumber); if (!tryParse) { NodeBegin = 0; } else { /* * Here we've finished the node id parsing step * Then we could add the values that this data line contains */ List <double> val_list = new List <double>(); for (int t = 1; t < tmpNodeSplit.Count(); t++) { string str = tmpNodeSplit[t]; if (str != "") { // Need to deal with the minus List <int> mid_mark = new List <int>(); for (int idx = 0; idx < str.Length; idx++) { if (str[idx] == '-' && idx != 0 && str[idx - 1] != 'E') { mid_mark.Add(idx); } } mid_mark.Add(str.Length); int tmp_start = 0; foreach (int mark in mid_mark) { string tmp_str = str.Substring(tmp_start, mark - tmp_start); tmp_start = mark; val_list.Add(Double.Parse(tmp_str)); } } } LISFileItem NewFileItem = new LISFileItem(NodeNumber, val_list); if (!ITEM_DICTIONARY.ContainsKey(NodeNumber)) { ITEM_DICTIONARY.Add(NodeNumber, NewFileItem); } else { foreach (double val in val_list) { ITEM_DICTIONARY[NodeNumber].VAL.Add(val); } } } } tmpNode = sfstream.ReadLine(); } return(1); } catch (FileNotFoundException e) { return(-1); } }