Получение координаты элемента Element.Location и запись в значение параметра

Автор Тема: Получение координаты элемента Element.Location и запись в значение параметра  (Прочитано 2670 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн asiaАвтор темы

  • ADN OPEN
  • Сообщений: 27
  • Карма: 0
Добрый день!
Хочу реализовать простую команду, которая получает координаты определенных элементов и записывает их как значения параметра "Object Height".

Пытаюсь получить положение по оси Z каждого элемента из списка - все работает:
Код - C# [Выбрать]
  1. IList<Element> specialityEquip = new FilteredElementCollector(doc).WherePasses(new ElementCategoryFilter(BuiltInCategory.OST_SpecialityEquipment)).
  2.                     WhereElementIsNotElementType().ToElements();
  3.  
  4. foreach (Element elem in specialityEquip)
  5. {
  6.     LocationPoint loc = elem.Location as LocationPoint;
  7.     string z = loc.Point.Z.ToString();
  8.  
  9.     Parameter p = elem.LookupParameter("Object Height");
  10.     p.SetValueString(z);
  11. }
НО как только я пытаюсь установить это значение в параметр, в elem.Location выбивает ошибку System.NullReferenceException.
Подскажите пожалуйста, почему так происходит?

Отмечено как Решение asia 19-11-2020, 16:18:34

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Есть два класса, наследующие абстрактный класс Location - LocationPoint и LocationCurve.
Вы используете безопасное приведение типа
Код - C# [Выбрать]
  1. LocationPoint loc = elem.Location as LocationPoint;
А значит переменная loc может ссылаться на null, если у элемента не LocationPoint, а LocationCurve. Так что надо переменную loc проверять на null