示例#1
0
        /***************************************************/

        private bool CreateObject(LoadCombination loadCombination)
        {
            if (m_model.RespCombo.Add(loadCombination.Name, 0) == 0) //0=case, 1=combo
            {
                foreach (var factorCase in loadCombination.LoadCases)
                {
                    double     factor    = factorCase.Item1;
                    Type       lcType    = factorCase.Item2.GetType();
                    string     lcName    = factorCase.Item2.Name;// factorCase.Item2.Name;// Number.ToString();
                    eCNameType cTypeName = eCNameType.LoadCase;

                    if (lcType == typeof(Loadcase))
                    {
                        cTypeName = eCNameType.LoadCase;
                    }
                    else if (lcType == typeof(LoadCombination))
                    {
                        cTypeName = eCNameType.LoadCombo;
                    }

                    m_model.RespCombo.SetCaseList(loadCombination.Name, ref cTypeName, lcName, factor);
                }
                SetAdapterId(loadCombination, loadCombination.Name);
            }
            else
            {
                CreateElementError(loadCombination.GetType().ToString(), loadCombination.Name);
            }

            return(true);
        }
示例#2
0
        public static void SetLoadCombination(cSapModel model, LoadCombination loadCombination)
        {
            //string combinationName = loadCombination.CustomData[AdapterId].ToString();
            string combinationName = CaseNameToCSI(loadCombination);

            model.RespCombo.Add(combinationName, 0);//0=case, 1=combo

            foreach (var factorCase in loadCombination.LoadCases)
            {
                double     factor    = factorCase.Item1;
                Type       lcType    = factorCase.Item2.GetType();
                string     lcName    = CaseNameToCSI(factorCase.Item2);// factorCase.Item2.Name;// Number.ToString();
                eCNameType cTypeName = eCNameType.LoadCase;

                if (lcType == typeof(Loadcase))
                {
                    cTypeName = eCNameType.LoadCase;
                }
                else if (lcType == typeof(LoadCombination))
                {
                    cTypeName = eCNameType.LoadCombo;
                }

                model.RespCombo.SetCaseList(combinationName, ref cTypeName, lcName, factor);
            }
        }
        //Add Load Combinations to Sap
        public static void AddLoadCombinations()
        {
            eCNameType ec = eCNameType.LoadCase;

            for (int i = 0; i < Combinations.Count; i++)
            {
                mySapModel.MySapObjectModel.RespCombo.Add(Combinations[i], 0);

                mySapModel.MySapObjectModel.RespCombo.SetCaseList(Combinations[i], ref ec, loadCaseName[i]
                                                                  , loadFactorList[i]);
            }
        }
示例#4
0
        /***************************************************/

        private bool CreateObject(LoadCombination loadcombination)
        {
            eCNameType nameType = eCNameType.LoadCase;

            int caseNameCount = 0;

            string[] caseNameArr = null;

            m_model.LoadPatterns.GetNameList(ref caseNameCount, ref caseNameArr);

            if (m_model.RespCombo.Add(loadcombination.Name, 0) == 0)
            {
                SetAdapterId(loadcombination, loadcombination.Name);
                foreach (Tuple <double, ICase> comboCase in loadcombination.LoadCases)
                {
                    double factor   = comboCase.Item1;
                    ICase  bhomCase = comboCase.Item2;
                    string caseName = "";

                    if (bhomCase.HasAdapterIdFragment(typeof(SAP2000Id)))
                    {
                        caseName = GetAdapterId <string>(bhomCase);
                    }
                    else if (caseNameArr.Contains(bhomCase.Name))
                    {
                        caseName = bhomCase.Name;
                    }
                    else
                    {
                        Engine.Base.Compute.RecordWarning($"case {bhomCase.Name} has no SAP2000_id, and no case with that name was found in the model. Try pushing the loadcase and using the result of that push to build the combo.");
                    }


                    if (m_model.RespCombo.SetCaseList(loadcombination.Name, ref nameType, caseName, factor) != 0)
                    {
                        Engine.Base.Compute.RecordWarning("Could not add case " + bhomCase.Name + " to combo " + loadcombination.Name);
                    }
                }
            }
            else
            {
                CreateElementError("Load Combination", loadcombination.Name);
            }

            return(true);
        }
