/***************************************************/ public static List <ICurve> Visualize(this AreaUniformalyDistributedLoad areaUDL, double scaleFactor = 1.0, bool displayForces = true, bool displayMoments = true, bool asResultants = true, bool edgeDisplay = true, bool gridDisplay = false) { if (!displayForces) { return(new List <ICurve>()); } List <ICurve> arrows = new List <ICurve>(); Vector globalForceVec = areaUDL.Pressure * scaleFactor; foreach (IAreaElement element in areaUDL.Objects.Elements) { Vector forceVec; Cartesian system = null; IEnumerable <ICurve> edges = element.IEdges(); if (areaUDL.Axis == LoadAxis.Global) { if (areaUDL.Projected) { Vector normal = element.INormal().Normalise(); double scale = Math.Abs(normal.DotProduct(globalForceVec.Normalise())); forceVec = globalForceVec * scale; } else { forceVec = globalForceVec; } } else { Vector normal = element.INormal(); Vector x = edges.First().IStartDir(); Vector y = normal.CrossProduct(x); system = new Cartesian(new Point(), x, y, normal); forceVec = globalForceVec; } if (edgeDisplay) { arrows.AddRange(ConnectedArrows(edges, forceVec, asResultants, system, 1, true)); } if (gridDisplay) { arrows.AddRange(MultipleArrows(element.IPointGrid(), forceVec, asResultants, system, 1, true)); } } return(arrows); }
/***************************************************/ public static LoadType LoadType(this AreaUniformalyDistributedLoad load) { return(oM.Structure.Loads.LoadType.AreaUniformLoad); }