コード例 #1
0
ファイル: Load.cs プロジェクト: BHoM/RFEM_Toolkit
        /***************************************************/
        /**** Private methods                           ****/
        /***************************************************/

        private bool CreateCollection(IEnumerable <ILoad> loads)
        {
            if (loads.Count() > 0)
            {
                int          loadId   = 0;
                List <ILoad> loadList = loads.ToList();

                //*****move this to adapter *****
                modelData.FinishModification();
                rf.ILoads rfloads = model.GetLoads();
                //*******************************

                var loadGroupByCase = loadList.GroupBy(load => load.Loadcase.Number);

                foreach (var caseGroup in loadGroupByCase)
                {
                    int          loadcaseId = caseGroup.Key;
                    rf.ILoadCase rfLoadcase = rfloads.GetLoadCase(loadcaseId, rf.ItemAt.AtNo);
                    rfLoadcase.PrepareModification();

                    foreach (ILoad load in caseGroup)
                    {
                        loadId = GetAdapterId <int>(load);

                        if (load.GetType().IsAssignableFrom(typeof(BarUniformlyDistributedLoad)))
                        {
                            BarUniformlyDistributedLoad barLoad    = load as BarUniformlyDistributedLoad;
                            rf.MemberLoad[]             rfBarLoads = barLoad.ToRFEM(loadId, loadcaseId).ToArray();
                            foreach (rf.MemberLoad item in rfBarLoads)
                            {
                                rfLoadcase.SetMemberLoad(item);
                            }
                        }

                        //if (load.GetType().IsAssignableFrom(typeof(BarPointLoad)))
                        //{
                        //    BarPointLoad barLoad = load as BarPointLoad;
                        //    rf.MemberLoad[] rfBarLoads = barLoad.ToRFEM(loadId, loadcaseId).ToArray();
                        //    foreach (rf.MemberLoad item in rfBarLoads)
                        //        rfLoadcase.SetMemberLoad(item);
                        //}
                    }
                    rfLoadcase.FinishModification(); // <---- move to adapter
                    modelData.PrepareModification(); //<--- hack to avoid app lock issue
                }
            }

            return(true);
        }