Не устанавливается значение параметра колодца через PartData

Автор Тема: Не устанавливается значение параметра колодца через PartData  (Прочитано 7318 раз)

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

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Привет,   ;)
Не меняется параметр (или свойство) у колодца - Марка (Mark).
Куда смотреть?
Спасибо!  :-* ;D

Тест для выбора колодца и записи свойства Mark:
Код - C# [Выбрать]
  1.         [CommandMethod("Test", CommandFlags.Modal)]
  2.         public void Test()
  3.         {
  4.             var doc = Application.DocumentManager.MdiActiveDocument;
  5.             var selRes = doc.Editor.GetEntity("Выбор колодца");
  6.             if (selRes.Status != PromptStatus.OK) return;
  7.  
  8.             using var t = doc.TransactionManager.StartTransaction();
  9.             var s = selRes.ObjectId.GetObject(OpenMode.ForWrite, false, true) as Structure;
  10.             if (s == null)
  11.             {
  12.                 Log("Это не колодец");
  13.                 return;
  14.             }
  15.  
  16.             var partData = s.PartData;
  17.  
  18.             foreach (var f in partData.GetAllDataFields().OrderBy(o => o.Name))
  19.             {
  20.                 Log(
  21.                     $"{f.Name}={f.Value}, {f.Description}, Context={f.Context}, Units={f.Units}, IsReadOnly={f.IsReadOnly}");
  22.             }
  23.  
  24.             var field = partData.GetDataFieldBy("Mark");
  25.             if (field == null)
  26.             {
  27.                 Log("Не найден параметр марки");
  28.                 return;
  29.             }
  30.  
  31.             var newValue = field.ValueList[3];
  32.             field.Value = newValue;
  33.             s.PartData = partData;
  34.             t.Commit();
  35.         }
  36.  
  37.         private static void Log(string msg)
  38.         {
  39.             var ed = Application.DocumentManager.MdiActiveDocument.Editor;
  40.             ed.WriteMessage($"{msg}\n");
  41.         }

Ошибка не выскакивает, но свойство не меняется!

Тестовый файл Civil 2019
https://drive.google.com/open?id=15gjUpSUF-tFsIhMhk-P2RCu8F_448FZm

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Насколько я понимаю, этот параметр "Mark" должен быть задан в каталоге труб и колодцев и этот каталог должен быть подключен. Иначе код работать не будет. И без этого каталога тестовый чертёж бесполезен.

Оффлайн polzovatel

  • ADN OPEN
  • Сообщений: 11
  • Карма: 1
Тестовый файл Civil 2019

Здравствуйте. Не в тему, но уж очень любопытно. Обнаружил в вашем тестовом файле одну интересную штуку.

Расскажите пожалуйста, как работает и работает ли метка для областей данных показанная на скрине?




Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Дмитрий Загорулькин, да каталог подключен.
Может есть предположения?
В других семействах такой проблемы нет. А в чем разница - непонятно.

polzovatel, это не я делал. точно не скажу сори.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Вручную через свойства колодца меняется?

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вильдар,
Сколько всего значений в field.ValueList и какое значение у field.ValueList[3]?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
8 значений в списке


Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Уже интересно. У меня с дополнительными параметрами такой проблемы не было. Недавно как раз добавлял в своё приложение инструмент по их более удобному редактированию. Можно попробовать покопаться, но без каталога проблему не воспроизвести. Можете дать хотя бы файлы каталога, относящиеся к этому семейству (XML и DWG)? Или хотя бы просто XML, если элемент жутко секретный.
P.S. Кстати, как вариант, возможно проблема из-за наличия спецсимволов в строке. Помню у меня была очень большая проблема со списочными значениями, которые содержали звёздочку. Возможно, что решётка тоже капризно себя ведёт.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
P.S. Кстати, как вариант, возможно проблема из-за наличия спецсимволов в строке. Помню у меня была очень большая проблема со списочными значениями, которые содержали звёздочку. Возможно, что решётка тоже капризно себя ведёт.
Кстати, очень может быть. Я об этом тоже подумал. Возможно спецсимолы следует экранировать при помощи символа `, как делается для функции (wcmatch) в lisp и Autodesk.AutoCAD.Internal.Utils.WcMatchEx в AutoCAD .NET API. Для этих функций "#" - спецсимвол.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
О, точно. Проверю.

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Проверили. Убрали # из значений. Не работает!  :'(
Экранирование всякое пробовал - \ ` ' - выскакивает исключение.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вильдар,
Если после изменения
Код - C# [Выбрать]
  1.             field.Value = newValue;
  2.             s.PartData = partData;

повторно (в новой транзакции) получить field, то field.Value будет новое или старое?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
повторно (в новой транзакции) получить field, то field.Value будет новое или старое?
Старое!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вильдар,
Ну тогда тебе остаётся только сделать так, как предложил Дмитрий Загорулькин - предоставить всё, что нужно для тестирования.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Ещё как вариант - поставьте себе демо-версию "Итерис-Сети" и попробуйте изменить значение с помощью палитры "Свойства элементов сети". Если получится - значит, проблема в коде. Если нет - скорее всего, в каталоге, чертеже, Civil 3D и т.д. и т.п.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Ошибка не выскакивает, но свойство не меняется!
Цитата: Александр Ривилис от 31-10-2019, 14:02:56
повторно (в новой транзакции) получить field, то field.Value будет новое или старое?
Старое!
При изменении значения поля работает какой-то встроенный валидатор. К примеру, если пытаться задать числовое значение вне заданного интервала, то значение свойства сбрасывается на исходное и ошибки при этом не возникает. То есть, то же самое поведение, что и у вас. А вот что не нравится этому валидатору - вопрос.

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Весь каталог не могу выложить.
А отдельные файлы по семейству наверно да.

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Отправил запрос на демо версию  :)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вильдар,
А остальные параметры этим кодом ты можешь менять? Например, "SHU", или "SHNO", или "SVET" ?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Александр Ривилис, именно для этого семейства нет. У других меняется. Да, код один.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Отправил запрос на демо версию 
Тогда подожду результатов. Элемент уж больно мудрёный. Вносить его в каталог довольно затратно по времени.

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Дмитрий Загорулькин, скачал, установил. Но палитра не открывается - пишет, что необходима активация.
А в твоей палитре будут свойства из нашего каталога?
Ок. Активацию получил.
Не отображаются свойства нашего каталога!

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Это означает только одно - проблемы с настройками каталога. Либо каталог не подключен, либо в каталоге какие-то проблемы, либо список элементов не настроен, либо для сети не задан этот список элементов... Какой-то привязки к конкретному каталогу приложение не имеет.

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Дмитрий Загорулькин, да, для других семейств отображаются все наши свойства в палитре итерис.