запись в XData

Автор Тема: запись в XData  (Прочитано 14887 раз)

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

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: запись в XData
« Ответ #15 : 09-02-2019, 21:40:05 »
simson43,
Убери транзакцию и добавление других труб.

А где использовать полученные данные?
Может работа с трубой за пределами транзакции.. скорее всего. Но вряд ли это влияет же да?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: запись в XData
« Ответ #16 : 09-02-2019, 21:43:47 »
simson43,
simson43,
Убери транзакцию и добавление других труб.

А где использовать полученные данные?
Пока убедись, что можно модифицировать XData объекта, который попадает в ObjectOverulle.Close
P.S.: Разговор с тобой происходит на уровне "я вам ничего не скажу, но вы мне помогите". Кроме того, что непонятно как помочь, так еще и пропадает желание помогать. Имей в виду.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: запись в XData
« Ответ #17 : 09-02-2019, 21:49:19 »
Хорошо, проверю скину код как доберусь до него
Спасибо

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: запись в XData
« Ответ #18 : 11-02-2019, 15:23:22 »
Я советую не делать никаких модификаций в методе Close(). Как-то я уже натыкался на проблемы с этим для сивильных объектов. Они все взаимосвязаны. Когда открыт один - нет никакой гарантии, что не открыт другой, связанный с ним. Код при этом работает через раз. Никогда не знаешь, когда "выстрелит" очередная проблема.
В итоге, сейчас я только смотрю данные открываемых и закрываемых объектов. Собираю их в коллекцию и потом уже обрабатываю, когда приложение переходит в состояние "ожидаю действий от пользователя" или "бездействую". Есть соответствующие этому события Editor.EnteringQuiescentState и Application.Idle.

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: запись в XData
« Ответ #19 : 14-02-2019, 21:04:42 »
теста ради сократил до такого состояния

Код - C# [Выбрать]
  1. public override void Close(DS.DBObject dbObject)
  2. {
  3.     if (IsApplicable(dbObject) && dbObject.IsNewObject && !dbObject.IsCancelling && !dbObject.IsErased)
  4.     {
  5.         Pipe pipe = dbObject as Pipe;
  6.  
  7.         pipe.XData = new ResultBuffer(
  8.             new TypedValue((int)DxfCode.ExtendedDataRegAppName, appName"),
  9.            new TypedValue((int)DxfCode.ExtendedDataInteger32, 1));
  10.    }
  11.    base.Close(dbObject);
  12. }

эффект тот же
видимо нельзя в Close это делать

теперь пытаюсь пойти таким путем
Собираю их в коллекцию и потом уже обрабатываю, когда приложение переходит в состояние "ожидаю действий от пользователя" или "бездействую".

записываю в только добавленные объекты, в которых еще нет моего приложения
Код - C# [Выбрать]
  1. private static void Editor_EnteringQuiescentState(object sender, EventArgs e)
  2.         {
  3.             using (DocumentLock dl = AcadDoc.LockDocument())
  4.             {
  5.                 for (int i = pipeSegments.Count - 1; i >= 0; i--)
  6.                 {
  7.                     PipeSegment pipeSeg = pipeSegments[i];
  8.                     using (Pipe pipe = pipeSeg.Id.Open(OpenMode.ForWrite) as Pipe)
  9.                     {
  10.                         if (pipe.GetXDataForApplication(appName) == null)
  11.                         {
  12.                             pipe.XData = new ResultBuffer(
  13.                                 new TypedValue((int)DxfCode.ExtendedDataRegAppName, appName),
  14.                                 new TypedValue((int)DxfCode.ExtendedDataInteger32, 1));
  15.                         }
  16.                         else return;
  17.                     }
  18.                 }
  19.             }
  20.         }

что самое странное эффект тот же(
pipeSegments это список объектов содержащий Id существующих в текущем документе труб и другую информацию

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: запись в XData
« Ответ #20 : 14-02-2019, 22:58:16 »
что самое странное эффект тот же(
Эффект то какой?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: запись в XData
« Ответ #21 : 14-02-2019, 22:59:54 »
файл после сохранения повторно не открывается
« Последнее редактирование: 14-02-2019, 23:02:18 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: запись в XData
« Ответ #22 : 14-02-2019, 23:02:41 »
файл после сохранения повторно не открывается
Где файл для проверки?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: запись в XData
« Ответ #23 : 14-02-2019, 23:09:06 »
civil просто зависает при попытке открыть этот файл

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: запись в XData
« Ответ #24 : 14-02-2019, 23:20:30 »
civil просто зависает при попытке открыть этот файл
Recover восстанавливает файл, но что-то конечно порушено:
Reading handle 6AC3 object type AeccDbPipe
      Error 34 (eWrongObjectType)                       Object discarded
Reading handle 6ACE object type AeccDbPipe
      Error 34 (eWrongObjectType)                       Object discarded
Но у меня чистый AutoCAD. Проверь у себя команду _RECOVER и выложи результаты её работы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: запись в XData
« Ответ #25 : 14-02-2019, 23:27:26 »
очевидно две трубы, в XData которых записал "1"

при чем если записываю то же самое просто командой, то нормально записывает/сохраняется/закрывается/открывается

а вот по событию что-то не работает(

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: запись в XData
« Ответ #26 : 14-02-2019, 23:30:32 »
Выложить почищенный файл или что написал в командной строке?

в чертеже просто удалил две трубы
а написал то же самое, что и у вас

    База данных чертежа спасена.
Reading handle 6AC3 object type AeccDbPipe
      Error 34 (eWrongObjectType)                       Object discarded
Reading handle 6ACE object type AeccDbPipe
      Error 34 (eWrongObjectType)                       Object discarded

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: запись в XData
« Ответ #27 : 14-02-2019, 23:32:10 »
Выложить почищенный файл или что написал в командной строке?
Не нужно выкладывать. Я увидел то, что хотел. Уточни какое значение appName
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: запись в XData
« Ответ #28 : 14-02-2019, 23:33:45 »
"PavlovXApp"

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: запись в XData
« Ответ #29 : 14-02-2019, 23:37:11 »
"PavlovXApp"
Такое приложение в этом файле не зарегистрировано. Картинку прикладывать не буду - ты и сам при помощи ARXDBG или MGDDBG это увидишь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение