public List <WallForceResult> GetPierForces(string ComboName, PierPointLocation PierPointLocation, ModelUnits ModelUnits)
        {
            model = ETABSConnection.GetModel();
            PierForceExtractor     ext = new PierForceExtractor(model);
            List <WallForceResult> f   = ext.GetPierForces(ComboName, PierPointLocation, ModelUnits);

            model = null;
            return(f);
        }
        public List <WallForceResult> GetPierForces(string ComboName, PierPointLocation PierPointLocation, ModelUnits ModelUnits)
        {
            List <WallForceResult> results = new List <WallForceResult>();

            EtabsModel.Results.Setup.DeselectAllCasesAndCombosForOutput();
            switch (ModelUnits)
            {
            case ModelUnits.kip_in:

                EtabsModel.SetPresentUnits(eUnits.kip_in_F);
                break;

            case ModelUnits.kip_ft:
                EtabsModel.SetPresentUnits(eUnits.kip_ft_F);
                break;

            default:
                EtabsModel.SetPresentUnits(eUnits.kip_in_F);
                break;
            }

            var ret1 = EtabsModel.Results.Setup.SetComboSelectedForOutput(ComboName);


            int NumberResults = 0;

            string[] _StoryNames = null;
            string[] _PierNames  = null;
            string[] _Locations  = null;
            string[] _LoadCase   = null;
            double[] _P          = null;
            double[] _V2         = null;
            double[] _V3         = null;
            double[] _T          = null;
            double[] _M2         = null;
            double[] _M3         = null;


            var ret2 = EtabsModel.Results.PierForce(
                ref NumberResults,
                ref _StoryNames,
                ref _PierNames,
                ref _LoadCase,
                ref _Locations,
                ref _P,
                ref _V2,
                ref _V3,
                ref _T,
                ref _M2,
                ref _M3
                );



            List <PierDataPoint> unfilteredList = new List <PierDataPoint>();

            if (NumberResults > 0)
            {
                for (int i = 0; i < NumberResults; i++)
                {
                    PierDataPoint dp = new PierDataPoint()
                    {
                        StoryName = _StoryNames[i],
                        PierName  = _PierNames[i],
                        LoadCase  = _LoadCase[i],
                        Location  = _Locations[i],
                        P         = _P[i],
                        V2        = _V2[i],
                        V3        = _V3[i],
                        T         = _T[i],
                        M2        = _M2[i],
                        M3        = _M3[i]
                    };

                    unfilteredList.Add(dp);
                }

                //Unique storys
                List <string> StoryNames = _StoryNames.Distinct().ToList();
                // Unique piers
                List <string> PierNames = _PierNames.Distinct().ToList();

                if (StoryNames.Count != 0 && PierNames.Count != 0)
                {
                    foreach (var pier in PierNames)
                    {
                        var thisPierStoryOccurence = unfilteredList.Where(w => w.PierName == pier).Select(p => p.StoryName);
                        var storiesForThisPier     = thisPierStoryOccurence.Distinct().ToList();

                        foreach (var story in storiesForThisPier)
                        {
                            var    PierData = unfilteredList.Where(w => w.StoryName == story && w.PierName == pier && w.Location == PierPointLocation.ToString());
                            double P_Max    = PierData.Max(p => p.P);
                            double V2_Max   = PierData.Max(p => p.V2);
                            double V3_Max   = PierData.Max(p => p.V3);
                            double T_Max    = PierData.Max(p => p.T);
                            double M2_Max   = PierData.Max(p => p.M2);
                            double M3_Max   = PierData.Max(p => p.M3);
                            double P_Min    = PierData.Min(p => p.P);
                            double V2_Min   = PierData.Min(p => p.V2);
                            double V3_Min   = PierData.Min(p => p.V3);
                            double T_Min    = PierData.Min(p => p.T);
                            double M2_Min   = PierData.Min(p => p.M2);
                            double M3_Min   = PierData.Min(p => p.M3);

                            WallPointResult res = new WallPointResult()
                            {
                                P_Max             = P_Max,
                                V2_Max            = V2_Max,
                                V3_Max            = V3_Max,
                                T_Max             = T_Max,
                                M2_Max            = M2_Max,
                                M3_Max            = M3_Max,
                                P_Min             = P_Min,
                                V2_Min            = V2_Min,
                                V3_Min            = V3_Min,
                                T_Min             = T_Min,
                                M2_Min            = M2_Min,
                                M3_Min            = M3_Min,
                                StoryName         = story,
                                PierPointLocation = PierPointLocation
                            };

                            WallForceResult forceResult = new WallForceResult()
                            {
                                PierName = pier,
                                Result   = res
                            };
                            results.Add(forceResult);
                        }
                    }
                    return(results);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
        public List <WallForceResult> GetPierForces(string PierName, string ComboName, PierPointLocation PierPointLocation, ModelUnits ModelUnits)
        {
            PierForceExtractor     ext = new PierForceExtractor(model);
            List <WallForceResult> f   = ext.GetPierForces(ComboName, PierPointLocation, ModelUnits);
            var thisPierForces         = f.Where(p => p.PierName == PierName).ToList();

            return(thisPierForces);
        }