public static object To_DynamoObj_sLineLoad(sLineLoad lineLoad) { sDynamoConverter dyncon = new sDynamoConverter("Meters", "Feet"); return(new Dictionary <string, object> { { "loadPattern", lineLoad.loadPatternName }, { "loadType", lineLoad.loadType.ToString() }, { "loadForce", dyncon.EnsureUnit_Force(dyncon.ToDynamoVector(lineLoad.load_Force)) }, { "loadMoment", dyncon.EnsureUnit_Force(dyncon.ToDynamoVector(lineLoad.load_Moment)) } }); }
public void ApplyLineLoadsByCombo(string comboName, ref double deadFactor) { sLoadCombination combo = GetLoadComboByName(comboName); foreach (StatBeam stb in this.FEsystem.Beams) { sFrame sb = stb.ExtraData as sFrame; if (sb != null) { if (sb.lineLoads != null && sb.lineLoads.Count > 0) { sLineLoad comboLoad = new sLineLoad(); if (combo.combinationType == eCombinationType.LinearAdditive) { for (int i = 0; i < combo.patterns.Count; ++i) { string pattern = combo.patterns[i]; double factor = combo.factors[i]; if (pattern != "DEAD") { sb.UpdateLineLoadByPatternFactor_LinearAdditive(pattern, factor, ref comboLoad); } else { deadFactor = factor; } } } //else what? if (comboLoad.load_Force != null || comboLoad.load_Moment != null) { if (comboLoad.load_Force != null) { stb.AppliedLinearLoad = new C_vector(comboLoad.load_Force.X, comboLoad.load_Force.Y, comboLoad.load_Force.Z); } if (comboLoad.load_Moment != null) { stb.AppliedLinearLoad = new C_vector(comboLoad.load_Moment.X, comboLoad.load_Moment.Y, comboLoad.load_Moment.Z); } } if (comboLoad.load_Scalar > 0.0) { } } } } }
protected override void SolveInstance(IGH_DataAccess DA) { string patternName = ""; List <Vector3d> forceVectors = new List <Vector3d>(); if (!DA.GetData(0, ref patternName)) { return; } if (!DA.GetDataList(1, forceVectors)) { return; } string modelUnit = Rhino.RhinoDoc.ActiveDoc.ModelUnitSystem.ToString(); sRhinoConverter rhcon = new sRhinoConverter(modelUnit, "Meters"); object outobj = null; if (forceVectors.Count == 1) { sLineLoad l_before = new sLineLoad(patternName, eLoadType.DistributedLoad, true, rhcon.TosXYZ(forceVectors[0])); outobj = rhcon.EnsureUnit(l_before); } else if (forceVectors.Count > 1) { sLineLoadGroup lg = new sLineLoadGroup(); lg.loads = new List <sLineLoad>(); foreach (Vector3d lv in forceVectors) { sLineLoad sl = new sLineLoad(patternName, eLoadType.DistributedLoad, true, rhcon.TosXYZ(lv)); lg.loads.Add(rhcon.EnsureUnit(sl)); } outobj = lg; } DA.SetData(0, outobj); }
internal sLineLoad EnsureUnit(sLineLoad ll) { if (targetUnit == baseUnit) { return(ll); } else { if (baseUnit == "Meters" && targetUnit == "Feet") { ll.ScaleByFactor(0.06852); return(ll); } else if (baseUnit == "Feet" && targetUnit == "Meters") { ll.ScaleByFactor(14.59383); return(ll); } else { return(null); } } }
public void UpdateLineLoad(sLineLoad lload) { if (this.lineLoads != null) { bool isThere = false; foreach (sLineLoad ll in this.lineLoads) { if (ll.loadPatternName == lload.loadPatternName) { ll.ApplyUpdatedLineLoad(lload); isThere = true; } } if (isThere == false) { this.lineLoads.Add(lload); } } else { this.lineLoads = new List <sLineLoad>(); this.lineLoads.Add(lload); } }
protected override void SolveInstance(IGH_DataAccess DA) { string beamSetName = ""; List <Curve> beamSetCurves = new List <Curve>(); List <sCrossSection> crossSections = new List <sCrossSection>(); List <object> lineLoadObjs = new List <object>(); if (!DA.GetData(0, ref beamSetName)) { return; } if (!DA.GetDataList(1, beamSetCurves)) { return; } if (!DA.GetDataList(2, crossSections)) { return; } DA.GetDataList(3, lineLoadObjs); List <IFrameSet> sets = new List <IFrameSet>(); string modelUnit = Rhino.RhinoDoc.ActiveDoc.ModelUnitSystem.ToString(); sRhinoConverter rhcon = new sRhinoConverter(modelUnit, "Meters"); int minuteCount = 0; for (int i = 0; i < beamSetCurves.Count; ++i) { if (beamSetCurves[i].GetLength() > 0.005) { Curve rc = rhcon.EnsureUnit(beamSetCurves[i]); sCurve setCrv = rhcon.TosCurve(rc); IFrameSet bset = new sFrameSet(setCrv); bset.frameSetName = beamSetName; bset.setId = i; if (crossSections.Count == 1) { bset.crossSection = crossSections[0] as sCrossSection; } else if (crossSections.Count == beamSetCurves.Count) { bset.crossSection = crossSections[i] as sCrossSection; } if (lineLoadObjs.Count > 0) { foreach (object lo in lineLoadObjs) { GH_ObjectWrapper wap = new GH_ObjectWrapper(lo); sLineLoad sl = wap.Value as sLineLoad; if (sl != null) { bset.UpdateLineLoad(sl); } sLineLoadGroup sg = wap.Value as sLineLoadGroup; if (sg != null) { if (sg.loads.Count == beamSetCurves.Count) { bset.UpdateLineLoad(sg.loads[i]); } else { return; } } } } sets.Add(bset); } else { minuteCount++; } } if (minuteCount > 0) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, minuteCount + "Beams are too short"); } DA.SetDataList(0, sets); }