/// <summary> /// Gets the family symbol's raw location, it's for moving zero point. /// </summary> /// <param name="profile"></param> /// <returns></returns> private static XYZ GetLocationPoint(CurveArrArray profile) { if (profile == null) { throw new ArgumentNullException(nameof(profile)); } var curves = profile.Cast <CurveArray>().SelectMany(s => s.Cast <Curve>()).ToList(); var pts = curves.GetDistinctPointList() .OrderBy(o => o.Z).ThenBy(o => o.Y).ThenBy(o => o.X).ToList(); return(pts.FirstOrDefault()); }