ADN Open CIS
Сообщество программистов Autodesk в СНГ

16/05/2013

Как проверить являться ли строка допустимой в качестве имени в символьной таблице?

Вопрос:

Я хотел бы проверить, что строка, указанная пользователем в качестве имени блока или имени слоя, является допустимой. Есть функции для проверки?

Ответ:

Вы правы. Не каждая строка является приемлемой в качестве имени, например, блока. Когда создаётся блок с использованием интерфейса AutoCAD, пользователь может увидеть следующее сообщение об ошибке:

 

Как вы знаете есть множество различных символьных таблиц в dwg-файле, таких как таблица блоков, таблица типов линий и т.д.

Для проверки того, является ли строка допустимой в качестве имени в символьной таблице или нет в ObjectARX есть функция acdbSNValid().

В AutoCAD .NET API для этой же цели используется метод SymbolUtilityServices.ValidateSymbolName(). Этот метод вызывает исключение если имя недопустимо. Вот пример: 

Код - C#: [Выделить]
  1. string[] names = { "lk3j4!@ #`$>%", // вызовет исключение
  2.                    "lk3j4!@ #$%" };  // нормальное имя
  3. foreach (string s in names) {
  4.  try {
  5.    // Проверяем переданную строку на допустимость
  6.    // в качестве имени в символьной таблице
  7.    SymbolUtilityServices.ValidateSymbolName( s, false);
  8.    System.Windows.Forms
  9.        .MessageBox.Show( s + " допустимое имя." );
  10.  } catch {
  11.    // Исключение показывает, что имя недопустимое
  12.    System.Windows.Forms
  13.        .MessageBox.Show( s + " недопустимое имя.");
  14.  }
  15. } // foreach

 

Второй параметр метода ValidateSymbolName() является флагом, определяющим разрешить или не разрешить символ '|' в строке (он появляется, если имя взято из файла внешней ссылки).

Источник: http://adndevblog.typepad.com/autocad/2012/07/how-to-check-if-a-given-string-is-a-valid-name-for-an-item-in-a-symbol-table.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=33.0

Опубликовано 16.05.2013
Отредактировано 05.06.2013 в 22:08:16