|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
![]() |
Поиск в этой теме |
![]() |
#1 | |
Каким образом вычислить уникальный хэш-код группы графических объектов в Autocad (типа для создания цифровой подписи)?
Регистрация: 18.11.2019
Сообщений: 1,704
|
||
Просмотров: 2075
|
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,153
|
Ну как... Entnext от забора до упора или цикл по выбранным объектам, Entget по каждому объекту, LM:lst->str (или другой подобный вариант), а дальше все то же, что и для текстового документа средствами какой-нибудь стандартной библиотеки (должна ж быть такая). Вычисленный хеш хранить в польз. свойствах документа, чтоб на него могли ориентироваться всякие файл-менеджеры
Честно говоря, не уверен, что будет корректно работать ![]() Возможно, надо исключить группы 0 с ename, т.к. они меняются в каждом сеансе, и ориентироваться только на handle Последний раз редактировалось kp+, 14.03.2024 в 10:34. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,704
|
Цитата:
Если я все объекты передвину в сторону в модели, содержательная часть чертежа не изменится, а хэш-код - изменится. Хотелось бы придумать алгоритм, который бы позволял сравнивать хэш-коды с учетом именно "содержательной части", которая определяет смысл. Также не ясно, нужно ли учитывать порядок следования объектов в базе. Наверное, нужно. Последний раз редактировалось nickname2019, 14.03.2024 в 10:44. |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,153
|
Цитата:
Цитата:
![]() |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,704
|
У них недостаточная степень достоверности.
Цитата:
Не хотелось бы сразу накладывать ограничения на алгоритм. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,704
|
А каким методом лучше считать хэш для длинной текстовой строки?
Можно попробовать найти левую нижнюю точку рассматриваемых объектов, передвинуть их так, чтобы она попала в ноль, сделать строку по объектам и посчитать хэш. Тогда хэш будет зависеть от взаимного положения объектов, что и нужно. Для гепланов тоже работать будет. Проблема будет с блоками и внешними ссылками, для них нужно отдельно считать хэши, а уровень вложенности этих объектов может быть огромным :-(. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,101
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
огорчу сразу - придется все равно хэши считать объектов, любая проверка по хэшу подразумевает высчитывание актуального хэша состояния объекта и сравнение с сохраненным ранее каким-то способом значением хэша. |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,153
|
Может, воспользоваться стандартным сервисом добавления эцп к dwg?
https://help.autodesk.com/view/ACD/2...C-B9B95D6C6F39 Конечно, эта штука не отличит изменений по сути даже от панорамирования-зумирования, но уже что-то. Если подпись есть - значит файл точно не менялся |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,704
|
Цитата:
----- добавлено через ~2 мин. ----- Да. Куда этот хэш сохранять - отдельный вопрос. Но, имхо, это более прогрессивный контроль версий, чем Измы писать в штампах. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
ну теоретически можно посчитать хеши примитивов - в лоб (псевдокод на .net):
Код:
Ну для этого и вводится документооборот, когда доступ и контроль документов не сисадмином определяется на сервере файлопомойки - а индивидуально для каждого документа. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,704
|
Цитата:
Upd. Подумал я подумал - так не выйдет, так как за счет округлений координаты от перемещения объектов туда-сюда будут немного отличаться. Т.е. просто данные объекта нельзя в строку отправить, координаты придется как-то округлять. Пичалька ![]() Последний раз редактировалось nickname2019, 14.03.2024 в 14:26. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Цитата:
из-за аппроксимации степенями двойки фактически равные координаты в бинарном представлении могут отличаться на один-два бита - и всё, новый хэш уже. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Плагин сборки в чертёж отмеченных областей из других файлов чертежей, с разбивкой объектов MagiCAD и SPDS. Протестировано в AutoCAD 2015, 2018 MagiCAD2016 в AutoCAD 2015 | petro_f | Готовые программы | 20 | 28.07.2020 14:21 |
При завершении копирования (copy) нескольких выделенных объектов, исходный остается активным. AutoCAD 2017. | OlegPVQ | AutoCAD | 13 | 15.11.2018 01:59 |
AutoCAD 2011 проблема с выделением 3д объектов | dark_mike | AutoCAD | 7 | 20.08.2010 15:13 |
Проблема при вставке объектов из autocad в Word | vova_king | AutoCAD | 4 | 06.08.2010 18:03 |