Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Виктор Чекалин от 06-03-2014, 10:59:32
-
Доброго времени суток.
Подскажите, какие виды идентификаторов есть у автокадовских объектов? Я вижу два: DBObject.ObjectId и DBObject.Handle.
Являются ли эти идентификаторы уникальными в пределах одного файла или уникальные в глобальном смысле?
Может ли измениться идентификатор и при каких условиях?
-
Подскажите, какие виды идентификаторов есть у автокадовских объектов? Я вижу два: 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").
-
Андрей, спасибо за ссылки.
То есть я правильно понимаю, что идентификатора типа GUID, или ревитовского Element.UniqueId, т.е. уникального среди всех файлов (за исключением копии одного и того же файла), в AutoCAD не существует?
Существует ли идентификатор файла или базы данных, который например генерировался каждый раз при создании нового файла? Вот здесь (http://forum.dwg.ru/showthread.php?t=95217) такая тема поднималась, но четкого ответа так и не последовало.
-
идентификатора типа GUID, или ревитовского Element.UniqueId, т.е. уникального среди всех файлов
GUID'ы отсутствуют (насколько мне известно).
Существует ли идентификатор файла или базы данных, который например генерировался каждый раз при создании нового файла?
Если вопрос о глобальной уникальности (аля GUID), то насколько я знаю - нет (хотя могу и ошибиться). Думаю, что более точно на этот вопрос смогут ответить в технической поддержке ADN (на тот случай, если А.Н. Ривилис не владеет этой информацией).
-
Ок, понял.
Благодарю за информацию.
P.S. Ссылку поправил.
-
То есть я правильно понимаю, что идентификатора типа GUID, или ревитовского Element.UniqueId, т.е. уникального среди всех файлов (за исключением копии одного и того же файла), в AutoCAD не существует?
Нет. Такого нет точно. Но при желании ты можешь сам его сделать используя XDATA - создать строковый элемент (группа 1000) и присвоить ему GUID. Будет уникальный настолько, насколько будет уникальным GUID. Ну и в копии файла и в копии примитива они будут совпадать.
-
Но при желании ты можешь сам его сделать используя XDATA - создать строковый элемент (группа 1000) и присвоить ему GUID. Будет уникальный настолько, насколько будет уникальным GUID. Ну и в копии файла и в копии примитива они будут совпадать
В этом случае нужно понимать, что не стоит 100% надеяться на то, что созданный вами XDATA обязательно будет присутствовать и в дальнейшем, поскольку пользователь (или какой-либо плагин) в последствии вполне могут изменить, либо вовсе удалить эту информацию.
-
Я не встречал ни одного пользователя, который бы знал и умел пользоваться расширенными данными. Поэтому, вероятность их сохранности близка к 100% :)
Изменение XDATA пользователем выполняется через инструмент Express Tools, что, по сути, является приложением к AutoCAD.
Под ревит, наверное, тоже можно написать приложение, которое будет изменять Element.UniqueId?
-
Пользователь может даже не знать о существовании XDATA и тем не менее изменить их, если использует программки, которые за кулисами работают с XDATA.
-
В общем то вариант с XDATA мне не подходит в любом случае. Интересно было в первую очередь есть ли встроенный уникальный идентификатор.
А в ревите изменить UniqieId не выйдет. Это свойство readonly. Генерируется оно в момент создания элемента и затем остается неизменным.
-
Интересно было в первую очередь есть ли встроенный уникальный идентификатор.
Однозначно нет. Только внутри dwg-файла HANDLE.