Как проверить являться ли строка допустимой в качестве имени в символьной таблице?
Вопрос:
Я хотел бы проверить, что строка, указанная пользователем в качестве имени блока или имени слоя, является допустимой. Есть функции для проверки?
Ответ:
Вы правы. Не каждая строка является приемлемой в качестве имени, например, блока. Когда создаётся блок с использованием интерфейса AutoCAD, пользователь может увидеть следующее сообщение об ошибке:
Как вы знаете есть множество различных символьных таблиц в dwg-файле, таких как таблица блоков, таблица типов линий и т.д.
Для проверки того, является ли строка допустимой в качестве имени в символьной таблице или нет в ObjectARX есть функция acdbSNValid().
В AutoCAD .NET API для этой же цели используется метод SymbolUtilityServices.ValidateSymbolName(). Этот метод вызывает исключение если имя недопустимо. Вот пример:
- string[] names = { "lk3j4!@ #`$>%", // вызовет исключение
- "lk3j4!@ #$%" }; // нормальное имя
- foreach (string s in names) {
- try {
- // Проверяем переданную строку на допустимость
- // в качестве имени в символьной таблице
- SymbolUtilityServices.ValidateSymbolName( s, false);
- System.Windows.Forms
- .MessageBox.Show( s + " допустимое имя." );
- } catch {
- // Исключение показывает, что имя недопустимое
- System.Windows.Forms
- .MessageBox.Show( s + " недопустимое имя.");
- }
- } // 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
Отредактировано 05.06.2013 в 22:08:16