И не увлекайся using если не понимаешь как это работает.Насколько я понимаю эту конструкцию, using позволяет освободить ресурсы сразу после выхода из него и указывает сборщику мусора что объекты могут быть удалены. Я правильно понимаю?
Может слишком длинные строки записываете в xData? Хотя вроде бы Audit их обрезает без сообщений об ошибках..Не длинные, 18 символов.
Не всегда, но более-менее правильно. И ты удаляешь только что созданную acRegAppTblRec.И не увлекайся using если не понимаешь как это работает.Насколько я понимаю эту конструкцию, using позволяет освободить ресурсы сразу после выхода из него и указывает сборщику мусора что объекты могут быть удалены. Я правильно понимаю?
без using я хватаю ошибку eHadMultipleReadersЗначит ищи ошибку в другом месте. Я так и не понял исправил ли ты всё, что было в предыдущей теме.
Я так и не понял исправил ли ты всё, что было в предыдущей теме.Если речь об открытии объектов за пределами транзакции то да, я внес выполнение части методов внутрь транзакции чтобы объекты оставались валидными. Между методами передаю ObjectIdCollection вместо самих объектов. После этого eHadMultipleReaders до теперешнего удаления using я не получал.
Я бы убрал UpgradeOpen() - он к работе с транзакциями не имеет отношения, а таблицу можно сразу открыть на запись.Полностью согласен. Или заменить транзакцию на эмуляцию транзакции.
После этого eHadMultipleReaders до теперешнего удаления using я не получал.Значит еще что-то осталось. Лучше раздели транзакцию на две - в одной транзакции создай RegAppTableRecord и добавь в базу (к RegAppTable). А в другой добавь расширенные данные к объектам.
Если речь об открытии объектов за пределами транзакции то да, я внес выполнение части методов внутрь транзакции чтобы объекты оставались валидными.Вообще-то у нас принято ставить точку в созданной теме, а та тема так и осталась незаконченной без отметки о решении....
, а та тема так и осталась незаконченной без отметки о решении....Исправился
Значит еще что-то осталось. Лучше раздели транзакцию на две - в одной транзакции создай RegAppTableRecord и добавь в базу (к RegAppTable). А в другой добавь расширенные данные к объектам.
Затем посмотри будет ли чертеж испорченПроверил двумя способами, как при помощи Editor.GetSelection так и просто исключением вызова моего проблемного метода в коде. Результат такой: при помощи Editor.GetSelection раз через раз приводит к появлению ошибки AcDbRegAppTable(9) Invalid Entry, во втором случае все нормально - вызов метода исключен из кода, ошибок не возникает. Значит мой код вызывает ошибку при присвоении xdata, но как понять где?
Результат такой: при помощи Editor.GetSelection раз через раз приводит к появлению ошибки AcDbRegAppTable(9) Invalid EntryЧто такое "раз через раз"? Точнее пожалуйста.
И что делает acCurDb.GetBuildingAreaNumber();Запрашивает номер строительного района из свойств чертежа.
Я внес правки, но это не сработало, по-прежнемуЯ думаю что там еще должны были быть ошибки. Давай полный лог.
AcDbRegAppTable(9) Invalid Entry
AcDbRegAppTable(9) was not repaired.
Давай полный лог.
Command: _netload
Command: SYNCDRAWINGS
Regenerating model.
Dimension disassociated.
Dimension disassociated.
Command: '_zoom
Specify corner of window, enter a scale factor (nX or nXP), or
[All/Center/Dynamic/Extents/Previous/Scale/Window/Object] <real time>: _e Regenerating model.
Command: AUDIT
Fix any errors detected? [Yes/No] <N>:
Auditing Header
Auditing Tables
Auditing Entities Pass 1
Pass 1 26600 objects audited
Auditing Entities Pass 2
AcDbRegAppTable(9) Invalid Entry
AcDbRegAppTable(9) was not repaired.
Pass 2 26600 objects audited
Auditing Blocks
161 Blocks audited
Auditing AcDsRecords
Total errors found 1 fixed 0
Erased 0 objects
Automatic save to C:\Users\Paragon\appdata\local\temp\Drawing1_1_1_1179.sv$ ...
Command:
Так что ищи у себя дальше ошибки.В каком направлении искать? Объекты я больше не передаю-пользуюсь ObjectIdCollection, транзакции разделил на две раздельные. Что еще можно исключить?
Что еще можно исключить?Ну например мне не нравится throw у тебя в GetBuildingAreaNumber. В данном случае вроде бы ничего, но если бы ты вызывал этот код внутри транзакции и throw вызвалось, то транзакция была бы незавершенной.
Мой код у тебя тоже вызывает ошибки в файле?
Command: TESTXDATA
Select objects: Specify opposite corner: 56895 found
Select objects:
; error: bad argument type: lentityp nil
Select objects:
; error: bad argument type: lentityp nil
у тебя работает не мой кодКод Ваш на C#, мой тоже полностью на нем. VisualLisp точно у меня нигде не применяется я его не знаю. Откуда он вызывается я теряюсь в догадках - никакие аргументы я никуда не передаю.