public static List <ICurve> Visualize(this ContourLoad contourLoad, double scaleFactor = 1.0, bool displayForces = true, bool displayMoments = true, bool asResultants = true) { if (contourLoad.IsNull()) { return(null); } if (!displayForces) { return(new List <ICurve>()); } List <ICurve> arrows = new List <ICurve>(); Vector globalForceVec = contourLoad.Force * scaleFactor; Vector forceVec; Basis orientation; if (contourLoad.Axis == LoadAxis.Global) { if (contourLoad.Projected) { Vector normal = contourLoad.Contour.Normal(); double scale = Math.Abs(normal.DotProduct(globalForceVec.Normalise())); forceVec = globalForceVec * scale; } else { forceVec = globalForceVec; } orientation = Basis.XY; } else { orientation = LocalOrientation(contourLoad.Contour.Normal(), 0); forceVec = globalForceVec; } arrows.AddRange(ConnectedArrows(contourLoad.Contour.SubParts(), forceVec, asResultants, orientation, 1, true)); return(arrows); }
/***************************************************/ private bool CreateLoad(ContourLoad bhLoad) { double[] loadVals = bhLoad.Force.ToDoubleArray(); List <Opening> openingsList = new List <Opening>(); Panel loadPanel = Engine.Structure.Create.Panel(bhLoad.Contour as ICurve, openingsList); CreateObject(loadPanel); List <Panel> panelsToLoad = new List <Panel>(); panelsToLoad.Add(loadPanel); AreaUniformlyDistributedLoad contourLoadArea = Engine.Structure.Create.AreaUniformlyDistributedLoad(bhLoad.Loadcase, loadVals.ToVector(), panelsToLoad, bhLoad.Axis, bhLoad.Projected, bhLoad.Name); CreateLoad(contourLoadArea); SetAdapterId(bhLoad, null); return(true); }