Example #1
0
        /// <inheritdoc />
        public override bool Run(List <InputDefinition> input)
        {
            try
            {
                this.GetDataValues();
                var    points           = ((ArrayList)input[0].GetInput()).OfType <Point>().ToList();
                double transitionLength = Distance.PointToPoint(points[0], points[1]);

                var transitionSection = new TransitionSectionGeometry(this.rectangleHeight, this.rectangleWidth, transitionLength, this.circleRadius, points[0], new Vector(points[1] - points[0]));
                this.InsertTransitionSection(transitionSection);
            }
            catch (Exception ex)
            {
                Console.WriteLine(@"Exception: " + ex);
            }

            return(true);
        }
Example #2
0
        /// <summary>
        /// Inserts the full transition section in the model.
        /// </summary>
        /// <param name="geometry">Geometry descriptor of the transition section.</param>
        private void InsertTransitionSection(TransitionSectionGeometry geometry)
        {
            var rectangularBase = geometry.RectangularSection;
            var circle          = geometry.CircularSection;

            var conicalSectionArcs = rectangularBase.OfType <Arc>()
                                     .Zip(circle.Select(c => c as Arc), (b, t) => new { Bottom = b, Top = t })
                                     .ToList();

            foreach (var arcs in conicalSectionArcs)
            {
                var loftedPlate = this.MakeConicalSection(arcs.Bottom, arcs.Top);
                loftedPlate.Insert();
            }

            for (var i = 0; i < conicalSectionArcs.Count; ++i)
            {
                var nextIdx = (i + 1) % conicalSectionArcs.Count;
                var plate   = this.MakeTriangularSection(
                    conicalSectionArcs[i].Bottom, conicalSectionArcs[i].Top, conicalSectionArcs[nextIdx].Bottom);

                plate.Insert();
            }
        }