Таблица блоков автокад

Автор Тема: Таблица блоков автокад  (Прочитано 9335 раз)

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

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

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Таблица блоков автокад
« : 13-04-2021, 11:39:30 »
Всем привет! Столкнулся с такой проблемой - хочу создать таблицу блоков, но одни и те же блоки могут лежать на разных слоях своего назначения. Есть блок с определенным именем, хочу записать сумму таких блоков на каждом слое и записать их по столбцам в таблицу. Кто то может помочь с таким, или сказать в какую сторону копать и где искать решение подобной проблемы?

таблица типа - ведомость дорожных знаков, знак расположен на стойке, опоре итд, расположение его привязано к слою

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 167
    • Мои плагины к Автокаду
Re: Таблица блоков автокад
« Ответ #1 : 13-04-2021, 11:43:52 »
Все можно сделать, но зачем? Чем не устраивают готовые решения: Извлечение данных, Команда Count из AutoCAD 2022 или мой плагин AVC_DataTable https://sites.google.com/site/avcprg/datatable

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

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Re: Таблица блоков автокад
« Ответ #2 : 13-04-2021, 11:51:54 »
Все можно сделать, но зачем?
Да почему бы и нет) Первое - учусь, самому все интересно. Второе - делаю не для себя, а для коллег, которые не все умеют пользоваться даже стандартным извлечением данных
Команду Count увидел, интересная вещь

Про плагин AVC_DataTable не знал, поизучаю еще его)

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 167
    • Мои плагины к Автокаду
Re: Таблица блоков автокад
« Ответ #3 : 13-04-2021, 12:02:44 »
Если есть конкретная проблема с API - тогда напишите какая именно. А так у вас общая постановка задачи и более ничего. Это больше подходит для раздела "программирование на заказ". Решение задачи в целом очевидно: перебрать все BlockRefence в модели или среди выбранных объектов, составить список имен/слоев/количества, Составить таблицу, вывести в буфер/Excel/таблицу AutoCAD.

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

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Re: Таблица блоков автокад
« Ответ #4 : 13-04-2021, 13:22:23 »
Если есть конкретная проблема с API - тогда напишите какая именно. А так у вас общая постановка задачи и более ничего. Это больше подходит для раздела "программирование на заказ". Решение задачи в целом очевидно: перебрать все BlockRefence в модели или среди выбранных объектов, составить список имен/слоев/количества, Составить таблицу, вывести в буфер/Excel/таблицу AutoCAD.

В том и дело, перебрать блоки и записать их в таблицу не проблема, Каким методом вывести слой блока - тоже ясно, а как разделить их по типу - Знак 1.1 - На опоре - 2шт, на консоли - 3 шт итд и записать построчно в таблицу, не совсем понимаю, потому что в List<BlockReference> добавляются уже блоки с конкретных слоев через TypedValue. Потому и написал сюда, надеясь на подсказку какую)

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 167
    • Мои плагины к Автокаду
Re: Таблица блоков автокад
« Ответ #5 : 13-04-2021, 13:36:22 »
Не вижу проблемы. Создайте структуру Блок/Слой/Количество и считайте сколько их у вас разных

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 167
    • Мои плагины к Автокаду
Re: Таблица блоков автокад
« Ответ #6 : 13-04-2021, 13:41:20 »
Если вам перекрестная (транспонированная) таблица нужна на выходе (слои-столбцы, блоки-строки), то можно сразу в двухмерный массив количество записывать или массив массивов использовать. Все это не имеет отношения к API AutoCAD, это азы программирования.

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

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Re: Таблица блоков автокад
« Ответ #7 : 13-04-2021, 13:42:39 »
Спасибо, попробую в эту сторону копать) Понимаю что азы, но совсем недавно начал этим заниматься

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 167
    • Мои плагины к Автокаду
Re: Таблица блоков автокад
« Ответ #8 : 13-04-2021, 13:44:56 »
List<BlockReference>
Лучше никогда не храните и не передавайте в другие методы объекты DBObject, в том числе BlockReference. Вам тут не нужен список блоков, а нужны массивы или словари строк (имена блоков и слоев). Или лучше свои структуры с полями-строками.

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Таблица блоков автокад
« Ответ #9 : 13-04-2021, 14:57:47 »
Судя по поставленной задаче я бы делал с помощью LINQ через Group. А потом с группами делал то, что мне надо.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Re: Таблица блоков автокад
« Ответ #10 : 13-04-2021, 15:43:31 »
я бы делал с помощью LINQ
Только если хорошо понимать что такое отложенный запрос LINQ и уметь контролировать это. А то автор будет потом с удивлением наблюдать, как Автокад фатально крашится из-за того, что объекты коллекций, к которым он обращается, уже давно закрыты.

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Таблица блоков автокад
« Ответ #11 : 13-04-2021, 19:02:49 »
я бы делал с помощью LINQ
Только если хорошо понимать что такое отложенный запрос LINQ и уметь контролировать это. А то автор будет потом с удивлением наблюдать, как Автокад фатально крашится из-за того, что объекты коллекций, к которым он обращается, уже давно закрыты.
Да пару раз упадёт, а потом автор сам поймёт механику работы запросов  :)

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

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Re: Таблица блоков автокад
« Ответ #12 : 04-05-2021, 08:56:50 »
Разобрался, наконец-то дошли руки на той неделе. Сделал через 2 массива, и потом сравнивал в циклах между собой, и забил все в таблицу
Всем спасибо за наводки)