Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: solandrew от 13-04-2021, 11:39:30
-
Всем привет! Столкнулся с такой проблемой - хочу создать таблицу блоков, но одни и те же блоки могут лежать на разных слоях своего назначения. Есть блок с определенным именем, хочу записать сумму таких блоков на каждом слое и записать их по столбцам в таблицу. Кто то может помочь с таким, или сказать в какую сторону копать и где искать решение подобной проблемы?
таблица типа - ведомость дорожных знаков, знак расположен на стойке, опоре итд, расположение его привязано к слою
-
Все можно сделать, но зачем? Чем не устраивают готовые решения: Извлечение данных, Команда Count из AutoCAD 2022 или мой плагин AVC_DataTable https://sites.google.com/site/avcprg/datatable (https://sites.google.com/site/avcprg/datatable)
-
Все можно сделать, но зачем?
Да почему бы и нет) Первое - учусь, самому все интересно. Второе - делаю не для себя, а для коллег, которые не все умеют пользоваться даже стандартным извлечением данных
Команду Count увидел, интересная вещь
Про плагин AVC_DataTable не знал, поизучаю еще его)
-
Если есть конкретная проблема с API - тогда напишите какая именно. А так у вас общая постановка задачи и более ничего. Это больше подходит для раздела "программирование на заказ". Решение задачи в целом очевидно: перебрать все BlockRefence в модели или среди выбранных объектов, составить список имен/слоев/количества, Составить таблицу, вывести в буфер/Excel/таблицу AutoCAD.
-
Если есть конкретная проблема с API - тогда напишите какая именно. А так у вас общая постановка задачи и более ничего. Это больше подходит для раздела "программирование на заказ". Решение задачи в целом очевидно: перебрать все BlockRefence в модели или среди выбранных объектов, составить список имен/слоев/количества, Составить таблицу, вывести в буфер/Excel/таблицу AutoCAD.
В том и дело, перебрать блоки и записать их в таблицу не проблема, Каким методом вывести слой блока - тоже ясно, а как разделить их по типу - Знак 1.1 - На опоре - 2шт, на консоли - 3 шт итд и записать построчно в таблицу, не совсем понимаю, потому что в List<BlockReference> добавляются уже блоки с конкретных слоев через TypedValue. Потому и написал сюда, надеясь на подсказку какую)
-
Не вижу проблемы. Создайте структуру Блок/Слой/Количество и считайте сколько их у вас разных
-
Если вам перекрестная (транспонированная) таблица нужна на выходе (слои-столбцы, блоки-строки), то можно сразу в двухмерный массив количество записывать или массив массивов использовать. Все это не имеет отношения к API AutoCAD, это азы программирования.
-
Спасибо, попробую в эту сторону копать) Понимаю что азы, но совсем недавно начал этим заниматься
-
List<BlockReference>
Лучше никогда не храните и не передавайте в другие методы объекты DBObject, в том числе BlockReference. Вам тут не нужен список блоков, а нужны массивы или словари строк (имена блоков и слоев). Или лучше свои структуры с полями-строками.
-
Судя по поставленной задаче я бы делал с помощью LINQ через Group. А потом с группами делал то, что мне надо.
-
я бы делал с помощью LINQ
Только если хорошо понимать что такое отложенный запрос LINQ и уметь контролировать это. А то автор будет потом с удивлением наблюдать, как Автокад фатально крашится из-за того, что объекты коллекций, к которым он обращается, уже давно закрыты.
-
я бы делал с помощью LINQ
Только если хорошо понимать что такое отложенный запрос LINQ и уметь контролировать это. А то автор будет потом с удивлением наблюдать, как Автокад фатально крашится из-за того, что объекты коллекций, к которым он обращается, уже давно закрыты.
Да пару раз упадёт, а потом автор сам поймёт механику работы запросов :)
-
Разобрался, наконец-то дошли руки на той неделе. Сделал через 2 массива, и потом сравнивал в циклах между собой, и забил все в таблицу
Всем спасибо за наводки)