Чтобы писать в XData нужно открыть транзакциюНужно открыть объект, но не обязательно транзакцией.
строчка проходит без ошибок все работает, но файл повторно не открыть(А приложение "AppName" зарегистрировано?
если убрать второй TypedValue или вовсе строчку с XData то все работает..
я что то упускаю? с чем связано такое поведение
делаю это все в ObjectOverrule.Close()
делаю это все в ObjectOverrule.Close()Возможно, что нельзя в этом методе записывать XData.
И все работает, но повторно файл не открывается(Как это проявляется? Восстановление помогает?
Если записать только первую строчку с названием приложения то все нормально..А это означает, что расширенные данные приложения с переданным именем удаляются из объекта. Если их там нет, то этот код вообще не меняет объект.
Я открываю объект в OpenCloseTransaction1. Ты его повторно открываешь?
simson43,
А где у тебя:Код - C# [Выбрать]???
base.Close(dbObject);
У тебя же остался незакрытый объект в этом случае.
simson43,
Убери транзакцию и добавление других труб.
Пока убедись, что можно модифицировать XData объекта, который попадает в ObjectOverulle.Closesimson43,
Убери транзакцию и добавление других труб.
А где использовать полученные данные?
Собираю их в коллекцию и потом уже обрабатываю, когда приложение переходит в состояние "ожидаю действий от пользователя" или "бездействую".
что самое странное эффект тот же(Эффект то какой?
файл после сохранения повторно не открываетсяГде файл для проверки?
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 и выложи результаты её работы.
База данных чертежа спасена.
Reading handle 6AC3 object type AeccDbPipe
Error 34 (eWrongObjectType) Object discarded
Reading handle 6ACE object type AeccDbPipe
Error 34 (eWrongObjectType) Object discarded
Выложить почищенный файл или что написал в командной строке?Не нужно выкладывать. Я увидел то, что хотел. Уточни какое значение appName
"PavlovXApp"Такое приложение в этом файле не зарегистрировано. Картинку прикладывать не буду - ты и сам при помощи ARXDBG или MGDDBG это увидишь.
в очищенном файле может быть его уже не стало? может такое быть?Нет. _RECOVER говорит что именно оно удаляет.
я регистрирую его при открытии файлаВ каком событии? С этим нужно быть еще более осторожным, чем с Close.
Собираю их в коллекцию и потом уже обрабатываю, когда приложение переходит в состояние "ожидаю действий от пользователя" или "бездействую". Есть соответствующие этому события Editor.EnteringQuiescentState и Application.Idle.
я пробовал в EnteringQuiescentStateТы показал код, в котором этого нет. Зарегистрируй своё приложение, убедись что оно зарегистрировалось и сохрани чертеж. Закрой его и открой по новой. Затем уже запускай в работу свой модуль и проверяй портится чертеж или нет. Учись тестировать и находить из-за чего возникает ошибка.
я пробовал в EnteringQuiescentStateв 19 сообщении
Ты показал код, в котором этого нет.
В 19 сообщении нет ни кода, где ты собираешь ObjectId, ни кода регистрации своего приложения.я пробовал в EnteringQuiescentStateв 19 сообщении
Ты показал код, в котором этого нет.
Зарегистрируй своё приложение, убедись что оно зарегистрировалось и сохрани чертеж. Закрой его и открой по новой. Затем уже запускай в работу свой модуль и проверяй портится чертеж или нет.все это проверял. приложение зарегистрировано. и без происшествий пишется по команде - значит с приложением все нормально...
что самое странное эффект тот же(Ну я не знаю. У меня уже очень давно XData редактируются именно так - никаких проблем не возникает.
Такое приложение в этом файле не зарегистрировано.Вы были правы.
Вы были правы.Почему-то меня это не удивляет. :) Хорошо что докопался до причины.
Ошибка оказалась очень глупой - не сохранил приложение в транзакции.
как то такЛучше сперва открыть таблицу приложений просто для чтения, и если приложение не зарегистрировано - тогда уже UpgradeOpen для записи.