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();
        }
Beispiel #3
0
        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);
            }
        }