示例#5
0
        public static bool AddLoadCombination(SAPLoadCombination comb)
        {
            int flag = mySapModel.RespCombo.Add(comb.Name, (int)comb.CombType);//Adding a new combination

            if (comb.LoadCases != null)
            {
                for (int i = 0; i < comb.LoadCases.Count; i++)
                {
                    eCNameType type     = eCNameType.LoadCase;
                    string     caseName = comb.LoadCases[i].Name;
                    if (comb.LoadCases[i].IsDefinedInSAP == false)
                    {
                        //AddLoadCase(); //TODO
                    }
                    float scaleFactor = comb.LoadCasesFactors[i];
                    mySapModel.RespCombo.SetCaseList(comb.Name, ref type, caseName, scaleFactor);//Adding defined load cases to the combination
                }
            }


            if (comb.LoadCombos != null)
            {
                for (int i = 0; i < comb.LoadCombos.Count; i++)
                {
                    eCNameType type      = eCNameType.LoadCombo;
                    string     comboName = comb.LoadCombos[i].Name;
                    if (comb.LoadCombos[i].IsDefinedInSAP == false)
                    {
                        AddLoadCombination(comb.LoadCombos[i]);
                    }
                    float scaleFactor = comb.LoadCombosFactors[i];
                    mySapModel.RespCombo.SetCaseList(comb.Name, ref type, comboName, scaleFactor);//Adding defined load combos to the combination
                }
            }
            if (flag != 0)
            {
                comb.IsDefinedInSAP = false;

                return(false);
            }
            comb.IsDefinedInSAP = true;
            return(true);
        }
示例#6
0
        public static void AddLoadCombo(ref cSapModel Model, string Name, string[] Types, string[] CName, double[] SF, string LCType)
        {
            int LCTypeInt = 0;

            if (LCType == "Linear Additive")
            {
                LCTypeInt = 0;
            }
            else if (LCType == "Envelope")
            {
                LCTypeInt = 1;
            }
            else if (LCType == "Absolute Additive")
            {
                LCTypeInt = 2;
            }
            else if (LCType == "SRSS")
            {
                LCTypeInt = 3;
            }
            else if (LCType == "Range Additive")
            {
                LCTypeInt = 4;
            }

            //add the Combination
            int ret = Model.RespCombo.Add(Name, (LCTypeInt));

            foreach (string def in CName)
            {
                int pos = Array.IndexOf(CName, def);
                //get the type of the definition
                eCNameType type = (eCNameType)Enum.Parse(typeof(eCNameType), Types.ElementAt(pos));
                //set the type of the combination
                ret = Model.RespCombo.SetCaseList(Name, ref type, def, SF.ElementAt(pos));
            }
        }
示例#7
0
        private static bool GetLoadCombinationCases(string comboName, out List <SAPLoadCase> loadCases, out List <SAPLoadCombination> loadCombos, out List <float> loadCasesFactors, out List <float> loadCombosFactors)
        {
            loadCases  = new List <SAPLoadCase>();
            loadCombos = new List <SAPLoadCombination>();

            loadCasesFactors  = new List <float>();
            loadCombosFactors = new List <float>();

            int noComponents = 0;

            string[]     names   = new string[1];
            eCNameType[] types   = new eCNameType[1];
            double[]     factors = new double[1];
            int          flag    = mySapModel.RespCombo.GetCaseList(comboName, ref noComponents, ref types, ref names, ref factors);

            if (flag != 0)
            {
                loadCases  = null;
                loadCombos = null;
                return(false);
            }
            else
            {
                for (int i = 0; i < noComponents; i++)
                {
                    if (i >= types.Count())
                    {
                        continue;
                    }
                    switch (types[i])
                    {
                    case eCNameType.LoadCase:
                        SAPLoadCase Case = new SAPLoadCase();
                        Case.Name           = names[i];
                        Case.IsDefinedInSAP = true;
                        loadCases.Add(Case);
                        loadCasesFactors.Add((float)factors[i]);
                        break;

                    case eCNameType.LoadCombo:
                        SAPLoadCombination combo = new SAPLoadCombination();
                        combo.Name           = names[i];
                        combo.IsDefinedInSAP = true;
                        bool comboFlag = GetLoadCombinationCases(combo.Name, out combo.loadCases, out combo.loadCombos, out combo.loadCasesFactors, out combo.loadCasesFactors);
                        if (comboFlag == false)
                        {
                            throw new Exception("Couldn't retrieve combo cases");
                        }
                        else
                        {
                            loadCombos.Add(combo);
                            loadCombosFactors.Add((float)factors[i]);
                        }
                        break;

                    default:
                        break;
                    }
                }
                return(true);
            }
        }