Exemple #1
0
        public new static Scale3D FromProperty(string value)
        {
            // Get numbers
            double x     = 1.0;
            double y     = 1.0;
            double z     = 1.0;
            int    start = value.IndexOf("(Scale=(");

            if (start != -1)
            {
                start += +"(Scale=(".Length;
                int end        = value.IndexOf(")", start);
                var components = value.Substring(start, end - start).Split(',');
                foreach (string comp in components)
                {
                    if (comp.StartsWith("X="))
                    {
                        if (!double.TryParse(comp.Substring(2), out x))
                        {
                            Console.WriteLine("Error while parsing scale: Unknown X: " + value);
                        }
                    }
                    else if (comp.StartsWith("Y="))
                    {
                        if (!double.TryParse(comp.Substring(2), out y))
                        {
                            Console.WriteLine("Error while parsing scale: Unknown Y: " + value);
                        }
                    }
                    else if (comp.StartsWith("Z="))
                    {
                        if (!double.TryParse(comp.Substring(2), out z))
                        {
                            Console.WriteLine("Error while parsing scale: Unknown Z: " + value);
                        }
                    }
                }
            }

            // Get sheer axis
            SheerAxis axis = SheerAxis.ZX;

            start = value.IndexOf("SheerAxis=");
            if (start != -1)
            {
                start += "SheerAxis=".Length;
                string axisText = value.Substring(start + "SHEER_".Length, 2);
                switch (axisText)
                {
                case "XY":
                    axis = SheerAxis.XY;
                    break;

                case "XZ":
                    axis = SheerAxis.XZ;
                    break;

                case "YX":
                    axis = SheerAxis.YX;
                    break;

                case "YZ":
                    axis = SheerAxis.YZ;
                    break;

                case "ZX":
                    axis = SheerAxis.ZX;
                    break;

                case "ZY":
                    axis = SheerAxis.ZY;
                    break;

                default:
                    Console.WriteLine("Error while parsing scale: Unknown axis: " + value);
                    break;
                }
            }

            // Get sheer rate
            double rate = 0.0;

            start = value.IndexOf("SheerRate=");
            if (start != -1)
            {
                start += "SheerAxis=".Length;
                int end = value.IndexOf(")", start);
                if (!double.TryParse(value.Substring(start, end - start), out rate))
                {
                    Console.WriteLine("Error while parsing scale: Unknown rate: " + value);
                }
            }

            return(new Scale3D(x, y, z, axis, rate));
        }
Exemple #2
0
 public Scale3D(double x, double y, double z, SheerAxis sheerAxis, double sheerRate) : this(x, y, z)
 {
     this.sheerAxis = sheerAxis;
     this.sheerRate = sheerRate;
 }