23/03/2017
Определение внешних ссылок, требующих обновления
Вопрос: Как определить, что в чертеже есть внешние ссылки, которые требуют обновления?
Ответ: Это возможно только в том случае, когда системная переменная XREFNOTIFY отлична от 0 (в противном случае AutoCAD не отслеживает изменение внешних ссылок и не уведомляет об изменениях).
Для получения информации об изменившихся внешних ссылках следует пробежаться по графу внешних ссылок и найти те, статус (XrefNotificationStatus) которых равен ResolvedUpdateAvailable
Код может выглядеть так:
Код - C#: [Выделить]
- public Editor ed;
- [CommandMethod("CheckNeedReload")]
- public void CheckNeedReload()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- if (doc == null) return;
- ed = doc.Editor;
- Database db = doc.Database;
- XrefGraph xg = db.GetHostDwgXrefGraph(true);
- CheckNeedReloadNode(xg.RootNode);
- }
- public void CheckNeedReloadNode(GraphNode root)
- {
- for (int o = 0; o < root.NumOut; o++)
- {
- XrefGraphNode child = root.Out(o) as XrefGraphNode;
- if (child != null)
- {
- ed.WriteMessage("\n{0} -- {1}", child.Database.Filename, child.XrefNotificationStatus);
- CheckNeedReloadNode(child);
- }
- }
- }
Ну и результат её работы:
Автор: Александр Ривилис
Отредактировано 27.03.2017 в 00:59:14
Обсуждение: http://adn-cis.org/forum/index.php?topic=7705
Опубликовано 23.03.2017Отредактировано 27.03.2017 в 00:59:14