Как получить коллекцию блоков по имени?

Автор Тема: Как получить коллекцию блоков по имени?  (Прочитано 8979 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 0
Возникли вопросы:
Как при выборе блоков по имени учесть ещё два фактора:
1. Блок выделен (обычное выделение)
2. Находится на определенном слое
3. Хранить получаемые блоки в массиве - верно?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
1. Блок выделен (обычное выделение)
Предварительный выбор? Тогда Editor.SelectImplied()  - у команды должен быть установлен флаг CommandFlags.UsePickSet иначе при запуске команды предварительный набор сбрасывается.
2. Находится на определенном слое
Фильтровать по DXF-коду 8 - имя слоя.
3. Хранить получаемые блоки в массиве - верно?
Я предпочитаю хранить их ObjectId.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 0
Предварительный выбор? Тогда Editor.SelectImplied()  - у команды должен быть установлен флаг CommandFlags.UsePickSet иначе при запуске команды предварительный набор сбрасывается.
не понимаю что значит предварительный выбор...
просто на чертеже всего много и цепи, линии и пр. могут быть совсем из разных "участков". я хочу выбрать и применять команды только к выделенному, те чтобы команда составления графа или нумерации блоков работала только с выделенными блоками и полилиниями.
посмотрел и нашел вот такой класс - Autodesk.AutoCAD.EditorInput.SelectionSet и у этого класса методы GetObjectIds  и  GetEnumerator
возник вопрос:
а между командами результаты будут сохраняться и так, чтобы из следующей команды данные были доступны, например, я отключаю все слои, кроме того, на котором расположены блоки, выделяю  то, с чем хочу работать, выполняю команду NumberBlocks и блоки пронумерованы (кстати, я так и не понял можно ли вызывать команду с параметрами? типа NumberBlocks 1 2 3), затем я выключаю слой с блоками и включаю слой с полилиниями - "связями", выделяю нужный мне участок и выполняю команду GetLinks и получаю все связи, затем (полагаю, что данные с предыдущих команд сохранились) строю граф, на основе массива или списка устройств и связей, выполняю расчет и оформляю в виде таблицы.  так можно ведь?

Я предпочитаю хранить их ObjectId.
SelectionSet.GetObjectIds

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
не понимаю что значит предварительный выбор...
А я не понимаю что такое "выделенное".
я хочу выбрать и применять команды только к выделенному
Научись пользоваться терминами AutoCAD. Те объекты чертежа, которые ты выделил до запуска какой-либо команды - это и есть предварительный выбор (PickFirst)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
а между командами результаты будут сохраняться и так, чтобы из следующей команды данные были доступны
Если сохранишь - сохранятся, если нет - не сохранятся.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 0
Если сохранишь - сохранятся, если нет - не сохранятся.
куда сохранять то?
я понимаю как что-то сохранить в БД, но в данном случае как это сохраняется?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
куда сохранять то?
Куда хочешь - туда и сохраняешь. Тут главное понять что именно ты хочешь сохранить. Пока же это всё полная абстракция.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 0
Куда хочешь - туда и сохраняешь. Тут главное понять что именно ты хочешь сохранить. Пока же это всё полная абстракция.
а если я хочу сохранить  массив или список ссылок на блоки или полилинии, те сначала выделяю блоки, считываю, потом выделяю полилинии считываю и потом запускаю команду построения графа.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Куда хочешь - туда и сохраняешь. Тут главное понять что именно ты хочешь сохранить. Пока же это всё полная абстракция.
а если я хочу сохранить  массив или список ссылок на блоки или полилинии, те сначала выделяю блоки, считываю, потом выделяю полилинии считываю и потом запускаю команду построения графа.
Во-первых, это всё можно сделать в одной команде - так что сохранять ничего не понадобится.
Во-вторых, массив ObjectId выбранных объектов можно сохранить в глобальной переменной.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение