internal IfcStructuralLoadGroup(IfcStructuralAnalysisModel sm, string name, List<double> factors, List<IfcStructuralLoadCase> cases, bool ULS) : base(sm.mDatabase, name) { mPredefinedType = IfcLoadGroupTypeEnum.LOAD_COMBINATION; mLoadGroupFor.Add(sm); sm.addLoadGroup(this); mPurpose = (ULS ? "ULS" : "SLS"); if (factors != null && factors.Count > 0) { double prevfactor = factors[0]; List<IfcObjectDefinition> ods = new List<IfcObjectDefinition>(); for (int icounter = 0; icounter < cases.Count; icounter++) { double factor = (factors.Count > icounter ? factors[icounter] : prevfactor); if (Math.Abs(factor - prevfactor) > mDatabase.Tolerance) { new IfcRelAssignsToGroupByFactor(this, ods, prevfactor); ods = new List<IfcObjectDefinition>(); prevfactor = factor; } ods.Add(cases[icounter]); } new IfcRelAssignsToGroupByFactor(this, ods, prevfactor); } else { new IfcRelAssignsToGroupByFactor(this, cases.ConvertAll(x => x as IfcObjectDefinition), 1); } }
internal IfcStructuralLoadGroup(IfcStructuralAnalysisModel sm, string name, IfcLoadGroupTypeEnum type, IfcActionTypeEnum action, IfcActionSourceTypeEnum source, double coeff, string purpose) : base(sm.mDatabase, name) { mLoadGroupFor.Add(sm); sm.addLoadGroup(this); mPredefinedType = type; mActionType = action; mActionSource = source; mCoefficient = coeff; if (!string.IsNullOrEmpty(purpose)) mPurpose = purpose; }