Проблема с префиксом и суффиксом размеров
Remy van den Bor из компании ICN Solutions столкнулся с проблемой при попытке получить префикс и суффикс размера. В результате общения, Scott Wilson предоставил несколько возможных решений проблемы.
Вопрос: Я заметил странную особенность при работе с размерами в Revit 2014 и 2015.
У меня есть набор размеров из Revit и мне нужно проверить, используется ли префикс или суффикс. Если да, то поместить это значение в текстовое поле.
Проблема в следующих строках:
Допустим, у размера есть только суффикс «мм» и в этом случае свойство dim.Prefix возвращает пустую строку. Но, если не используется ни префикс ни суффикс, то Revit выбрасывает исключение AccesViolation и закрывается без каких-либо предупреждений.
Фактически, вы не можете проверить суффикс или префикс размера, если ни один из них не установлен.
В качестве временного решения я проверяю, является ли значение размера числом или нет. Если нет, значит у размера есть суффикс или префикс.
Кто-нибудь знает, как решить эту проблему более корректным способом?
Вот мой код, который я использую для проверки, дабы избежать непредвиденное завершение работы Revit:
Ответ Скота: Я придумал пару способов как избежать этой неопрятной ошибки, до тех пор, пока она не будет исправлена.
Первый способ довольно скучный и долгий. Этот способ предполагает анализ значения свойства ValueString – того значения, которое видит пользователь в интерфейсе, и определения того, есть ли там модификаторы значения.
Это немного сложно для реализации, и, к счастью, вам не придется это делать. Есть более красивый способ. Если вы зададите значение любому текстовому свойству у размера, то похоже после этого можно без ошибок обращаться к свойству Prefix или Suffix.
Т.е., перед тем как обращаться к свойствам, которые закрывают Revit, просто возьмите свойство, которое работает без ошибок, и переназначьте его значение на то же самое. Например, свойство Above.
Вот пример кода:
ДОБАВЛЕНО: Упс.. Оказывается, вы уже нашли решение. Что ж, будет еще одно.
Ответ: Я попробовал решение Скота. В Revit 2014 это не работает. Revit по прежнему падает. А в Revit 2015 работает нормально. Подтверждаю.
Обсуждение: http://adn-cis.org/forum/index.php?topic=1056
Опубликовано 28.10.2014Отредактировано 18.11.2014 в 15:24:26