public async Task <BallonaBridgeOutputs> Handler(BallonaBridgeInputs args, ILambdaContext context) { if (this.store == null) { // Preload the dependencies (if they exist), // so that they are available during model deserialization. var asmLocation = this.GetType().Assembly.Location; var asmDir = Path.GetDirectoryName(asmLocation); var asmName = Path.GetFileNameWithoutExtension(asmLocation); var depPath = Path.Combine(asmDir, $"{asmName}.Dependencies.dll"); if (File.Exists(depPath)) { Console.WriteLine($"Loading dependencies from assembly: {depPath}..."); Assembly.LoadFrom(depPath); Console.WriteLine("Dependencies assembly loaded."); } this.store = new S3ModelStore <BallonaBridgeInputs>(RegionEndpoint.USWest1); } var l = new InvocationWrapper <BallonaBridgeInputs, BallonaBridgeOutputs>(store, BallonaBridge.Execute); var output = await l.InvokeAsync(args); return(output); }
/// <summary> /// The BallonaBridge function. /// </summary> /// <param name="model">The input model.</param> /// <param name="input">The arguments to the execution.</param> /// <returns>A BallonaBridgeOutputs instance containing computed results and the model with any new elements.</returns> public static BallonaBridgeOutputs Execute(Dictionary <string, Model> inputModels, BallonaBridgeInputs input) { /// Your code here. var output = new BallonaBridgeOutputs(1.0); Elements.Material brdigeMaterial = null; switch (input.Material) { case Material.Red: brdigeMaterial = new Elements.Material("Red", Colors.Red, 0.0f, 0.0f); break; case Material.Steel: brdigeMaterial = BuiltInMaterials.Steel; break; case Material.Wood: brdigeMaterial = BuiltInMaterials.Wood; break; } var beam = new Beam(input.CenterLine, Polygon.Rectangle(input.BridgeWidth, input.BridgeHeight), brdigeMaterial); var offsetCrv = input.CenterLine.Offset(5, EndType.Square); // output.model.AddElement(offsetCrv); var grid = new Grid1d(offsetCrv[0]); grid.DivideByApproximateLength(1.0); foreach (var pt in grid.GetCellSeparators()) { var column = new Column(pt, 5, Polygon.Rectangle(0.05, 0.05)); output.model.AddElement(column); } output.model.AddElement(beam); return(output); }