Beispiel #1
0
        public override IList <IAvatar> GenerateRepresentations(Element source)
        {
            var    result = new List <IAvatar>();
            double scale  = 0.5;
            double f      = 0.707 * scale;
            double off    = 0.1;
            var    verts  = source.ElementVertices;

            foreach (var vert in verts)
            {
                if (!vert.Releases.AllFalse)
                {
                    CartesianCoordinateSystem cSystem = vert.LocalCoordinateSystem;
                    if (cSystem != null)
                    {
                        if (vert.Releases.X)
                        {
                            result.Add(
                                FormatAvatar(
                                    CreateCurveAvatar(
                                        new Line(cSystem.LocalToGlobal(scale, 0, 0), cSystem.LocalToGlobal(-scale, 0, 0)))));
                        }
                        if (vert.Releases.Y)
                        {
                            result.Add(
                                FormatAvatar(
                                    CreateCurveAvatar(
                                        new Line(cSystem.LocalToGlobal(off, scale, 0), cSystem.LocalToGlobal(off, -scale, 0)))));
                        }
                        if (vert.Releases.Z)
                        {
                            result.Add(
                                FormatAvatar(
                                    CreateCurveAvatar(
                                        new Line(cSystem.LocalToGlobal(off, 0, scale), cSystem.LocalToGlobal(off, 0, -scale)))));
                        }
                        if (vert.Releases.XX)
                        {
                            result.Add(
                                FormatAvatar(
                                    CreateCurveAvatar(
                                        new Arc(cSystem.LocalToGlobal(off, f, f), cSystem.LocalToGlobal(off, 0, scale), cSystem.LocalToGlobal(off, f, -f)))));
                        }
                        if (vert.Releases.YY)
                        {
                            result.Add(
                                FormatAvatar(
                                    CreateCurveAvatar(
                                        new Arc(cSystem.LocalToGlobal(f, 0, f), cSystem.LocalToGlobal(scale, 0, 0), cSystem.LocalToGlobal(f, 0, -f)))));
                        }
                        if (vert.Releases.ZZ)
                        {
                            result.Add(
                                FormatAvatar(
                                    CreateCurveAvatar(
                                        new Arc(cSystem.LocalToGlobal(f, f, 0), cSystem.LocalToGlobal(scale, 0, 0), cSystem.LocalToGlobal(f, -f, 0)))));
                        }
                    }
                }
            }
            return(result);
        }