Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 25-12-2019, 11:18:51
-
Подскажите есть ли в AutoCAD API возможность прочитать
дату и время изменения примитива.
Это нужно для анализа изменений в проекте.
В других САПР программах (не буду уточнять в каких чтобы не
рекламировать других производителей) такое есть.
-
Подскажите есть ли в AutoCAD API возможность прочитать
дату и время изменения примитива.
Нет. Эта информация в dwg-файле не хранится.
-
Ну тогда наверное придется через XData что-то придумывать.
Но это ж на каждый элемент нужно прицеплять событие изменения
-
Как же это лучше технически сделать?
У кого есть какие идеи?
Может какою табличку придумать в Xrecord и
добавлять в нее Handle тех примитивов которые были изменены.
Имя Xrecord путь будет к примеру дата (ну это если я хочу контролировать изм. раз в сутки)
А записи XRecord это список Handle и в том числе для новых, которые были добавлены.
-
Как же это лучше технически сделать?
У кого есть какие идеи?
Лучшая идея - не делать это. Любая реализация будет страдать недостатками.
-
У Solid3d есть свойство NumChanges. Этого достаточно, чтоб отследить изменения в 3d-деталях.
-
У Solid3d есть свойство NumChanges. Этого достаточно, чтоб отследить изменения в 3d-деталях.
1. Какое отношение количество изменений имеет к дате/времени изменения?
2. А если история редактирования 3DSOLID сброшена?
-
1. К дате - никакого отношения. А к задаче отслеживания модификаций чертежа - самое непосредственное. И да, условия задачи придется менять, увы.
2. История не влияет, счетчик нарастает в любом случае
-
У Solid3d есть свойство NumChanges
Так и нет солидов в проектах. Обычные элементы.
-
1. К дате - никакого отношения.
Ну в принципе счетчик это тоже способ отследить изменения (что мне собственно и нужно).
Потому как дату на компе можно изменить и тогда будут искажения.
-
Ну в принципе счетчик это тоже способ отследить изменения (что мне собственно и нужно).
У объектов/примитивов AutoCAD такого счетчика нет (кроме Solid3d, Region, Body).
-
Советую пойти в обход. Например, сравнивать две версии чертежа. И это кстати уже штатная функция Автокада. Точно нужен свой велосипед?
-
Как же это лучше технически сделать?
У кого есть какие идеи?
Может какою табличку придумать в Xrecord и
добавлять в нее Handle тех примитивов которые были изменены.
Все конечно зависит от задачи и чертежей.
Но я бы не стал все пихать в dwg. Большие файлы и так страдают от ошибок и лишней информации.
Лучше выделить внешний файл, нужного формата, например xml.
Если что-то не сработает, просто отключаешь режим протоколирования, и dwg не испорчены.
-
Но я бы не стал все пихать в dwg. Большие файлы и так страдают от ошибок и лишней информации.
Лучше выделить внешний файл, нужного формата, например xml.
Если что-то не сработает, просто отключаешь режим протоколирования, и dwg не испорчены.
Интересный вариант! Для второстепенных данных, наверное, годится. Но если данные важные и их наличие критично - лучше, всё же, в чертеже хранить. Так есть гарантия, что даже перемещённый-пересланный файл чертежа не потеряет эти данные.
-
Присылают сводный план сетей где несколько стен тысяч примитивов
(да еще к тому же безобразно собранный от разных проектных организаций.
Если лепить какой-то свой плагин, то его же не поставить
в каждую же фирму от которой я получаю файлы.
Идея такая.
Сначала суть задачи чуть более подробно.
Мне нужно знать подвинули трубу или колодец или еще какой либо элемент на плане и не важно
какая была дата и версии файла.
Для меня важен только один критерий - изменение геометрического положения объекта.
Если это отрезок - то нужно сверить две точки
Если это дуга то параметры геометрии по дуге,
ну и т. д. у каждой фигуры своя геометрия.
Я вот что думаю.
Может просто наложить графику из
двух версий файлов прогнать _OVERKILL
Но проблема в том что _OVERKILL оставляет среди дублированных объектов одну копию.
А мне желательно чтобы эта команда удалила все дублированные объекты.
И тогда у меня останется набор различающихся объектов.
И я пойму объем изменений в файле плана.
Может есть что-то коме _OVERKILL
DOUBLEKILL что-то вроде этого.
-
Может есть что-то коме _OVERKILL
Дык:
Советую пойти в обход. Например, сравнивать две версии чертежа. И это кстати уже штатная функция Автокада. Точно нужен свой велосипед?
Описание: http://help.autodesk.com/view/ACD/2019/RUS/?guid=GUID-628460AC-6F4C-4ABF-B2D3-85D9D813891A
-
Тем более не понимаю чем не устраивает _Compare
-
Интересный вариант! Для второстепенных данных, наверное, годится. Но если данные важные и их наличие критично - лучше, всё же, в чертеже хранить. Так есть гарантия, что даже перемещённый-пересланный файл чертежа не потеряет эти данные.
Александр дал как всегда точный ответ.
Лучшая идея - не делать это. Любая реализация будет страдать недостатками.
На мой взгляд эти данные не критичны и не важны, в отличие от самих примитивов.
Гарантии сохранения также нет. Т.к. примитивы разбивают, копируют в новый чертеж, файлы перезаписывают с помощью "save as", сохраняют с помощью "пблок" и "-exporttoautocad" и т.д. и этот процесс неконтролируемый. Пока система будет отлажена, архив будет замусорен xrecord, xdata и т.д.
Скорость обработки больших файлов неизбежно пострадает.
-
Подскажите есть ли в AutoCAD API возможность прочитать
дату и время изменения примитива.
Мне нужно знать подвинули трубу или колодец или еще какой либо элемент на плане и не важно
какая была дата и версии файла.
А задача то кардинально изменилась. :-)