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)); }
public Scale3D(double x, double y, double z, SheerAxis sheerAxis, double sheerRate) : this(x, y, z) { this.sheerAxis = sheerAxis; this.sheerRate = sheerRate; }