Насчет указателей, я согласен с тем, что они лучше, но как быть с тем, что руками мы закрываем сначала объекты, потом Model Space, а порядок вызова деструкторов не определен? Ничего не испортится, если закроется сначала Model Space, а потом объект? А если с ними вместе открывать другие объекты, например слои, есть требования по порядку закрытия?Ну во-первых порядком вызова деструкторов можно управлять. Например, конструкция вида:
Для выбора всех объектов по acedSSGet( L"_A", ....); не надо открывать Model Space, я правильно понимаю?Понимаешь правильно. Более того, если в этот момент ModelSpace окажется открыта на запись, то функция acedSSGet( L"_A", ....); не сработает, так она сама пытается открыть ModelSpace, а как я писал уже выше это становится для неё невозможным.
Такой код есть и работает. О каких итерациях тогда речь?
Так управлять временем жизни не удобно, если объекты нужны на нескольких страницах кода, а также если их области видимости почему-либо пересекаются.Никто тебе не мешает закрывать и открывать объекты. Главный принцип - как можно меньше держать объект открытым.
Может есть что-то такое уже готовое, arx-ное?Нет.
Если закрыть сначала ModelSpace, а потом объект на нем, это ошибка?Нет. Это нормальное и наиболее естественное поведение. Т.е. допустим тебе нужно добавить окружность (AcDbCircle) в пространство модели:
P.S.: У меня создаётся впечатление, что ты "рихтуешь" чей-то чужой код, который написан крайне небрежно, без понимания основ ObjectARX. Я прав? ;)
Дайте ссылку, если можно, именно на основы.К сожалению в явном виде такого документа нет. Если не считать одного курса, который читали на Autodesk University несколько лет назад, но я его сейчас не смог найти. :( Так что и ссылки дать не на что. А вообще это приходит с опытом и изучением чужих примеров. Которых, кстати, в самом ObjectARX SDK достаточно много.