Подсчет объектов внутри блоков чертежа

В autocad есть возможность извлекать данные(интересуют длины, площади, слой и значение гиперссылки) из объектов внутри блоков. Единственное нет возможности группировать строки с одинаковым слоем и ссылкой и разной длиной(приходится доделывать через excel). В Nanocad есть возможность группировать и суммировать длину группы, но искать данные по объектам внутри блоков не получится?

Извлекать данные из блоков в nanoCAD тоже можно! НО! - это должны быть блоки с атрибутами, созданными непосредственно в nanoCAD. Блоки AutoCAD здесь “не прокатят”, и даже не вздумайте копировать что-то из AutoCAD в nanoCAD при отрисовке блоков (кроме отрезков и полилиний).

Извлекать данные из блоков в nanoCAD тоже можно! НО! - это должны быть блоки с атрибутами, созданными непосредственно в nanoCAD. Блоки AutoCAD здесь “не прокатят”, и даже не вздумайте копировать что-то из AutoCAD в nanoCAD при отрисовке блоков (кроме отрезков и полилиний).

У меня для теплотехнического расчета сделаны блоки для каждого помещения, блоку присвоено имя номера помещения(блок просто сохраняется под новым именем через сохранить как). В каждом блоке на соответствующих слоях отрисованы полилинией наружные стены, внутренние(опционально) и заливка по плите. В блоке может быть как одна так и несколько полилиний с одинаковым слоем, как и несколько заливок(зоны плиты по грунту). Через простенький скрипт значения имен блоков(номера помещений) записываются во все объекты внутри блока в гиперссылку. После чего можно сделать извлечение данных по объектам внутри блоков и получится таблица где для каждого помещения получится перечень всех длин стен, с маркировкой типа стен и площади перекрытий с маркировкой типа перекрытия. Атрибуты блока при этом вообще не используются. Как я понимаю в Нанокаде нет возможности посчитать примитивы внутри блока не расчленяя его?

ну и пишите в атрибуты блоков эти ваши данные

В каждом блоке на соответствующих слоях отрисованы полилинией наружные стены, внутренние(опционально) и заливка по плите. В блоке может быть как одна так и несколько полилиний с одинаковым слоем, как и несколько заливок(зоны плиты по грунту). Через простенький скрипт значения имен блоков(номера помещений)

Не вижу смысла в гиперссылке. Вероятно это куда-то дальше пойдет? В таком случае просто будет дублирование информации.

Прототип можно прочитать тут

https://rutube.ru/video/cf5ad96c2614304f358c8da1b4af7c0e/

ну и пишите в атрибуты блоков эти ваши данные

Не вижу смысла в гиперссылке. Вероятно это куда-то дальше пойдет? В таком случае просто будет дублирование информации.

Прототип можно прочитать тут

https://rutube.ru/video/cf5ad96c2614304f358c8da1b4af7c0e/

Атрибуты хорошо работают когда количество элементов в блоке строго определено. У меня в блоке может быть 1, а может быть 3 линии одного типа и мне нужно получить сумму их длин. Если я пропишу атрибут с их суммой и удалю две линии у меня будет ошибка. А если я потом добавлю две линии мне нужно будет заново редактировать атрибут. В моем же случае мне никак не требуется отслеживать формулы в атрибутах, я могу добавить 1 или 10 лини одного типа(слоя) и они сразу попадут в таблицу. Гиперссылка мне нужна только чтобы получить столбец в таблице с именем блока, т.к. при извлечении данных по объектам нельзя получить информацию о том к каком блоку они относятся. Т.к. гиперссылка заполняется скриптом мне не нужно отслеживать вручную какой элемент к какому помещению относится

И все равно непонятно, зачем все это хозяйство заключать в блок. Все-таки, использование блока предполагает его возможное повторное использование. А в такой постановке задачи имеет смысл только его однократная вставка. Не совсем понятно, зачем нужно группу элементов объединять в блок. Разве что, только для того, чтоб одним тычком выделять всю группу.

Если скрипт в процессе разработки, то более целесообразным мне видится использовать некий блок с условным наименованием “номер комнаты”, в котором будет набор фиксированных атрибутов. А элементам, относящимся к этому помещению, в область РД скриптом прописать метку этого блока (можно и прямо наименование комнаты, но лучше связь через метку, т.к. это позволит на лету без всяких дополнительных скриптов просто поменять название комнаты при необходимости, не разрушая связи). А далее любая обработка группы может как выводиться самостоятельно в поля таблиц, так и в виде присвоения значений атрибутам помещения.

И все равно непонятно, зачем все это хозяйство заключать в блок. Все-таки, использование блока предполагает его возможное повторное использование. А в такой постановке задачи имеет смысл только его однократная вставка. Не совсем понятно, зачем нужно группу элементов объединять в блок. Разве что, только для того, чтоб одним тычком выделять всю группу.

Если скрипт в процессе разработки, то более целесообразным мне видится использовать некий блок с условным наименованием “номер комнаты”, в котором будет набор фиксированных атрибутов. А элементам, относящимся к этому помещению, в область РД скриптом прописать метку этого блока (можно и прямо наименование комнаты, но лучше связь через метку, т.к. это позволит на лету без всяких дополнительных скриптов просто поменять название комнаты при необходимости, не разрушая связи). А далее любая обработка группы может как выводиться самостоятельно в поля таблиц, так и в виде присвоения значений атрибутам помещения.

Нет скрипта в разработке. Мне ChatGPT сделал простенький код на VBA в пару строк, который проходит по выделенным блокам и прописывает имя блока в гиперссылку.

Набор фиксированных атрибутов подразумевает также и набор фиксированных элементов. С атрибутами проблема, в том что в одном блоке я должен получить сумму двух полилиний одного типа. Во втором блоке я должен получить сумму трех полилиний одного типа и длину полилинии другого типа и число полилиний рандомно меняется. Идя с блоками в том, что когда я редактирую блок мне не надо себя проверять, стена и площадь будет четко привязана к номеру помещения, а тип объекта четко определен слоем. В общем в Автокаде этот вопрос легко решается. Дальше усложнять задачу я не планирую. Плюс я могу сделать нужный мне расчет и средствами Nanocad, но для этого мне нужно будет откопировать блоки и их взорвать. Что не очень удобно в случае если потребуется быстро, что-то добавить отредактировать и т.д.

В autocad есть возможность извлекать данные(интересуют длины, площади, слой и значение гиперссылки) из объектов внутри блоков. Единственное нет возможности группировать строки с одинаковым слоем и ссылкой и разной длиной(приходится доделывать через excel). В Nanocad есть возможность группировать и суммировать длину группы, но искать данные по объектам внутри блоков не получится?

Здравствуйте!

Не могли бы вы выложить пример ваших блоков?

На данный момент nanoCAD не умеет извлекать данные объектов, входящих в состав блоков.

https://forum.nanocad.ru/discussion/504/podschet-obektov-vnutri-blokov-chertezha

Здравствуйте!

Не могли бы вы выложить пример ваших блоков?

На данный момент nanoCAD не умеет извлекать данные объектов, входящих в состав блоков.

Пример.rar (66,6 КБ)

В верхней части расчет через средства autocad. Внизу таблица СПДС

удалил лирику