Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }