Сообщество программистов 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 массива, и потом сравнивал в циклах между собой, и забил все в таблицу
 Всем спасибо за наводки)