Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: MDA от 23-01-2021, 12:29:07

Название: Выбор мультивыносок в активном слое и сортировка.
Отправлено: MDA от 23-01-2021, 12:29:07
Здравствуйте уважаемые коллеги!

Подскажите пожалуйста как сделать выбор мультивыносок в активном слое или может где-то уже данная тема озвучивалась и есть ссылка. Я на форуме поиск задавал, но ничего не нашел.
Заранее спасибо.
Название: Re: Выбор мультивыносок в активном слое и сортировка.
Отправлено: Дима_ от 23-01-2021, 12:38:10
Что есть выбор мультивыносок? Чтоб пользователь мог выбрать только мультивыноски на активном слое или как их выбрать программно?
Название: Re: Выбор мультивыносок в активном слое и сортировка.
Отправлено: avc от 23-01-2021, 12:46:46
Задача поставлена невнятно. Если надо найти все выноски с заданного слоя, то надо открыть блок модели, перебрать в нем все объекты, найти мультивыноски и сравнить их слой с заданным.
Понятия "активного слоя" в Автокаде вроде как и нет.
Название: Re: Выбор мультивыносок в активном слое и сортировка.
Отправлено: MDA от 23-01-2021, 13:07:38
Задача поставлена невнятно. Если надо найти все выноски с заданного слоя, то надо открыть блок модели, перебрать в нем все объекты, найти мультивыноски и сравнить их слой с заданным.
Понятия "активного слоя" в Автокаде вроде как и нет.

Возможно выразился действительно не верно.

По поводу перебрать модель и сравнить выноски примерно понял. А в какую сторону копать не посоветуете?
Название: Re: Выбор мультивыносок в активном слое и сортировка.
Отправлено: avc от 23-01-2021, 13:32:01
Честно говоря, не понял вопроса. Как получить BlockTableRecord модели с помощью транзакции (или без)? Примеров - миллионы (почти во всех примерах это есть). Как выяснить тип объекта? Что именно вызывает проблему?
Название: Re: Выбор мультивыносок в активном слое и сортировка.
Отправлено: avc от 23-01-2021, 13:38:59
Код - C# [Выбрать]
  1.       using Transaction tr = db.TransactionManager.StartTransaction();
  2.       BlockTableRecord btr = tr.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(db), OpenMode.ForRead) as BlockTableRecord;
  3.       foreach (ObjectId id in btr)
  4.         if (id.ObjectClass == RXObject.GetClass(typeof(MLeader)))
  5.         {
  6.           MLeader ml = tr.GetObject(id, OpenMode.ForRead) as MLeader;
  7.           if (ml.Layer == "нужный слой")
  8.           {
  9.              ..................
  10.           }
  11.        }
  12.       tr.Commit();
Название: Re: Выбор мультивыносок в активном слое и сортировка.
Отправлено: MDA от 23-01-2021, 14:28:00
Огромное спасибо!