ADN Club > AutoCAD .NET API
Почему не удалить гиперссылки
(1/1)
Борис_С:
Добрый день!
Написал такой метод для вставки ссылки в объект:
--- Код - C# [Выбрать] ---public void Set_HyperLink(FCheckRefDialog.CDocumentsInfo docInf) //, string url = "") { try { Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager. MdiActiveDocument; Database acCurDb = acDoc.Database; Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager. MdiActiveDocument.Editor; using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { Entity en = acTrans.GetObject(docInf.ObjId, OpenMode.ForWrite) as Entity; HyperLink link = new HyperLink(); link.Description = docInf.designation; link.Name = docInf.url; if (en.Hyperlinks.Count != 0) en.Hyperlinks.Clear(); en.Hyperlinks.Add(link); acTrans.Commit(); } } catch (System.Exception e) { Editor acDocEd = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor; acDocEd.WriteMessage(String.Format("Ошибка. {0}{1}" + Environment.NewLine, e.Message, e.StackTrace)); } } Если в объекте нет гиперссылок, все работает нормально. Если есть, на операторе en.Hyperlinks.Clear(); программа вылетает.
Где я не прав?
Спасибо.
Александр Ривилис:
--- Цитата: Борис_С от 17-12-2020, 16:53:13 ---программа вылетает.
--- Конец цитаты ---
Вылетает как? Если исключение, то какое?
Александр Ривилис:
Нагуглил, что такой баг имеет место быть. Вместо Clear() нужно использовать такой код:
--- Код - C# [Выбрать] ---while(en.Hyperlinks.Count != 0) en.Hyperlinks.RemoveAt(0);
Борис_С:
Спасибо. Эта ошибка (en.Hyperlinks.Clear()) случилась только один раз. Больше не повторилась, но буду пользоваться безопасным кодом.
avc:
Нарвался на ту же проблему. Hyperlinks.Clear стабильно кладет AutoCAD 2020, 2021, 2022. Другие версии не проверял.
Ура, товарищи! У нас есть 100501-ый способ гарантированно вызвать фатал :) Без сохранений и предупреждений.
Навигация
Перейти к полной версии