Выбор мультивыносок в активном слое и сортировка.

Автор Тема: Выбор мультивыносок в активном слое и сортировка.  (Прочитано 3132 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MDAАвтор темы

  • ADN OPEN
  • Сообщений: 20
  • Карма: 0
Здравствуйте уважаемые коллеги!

Подскажите пожалуйста как сделать выбор мультивыносок в активном слое или может где-то уже данная тема озвучивалась и есть ссылка. Я на форуме поиск задавал, но ничего не нашел.
Заранее спасибо.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Что есть выбор мультивыносок? Чтоб пользователь мог выбрать только мультивыноски на активном слое или как их выбрать программно?

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 809
  • Карма: 166
    • Мои плагины к Автокаду
Задача поставлена невнятно. Если надо найти все выноски с заданного слоя, то надо открыть блок модели, перебрать в нем все объекты, найти мультивыноски и сравнить их слой с заданным.
Понятия "активного слоя" в Автокаде вроде как и нет.

Оффлайн MDAАвтор темы

  • ADN OPEN
  • Сообщений: 20
  • Карма: 0
Задача поставлена невнятно. Если надо найти все выноски с заданного слоя, то надо открыть блок модели, перебрать в нем все объекты, найти мультивыноски и сравнить их слой с заданным.
Понятия "активного слоя" в Автокаде вроде как и нет.

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

По поводу перебрать модель и сравнить выноски примерно понял. А в какую сторону копать не посоветуете?

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 809
  • Карма: 166
    • Мои плагины к Автокаду
Честно говоря, не понял вопроса. Как получить BlockTableRecord модели с помощью транзакции (или без)? Примеров - миллионы (почти во всех примерах это есть). Как выяснить тип объекта? Что именно вызывает проблему?

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 809
  • Карма: 166
    • Мои плагины к Автокаду
Код - 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();

Оффлайн MDAАвтор темы

  • ADN OPEN
  • Сообщений: 20
  • Карма: 0
Огромное спасибо!