Отследить программно дату и время изменения примитива

Автор Тема: Отследить программно дату и время изменения примитива  (Прочитано 10871 раз)

0 Пользователей и 7 Гостей просматривают эту тему.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Подскажите есть ли в AutoCAD API возможность прочитать
дату и время изменения примитива.
Это нужно для анализа изменений в проекте.

В других САПР программах (не буду уточнять в каких чтобы не
рекламировать других производителей) такое есть.
 

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Подскажите есть ли в AutoCAD API возможность прочитать
дату и время изменения примитива.
Нет. Эта информация в dwg-файле не хранится.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Ну тогда наверное придется через XData что-то придумывать.
Но это ж на каждый элемент нужно прицеплять событие изменения
 

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Как же это лучше технически сделать?
У кого есть какие идеи?

Может какою табличку придумать в Xrecord и
добавлять в нее Handle тех примитивов которые были изменены.

Имя Xrecord путь будет к примеру дата (ну это если я хочу контролировать изм. раз в сутки)
А записи XRecord это список Handle и в том числе для новых, которые были добавлены.
 
 

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Как же это лучше технически сделать?
У кого есть какие идеи?
Лучшая идея - не делать это. Любая реализация будет страдать недостатками.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
У Solid3d есть свойство NumChanges. Этого достаточно, чтоб отследить изменения в 3d-деталях.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
У Solid3d есть свойство NumChanges. Этого достаточно, чтоб отследить изменения в 3d-деталях.
1. Какое отношение количество изменений имеет к дате/времени изменения?
2. А если история редактирования 3DSOLID сброшена?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
1. К дате - никакого отношения. А к задаче отслеживания модификаций чертежа - самое непосредственное. И да, условия задачи придется менять, увы.
2. История не влияет, счетчик нарастает в любом случае

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
У Solid3d есть свойство NumChanges
Так и нет солидов в проектах. Обычные элементы.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
1. К дате - никакого отношения.
Ну в принципе счетчик это тоже способ отследить изменения (что мне собственно и нужно).
Потому как дату на компе можно изменить и тогда будут искажения.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну в принципе счетчик это тоже способ отследить изменения (что мне собственно и нужно).
У объектов/примитивов AutoCAD такого счетчика нет (кроме Solid3d, Region, Body).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Советую пойти в обход. Например, сравнивать две версии чертежа. И это кстати уже штатная функция Автокада. Точно нужен свой велосипед?

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Как же это лучше технически сделать?
У кого есть какие идеи?

Может какою табличку придумать в Xrecord и
добавлять в нее Handle тех примитивов которые были изменены.

Все конечно зависит от задачи и чертежей.
Но я бы не стал все пихать в dwg. Большие файлы и так страдают от ошибок и лишней информации.
Лучше выделить внешний файл, нужного формата, например xml.
Если что-то не сработает, просто отключаешь режим протоколирования, и dwg не испорчены.


Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Но я бы не стал все пихать в dwg. Большие файлы и так страдают от ошибок и лишней информации.
Лучше выделить внешний файл, нужного формата, например xml.
Если что-то не сработает, просто отключаешь режим протоколирования, и dwg не испорчены.
Интересный вариант! Для второстепенных данных, наверное, годится. Но если данные важные и их наличие критично - лучше, всё же, в чертеже хранить. Так есть гарантия, что даже перемещённый-пересланный файл чертежа не потеряет эти данные.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun

Присылают сводный план сетей где несколько стен тысяч примитивов
(да еще к тому же безобразно собранный от разных проектных организаций.
Если лепить какой-то свой плагин, то его же не поставить
в каждую же фирму от которой я получаю файлы.

Идея такая.
Сначала суть задачи чуть более подробно.
Мне нужно знать подвинули трубу или колодец или еще какой либо элемент на плане и не важно
какая была дата и версии файла.
Для меня важен только один критерий -  изменение геометрического положения объекта.
Если это отрезок - то нужно сверить две точки
Если это дуга то параметры геометрии по дуге,
ну и т. д. у каждой фигуры своя геометрия.

Я вот что думаю.
Может просто наложить графику из
двух версий файлов прогнать _OVERKILL

Но проблема в том что _OVERKILL оставляет среди дублированных объектов одну копию.
А мне желательно чтобы эта команда удалила все дублированные объекты.
И тогда у меня останется набор различающихся объектов.
И я пойму объем изменений в файле плана.

Может есть что-то коме _OVERKILL

DOUBLEKILL что-то вроде этого.