Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Виктор Чекалин от 06-03-2014, 10:59:32

Название: Идентификаторы объектов в AutoCAD
Отправлено: Виктор Чекалин от 06-03-2014, 10:59:32
Доброго времени суток.

Подскажите, какие виды идентификаторов есть у автокадовских объектов? Я вижу два: DBObject.ObjectId и DBObject.Handle.
Являются ли эти идентификаторы уникальными в пределах одного файла или уникальные в глобальном смысле?
Может ли измениться идентификатор и при каких условиях?
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Андрей Бушман от 06-03-2014, 12:00:44
Цитата: Виктор Чекалин
Подскажите, какие виды идентификаторов есть у автокадовских объектов? Я вижу два: DBObject.ObjectId и DBObject.Handle.
Являются ли эти идентификаторы уникальными в пределах одного файла или уникальные в глобальном смысле?

Тынц 1 (https://sites.google.com/site/bushmansnetlaboratory/translate-manual/sozdanie-i-redaktirovanie-obektov-autocad/otkrytie-i-zakrytie-obektov/rabota-s-identifikatorami-obektov-objectid).

Цитата: Виктор Чекалин
Может ли измениться идентификатор и при каких условиях?

Тынц 2 (http://bushman-andrey.blogspot.ru/2013/01/dbobjecthandoverto-objectid-handle.html) (в дополнение к "Тынц 1").
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Виктор Чекалин от 06-03-2014, 13:30:07
Андрей, спасибо за ссылки.

То есть я правильно понимаю, что идентификатора типа GUID, или ревитовского Element.UniqueId, т.е. уникального среди всех файлов (за исключением копии одного и того же файла), в AutoCAD не существует?

Существует ли идентификатор файла или базы данных, который например генерировался каждый раз при создании нового файла? Вот здесь (http://forum.dwg.ru/showthread.php?t=95217) такая тема поднималась, но четкого ответа так и не последовало.
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Андрей Бушман от 06-03-2014, 13:36:45
идентификатора типа GUID, или ревитовского Element.UniqueId, т.е. уникального среди всех файлов
GUID'ы отсутствуют (насколько мне известно).
Существует ли идентификатор файла или базы данных, который например генерировался каждый раз при создании нового файла?
Если вопрос о глобальной уникальности (аля GUID), то насколько я знаю - нет (хотя могу и ошибиться). Думаю, что более точно на этот вопрос смогут ответить в технической поддержке ADN (на тот случай, если А.Н. Ривилис не владеет этой информацией).
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Виктор Чекалин от 06-03-2014, 13:41:53
Ок, понял.

Благодарю за информацию.

P.S. Ссылку поправил.
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Александр Ривилис от 07-03-2014, 00:49:53
То есть я правильно понимаю, что идентификатора типа GUID, или ревитовского Element.UniqueId, т.е. уникального среди всех файлов (за исключением копии одного и того же файла), в AutoCAD не существует?
Нет. Такого нет точно. Но при желании ты можешь сам его сделать используя XDATA - создать строковый элемент (группа 1000) и присвоить ему GUID. Будет уникальный настолько, насколько будет уникальным GUID. Ну и в копии файла и в копии примитива они будут совпадать.
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Андрей Бушман от 07-03-2014, 06:36:17
Но при желании ты можешь сам его сделать используя XDATA - создать строковый элемент (группа 1000) и присвоить ему GUID. Будет уникальный настолько, насколько будет уникальным GUID. Ну и в копии файла и в копии примитива они будут совпадать
В этом случае нужно понимать, что не стоит 100% надеяться на то, что созданный вами XDATA обязательно будет присутствовать и в дальнейшем, поскольку пользователь (или какой-либо плагин) в последствии вполне могут изменить, либо вовсе удалить эту информацию.
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Дмитрий Загорулькин от 07-03-2014, 10:23:51
Я не встречал ни одного пользователя, который бы знал и умел пользоваться расширенными данными. Поэтому, вероятность их сохранности близка к 100% :)
Изменение XDATA пользователем выполняется через инструмент Express Tools, что, по сути, является приложением к AutoCAD.
Под ревит, наверное, тоже можно написать приложение, которое будет изменять Element.UniqueId?
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Андрей Бушман от 07-03-2014, 10:33:21
Пользователь может даже не знать о существовании XDATA и тем не менее изменить их, если использует программки, которые за кулисами работают с XDATA.
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Виктор Чекалин от 07-03-2014, 10:35:47
В общем то вариант с XDATA мне не подходит в любом случае. Интересно было в первую очередь есть ли встроенный уникальный идентификатор.

А в ревите изменить UniqieId не выйдет. Это свойство readonly. Генерируется оно в момент создания элемента и затем остается неизменным.
Название: Re: Идентификаторы объектов в AutoCAD
Отправлено: Александр Ривилис от 07-03-2014, 15:10:02
Интересно было в первую очередь есть ли встроенный уникальный идентификатор.
Однозначно нет. Только внутри dwg-файла HANDLE.