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-ый способ гарантированно вызвать фатал :) Без сохранений и предупреждений.

Навигация

[0] Главная страница сообщений

Перейти к полной версии