Exemple #1
0
        public static BeamResults St7GetBeamResultsEnds(List <int> caseIds, List <int> beamIDs, List <int> beamEnd, St7ResultForceComponent component, St7BeamResultsTypes resultType = St7BeamResultsTypes.BeamForce, St7BeamResultAxis resultAxis = St7BeamResultAxis.Principal, bool active = false)
        {
            if (!active)
            {
                return(null);
            }
            int err;
            int uID = 1;


            List <List <double> > valuesResults     = new List <List <double> >();
            List <List <int> >    resultsPerStation = new List <List <int> >();

            // output from strand 7

            double[] beamResult = new double[St7.kMaxBeamResult];
            int      numColumns = 0;

            for (int i = 0; i < beamIDs.Count; i++)
            {
                int           beamId             = beamIDs[i];
                List <double> interValues        = new List <double>();
                List <int>    interResPerStation = new List <int>();
                foreach (int loadcaseId in caseIds)
                {
                    err = St7.St7GetBeamResultEndPos(uID, (int)resultType, (int)resultAxis, beamId, loadcaseId, ref numColumns, beamResult);
                    if (component == St7ResultForceComponent.All)
                    {
                        interResPerStation.Add(numColumns);
                    }
                    else
                    {
                        interResPerStation.Add(1);
                    }
                    if (beamEnd[i] == 1)
                    {
                        interValues.AddRange(beamResult.Take(numColumns));
                    }
                    else
                    {
                        interValues.AddRange(beamResult.Skip(numColumns).Take(numColumns));
                    }
                }
                valuesResults.Add(interValues);
                resultsPerStation.Add(interResPerStation);
            }
            return(new BeamResults(true, new List <List <double> >(), valuesResults, new List <List <int> >(), resultsPerStation));
        }
Exemple #2
0
        public static BeamResults St7GetBeamResults(BHoMAdapter st7Adapter, List <int> caseIds, St7ResultForceComponent component, St7BeamResultsTypes resultType = St7BeamResultsTypes.BeamForce, St7BeamResultAxis resultAxis = St7BeamResultAxis.Principal, int minStations = 1, List <Bar> beams = null, bool active = false)
        {
            if (!active)
            {
                return(null);
            }
            int        err;
            int        uID     = 1;
            List <int> beamIds = new List <int>();

            // checking node ids
            if (beams == null || beams.Count == 0)
            {
                int beamCount = 0;
                err = St7.St7GetTotal(1, St7.tyBEAM, ref beamCount);
                if (!St7Error(err))
                {
                    return(null);
                }
                beamIds = Enumerable.Range(1, beamCount).ToList();
            }
            else
            {
                beamIds = beams.Select(bar => st7Adapter.GetAdapterId <int>(bar)).ToList();
            }
            List <List <double> > positionResults   = new List <List <double> >();
            List <List <double> > valuesResults     = new List <List <double> >();
            List <List <int> >    numberStations    = new List <List <int> >();
            List <List <int> >    resultsPerStation = new List <List <int> >();

            // output from strand 7
            double[] beamPos     = new double[St7.kMaxBeamResult];
            double[] beamResult  = new double[St7.kMaxBeamResult];
            int      numStations = 0;
            int      numColumns  = 0;

            foreach (int beamId in beamIds)
            {
                List <double> interPosResults    = new List <double>();
                List <double> interValues        = new List <double>();
                List <int>    interStations      = new List <int>();
                List <int>    interResPerStation = new List <int>();
                foreach (int loadcaseId in caseIds)
                {
                    err = St7.St7GetBeamResultArray(uID, (int)resultType, (int)resultAxis, beamId, minStations, loadcaseId, ref numStations, ref numColumns, beamPos, beamResult);
                    interPosResults.AddRange(beamPos.Take(numStations));
                    interStations.Add(numStations);
                    if (component == St7ResultForceComponent.All)
                    {
                        interResPerStation.Add(numColumns);
                    }
                    else
                    {
                        interResPerStation.Add(1);
                    }
                    if (component == St7ResultForceComponent.All)
                    {
                        interValues.AddRange(beamResult.Take(numStations * numColumns));
                    }
                    else
                    {
                        for (int i = 0; i < numStations; i++)
                        {
                            interValues.Add(beamResult[(int)component + i * numColumns]);
                        }
                    }
                }
                numberStations.Add(interStations);
                positionResults.Add(interPosResults);
                valuesResults.Add(interValues);
                resultsPerStation.Add(interResPerStation);
            }
            return(new BeamResults(true, positionResults, valuesResults, numberStations, resultsPerStation));
        }
Exemple #3
0
        public static BeamResults St7GetBeamResultsAtT(BHoMAdapter st7Adapter, List <int> caseIds, List <Bar> beams, List <double> t_params, St7ResultForceComponent component, St7BeamResultsTypes resultType = St7BeamResultsTypes.BeamForce, St7BeamResultAxis resultAxis = St7BeamResultAxis.Principal, bool active = false)
        {
            if (!active)
            {
                return(null);
            }
            int err;
            int uID = 1;

            err = St7.St7SetBeamResultPosMode(uID, St7.bpParam);
            List <List <double> > valuesResults     = new List <List <double> >();
            List <List <int> >    resultsPerStation = new List <List <int> >();

            // output from strand 7

            double[] beamResult  = new double[St7.kMaxBeamResult];
            int      numStations = 1;
            int      numColumns  = 0;

            for (int i = 0; i < beams.Count; i++)
            {
                Bar      beam = beams[i];
                double[] beamPos;
                if (i > t_params.Count - 1)
                {
                    beamPos = new double[] { t_params[t_params.Count - 1] };
                }
                else
                {
                    beamPos = new double[] { t_params[i] }
                };
                int beamId = st7Adapter.GetAdapterId <int>(beam);

                List <double> interValues        = new List <double>();
                List <int>    interResPerStation = new List <int>();
                foreach (int loadcaseId in caseIds)
                {
                    err = St7.St7GetBeamResultArrayPos(uID, (int)resultType, (int)resultAxis, beamId, loadcaseId, numStations, beamPos, ref numColumns, beamResult);
                    if (component == St7ResultForceComponent.All)
                    {
                        interResPerStation.Add(numColumns);
                    }
                    else
                    {
                        interResPerStation.Add(1);
                    }
                    if (component == St7ResultForceComponent.All)
                    {
                        interValues.AddRange(beamResult.Take(numStations * numColumns));
                    }
                    else
                    {
                        for (int j = 0; j < numStations; j++)
                        {
                            interValues.Add(beamResult[(int)component + j * numColumns]);
                        }
                    }
                }
                valuesResults.Add(interValues);
                resultsPerStation.Add(interResPerStation);
            }
            return(new BeamResults(true, new List <List <double> >(), valuesResults, new List <List <int> >(), resultsPerStation));
        }