Насколько я знаю, ObjectId уникален для объекта в документе в рамках сессии.Насколько я понимаю, он уникален сразу для всех документов, открытых в AutoCAD в рамках текущей сессии, а не только для текущего документа:
When an object or entity is first added to the database, a new stub object is created and set to point to the object or entity being added to the database. The address of this stub in memory is used as the ads_name and the AcDbObjectId value for the object or entity added to the database. The same mechanism applies when a database is read into memory from disk.Т.о. если я верно понимаю документацию, то речь идёт об адресе в памяти, а у каждого объекта она своя. Соответственно в разных документах не может одновременно существовать объект под одним и тем же адресом в памяти.
...
An AcDbObjectId object is a container for the address of a database-resident object's stub. As such, it is an extremely important object because it contains the only session-persistent locator for the database-resident object.
Да, логично. Но тогда теоретически не исключена ситуация, что документ был закрыт, адреса в памяти освободились, открыт другой документ и его объекты расположились по освободившимся адресам.И что? Конфликтов-то ведь это не создаст. Использовать освободившуюся память никто не запрещает.
P.S. Хотя, если сохранять в памяти ObjectId, то простая проверка покажет, что он был в уже закрытом документе и данные нужно обновить.Именно.
Но тогда теоретически не исключена ситуация, что документ был закрыт, адреса в памяти освободились, открыт другой документ и его объекты расположились по освободившимся адресам.Да. Но ObjectId - это не совсем указатель в памяти. ObjectId.Database возвращает базу в которой этот ObjectId содержится.
Этот буфер будет общим для всех открытых документов. Вот и встал вопрос: достаточно ли этого, или нужно еще дополнительно ввести разделение по базам данных или документам?:Достаточно, ибо по ObjectId однозначно определяется Database.