Перейти к содержанию
  • записей
    9
  • комментариев
    18
  • просмотр
    1 201

Создания отчёта по объектам на чертеже с помощью таблиц нанокада.


dromandon

1 049 просмотров

Хочу написать гайд по отчётам таблиц, который будет понятен и нагляден.
Делаю это в первую очередь для коллег с которыми работаю, но, надеюсь, пригодиться и кому-то ещё.

 

0. Оговорка

Работаю в Нанокад СПДС 6.0

 

1. Задача

Поставим очень простую, но часто встречающуюся задачу - сложить длину объектов - в нашем случае надо будет узнать общую длину всех отрезков  в указанной области в определённом слое.

 

2. Начало работы.

Для удобства прикладываю файл, с которым буду работать

Отчёт по объектам.dwg

 

Первым делом вызовем таблицу (команды TABLE, ТАБЛИЦА image.png.dd6e4d10af46ccff736e841a691b2880.png) 

Теперь надо выбрать поле "Отчёт по выборке объектов"

image.png.0b416829357853fa1b42820a74840677.png

и нажать кнопку "Выбрать".

Появляется меню быстрого выбора. Тут немного остановимся.

image.png.9d3301404413f7ab2b0252eaaa695b6f.png

Давайте разберёмся как им правильно пользоваться в текущей ситуации.
Разбираемся в значках image.png.2b2ba5c0950f11a8ee478889e6e03731.png

image.png.1630faedaf340ae27bd846c7b6e40924.png - Поиск объектов во всём документе (Модель и листы)

image.png.962a144c4c1b801abeb3b0d37c84b5fc.png - Поиск объектов в текущем листе (либо модели)

image.png.2f8174bbc6a75ee378d16149420f7e84.png - Поиск в прямоугольнике

image.png.97fcdc10ab058b99589495f757366e52.png - Поиск в текущем наборе

image.png.c50b1996b19bad88b2a30c5c1bff850f.png - Указать на чертеже (сейчас серым)

image.png.03c846f7ea907f1795de1b49621027db.png - Загрузка шаблона

image.png.6a17aa14baa1b05dc177ce70fa8d74ed.png - Очистить список условий.

Первые два значка (image.png.1630faedaf340ae27bd846c7b6e40924.png и image.png.962a144c4c1b801abeb3b0d37c84b5fc.png ) в принципе вопросов не должны вызывать - при выборе параметров из меню ниже, поиск объектов будет производится во всём объектов (image.png.1630faedaf340ae27bd846c7b6e40924.png) либо в текущем листе/модели (image.png.962a144c4c1b801abeb3b0d37c84b5fc.png)


Что такое "Поиск в прямоугольнике" (image.png.2f8174bbc6a75ee378d16149420f7e84.png )? 

При выборе этой опции, будет производится поиск элементов только в указанной области. Область можно задать только одну при этом. При нажатии на кнопку у нас появится возможность задать прямоугольный участок в котором будут выбраны все объекты. Вроде бы удобно, но для первоначального создания отчёта по выборке объектов не рекомендую.
А не рекомендую вот почему - выбираем нашу область с отрезками и полилиниями и получаем следующую картину:

image.png.24c5053c650f7eed98da13b45e2f002f.png

Выбрались все наши элементы. А нам нужны только отрезки. Но вроде не велика беда, можно выбрать не нужные нам элементы (в данном случае полилинии) и, нажав на "+" убрать их из выборки выбрав строку "(Нет объекта)"

image.png.432e5431ef6d22da381dfe28e5d3261a.png

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

Конечно, мы можем просто нажать image.png.6a17aa14baa1b05dc177ce70fa8d74ed.png  и тем самым удалить все объекты из выбора, а после руками выбрать нужный, но это несколько лишних кликов и затраченное время на поиск нужных параметров из списка.

Поэтому для первоначального выбора объектов советую использовать image.png.97fcdc10ab058b99589495f757366e52.png - поиск в текущем наборе.

Эта опция позволяет выбрать конкретные объекты на чертеже.

Теперь, чтобы всё сработало корректно, выходим из создания отчёта (жмём esc), повторяем предыдущие шаги, только вместо выбора объекта с помощью image.png.2f8174bbc6a75ee378d16149420f7e84.png, выбираем image.png.97fcdc10ab058b99589495f757366e52.png .  Вас перекинет на чертёж с возможностью выбрать объекты.
Выбираем отрезок, но не любой, а сразу тот, который находится в слое "Надо сложить" (жёлтый). И вот почему:

image.png.0475d98735bf35d54e5db62b461c4839.png

Сейчас мы будем настраивать наш поиск. Мы сразу выбрали тип элемента который нам нужен, и поэтому сможем легко настроить наш поиск так, чтобы случайно не захватить другие элементы.

Первое - мы выбираем только отрезок - уже есть.

Второе - наш отрезок должен быть в определённом слое - добавляем условие - щёлкаем в столбце "Значение" напротив "Слой" и выбираем слой "Надо сложить":

image.png.12f52e42c59e416c1c4b54bd3e2234cd.png

В столбце "Условие" выбрался автоматически знак "равно" - само за себя говорящие условие)

В значение же выбора слоя из предложенных было всего одно - "Надо сложить" - это благодаря тому, что мы выбрали всего 1 объект. Если бы выбрали несколько объектов в разных слоях, то таких бы вариантов было бы несколько.

 

Фильтр настроили.
Теперь важный момент - после первоначальной настройки фильтра повторный выбор объектов с помощью  image.png.2f8174bbc6a75ee378d16149420f7e84.png иimage.png.97fcdc10ab058b99589495f757366e52.png уже не будет менять фильтр. 

Так же активируется команда image.png.c50b1996b19bad88b2a30c5c1bff850f.png - Указать на чертеже. 

Попробуем её нажать. 

Нас возвращает к модели и появляется возможность выбрать объекты. Выберем все элементы на нашем чертеже. Подтвердим выбор.

Получаем следующее окно:
image.png.66b9e9bf1ad231591287be332c922d15.png

 

Что произошло?

Мы выбрали все элементы на чертеже, но из-за настроек нашего фильтра в выборку попало лишь 5 отрезков - причём наш фильтр учтиво сообщает нам, то отрезков выбрали мы всего 7, но лишь 5 из них соответствуют нашему условию.

 

Теперь ещё интересней. Нажмём на image.png.2f8174bbc6a75ee378d16149420f7e84.png - Поиск в прямоугольнике. Выбираем так же все элементы на чертеже, только уже с помощью прямоугольника.

Видим ту же самую картину:

image.png.35f1328cd0c2927c8707b76085e76485.png

 

И теперь  при нажатие на image.png.c50b1996b19bad88b2a30c5c1bff850f.png у нас появляется возможность повторно выбрать область на чертеже.

Делаем вывод, что image.png.c50b1996b19bad88b2a30c5c1bff850f.png отвечает за повторный выбор элементов ранее указанным способом.

Но в чём же отличие между  image.png.2f8174bbc6a75ee378d16149420f7e84.png иimage.png.97fcdc10ab058b99589495f757366e52.png?

С помощью  image.png.2f8174bbc6a75ee378d16149420f7e84.png - мы выбираем не объекты, а область чертежа, в котором будем искать объекты.

С помощью image.png.97fcdc10ab058b99589495f757366e52.png - мы выбираем конкретные объекты, среди которых будем искать удовлетворяющие нашему фильтру объекты (простите за тавтологию :)) .

Когда удобнее что из этого использовать, узнаем дальше.

А теперь наконец-то жмём кнопку "ОК".

Получаем следующую картину:
image.png.91d3a717619be31141ac63a70f73c2e0.png
Меню с галочками - это свойства объекта, которые будут доступны в отчёте.

Вначале ставим галочку "Изменять свойства объектов из отчёт"

image.png.3cae82ba2abca8d5f2d60c5326cfbb9f.png

Далее жмём "Ни одного", чтобы снять выбор со всех свойств и выставляем галочку на свойстве "Длина (Length)", так как мы собираемся узнавать длину =)
Жмём "ОК" и вставляем полученную таблицу на чертёж. И сразу по двойному клику заходим в неё

 

3. Работа с отчётом.

Наш отчёт:
 nCad_x5AHHYk8qU.thumb.png.0cf5a1d67648a25ad3a1a5f3a9273a32.png

Строка "Шаблон отчёта" позволяет вводить формулы, которые будут применяться ко всем элементам отчёта.

Сейчас там у нас строка "=Object.Length", которую можно прочесть так - мы выводим свойства объекта "Object", которое называется "Length"

Т.е. для всех наших 5-ти отрезков мы получили по строчке от каждого, содержащего его длину.

 

Спойлер

Возвращаясь назад к галочке напротив "Изменять свойства объектов из отчёт".

Если бы мы ей не поставили, то получили в ячейках выражение следующего вида:

=Iff(Exist(Object.Length);Object.Length;"")

Кто знаком с формулами, сразу поймёт суть этого выражения. Это выражение читается как "Если в нашем объекте существует параметр Length, то вывести его, иначе пустая строка".

Зачем нанокад создаёт такую сложную строку, вместо обычной =Object.Length? Как раз-таки чтобы мы не могли из таблицы изменить параметр "Length".

Дело вот в чём - некоторые параметры объектов, если в шаблоне они просто выведены не в формуле, можно изменять прямо из таблицы. Я в конце статьи ещё об этом скажу подробнее.

 

Если хотите узнать какому отрезку принадлежит то или иное значение, то отведите окно таблицы чуть в сторону, чтобы было видно наш чертёж и тыкните в интересующую вас ячейку:

image.thumb.png.1710d5f5a06aa58acd64c1d313991f0e.png

Видим, что зелёным подсветился отрезок, которому соответствует выбранная ячейка отчёта

Если тыкнуть в зелёное поле шаблона отчёта, то подсветятся все элементы, которые участвуют в отчёте.

Хорошо, у нас есть отчёт, что с ним делать?
Нам надо узнать сумму всех отрезков. Самый простой способ - взять калькулятор и сложить то, что мы видим на экране.
А если отрезков много?
Жмём на надпись "Шаблон отчёта" ЛЕВОЙ кнопкой мыши и выбираем "Итог отчёта"
image.png.c1224d63741c5814f48924b35f442d27.png

Появляется соответствующая строка в конце нашего отчёта.

Правой кнопкой мыши жмём по ней и выбираем "Сумма"

image.png.ebc5b67d0c8656d6bf36521712699ab7.png

Вуаля. Наши длины просуммировались.

 

4. Наглядная разница в выборах image.png.2f8174bbc6a75ee378d16149420f7e84.png иimage.png.97fcdc10ab058b99589495f757366e52.png

Нажмём на кнопку image.png.02a0b94891ea530872cbf3b05ab6742a.png - выбрать исходные объекты. Откроется нам уже знакомый фильтр объектов.

Увидим вверху, что у нас сейчас выбран image.png.2f8174bbc6a75ee378d16149420f7e84.png  - Поиск в прямоугольнике

Повторим наш выбор кнопкой image.png.c50b1996b19bad88b2a30c5c1bff850f.png  и выберем область аккурат по замкнутой полилинии в слое 0 на чертеже:

image.png.ad289f85c649a4fa9b585b9d87bc2b00.png

 Жмём "ОК", закрываем таблицу

Теперь давайте скопируем один из отрезкой внутри нашей выбранной области

3eBFunDJm4.thumb.gif.98b9d95e4fa28e9c3bf76f88dd59d292.gif

 

Теперь  зайдём в нашу таблицу. В моей версии отчёт придётся обновить нажав на кнопку обновить вверху окошка, либо нажав на жёлтую лампочкуimage.thumb.png.449a4665e3f9154142fa8dafce5bcf24.png

Увидим, что у в отчёте появился дополнительных объект - это копия нашего отрезка

Жмём image.png.02a0b94891ea530872cbf3b05ab6742a.png и теперь выбираем все объекты на чертеже с помощью image.png.97fcdc10ab058b99589495f757366e52.png - Поиск в текущем наборе

tUjGFkrCxL.thumb.gif.3e0c6989b6dbc1a7e21b620a6b4edf4b.gif

 

Закрываем таблицу, копируем отрезок ещё раз:

yYEA0oehJH.thumb.gif.f0962279807ca96ceb125e8d8b280818.gif

 

При обновлении таблицы видим, что новых объектов не появилось

Возвращаемся к тому, что говорилось ранее:

С помощью  image.png.2f8174bbc6a75ee378d16149420f7e84.png - мы выбираем не объекты, а область чертежа, в котором будем искать объекты.

С помощью image.png.97fcdc10ab058b99589495f757366e52.png - мы выбираем конкретные объекты, среди которых будем искать удовлетворяющие нашему фильтру объекты (опять же, извините за тавтологию :)) .

 

Т.е. в первом случае мы выбрали область и работали с объектами в этой области - поэтому при копирование отрезка внутри указанной нами области он добавился в отчёт.
Во втором случае мы работали с заранее выбранными объектами, поэтому при добавление нового отрезка на чертёж он никак не учитывался, потому что не входил в изначальный набор
Плюсы и минусы обоих способов:
1.image.png.2f8174bbc6a75ee378d16149420f7e84.png Плюс - при добавление объектов в указанную область отчёт обновляется
Минус - при копирование таблицы с помощью команды COPY, область не перемещается за таблицей, а остаётся на том же месте (хотя в каких-то случаях это и плюс):

2.image.png.97fcdc10ab058b99589495f757366e52.pngПлюс - при копирование таблицы вместе с объектом отчёта, отчёт будет привязан к скопированному объекту:

Минус - при добавление новых объектов на чертёж они ни как не учитываются в нашем отчёте.

 

5. Работа с формулами.

Уже не плохой результат, верно?
Можно, казалось бы на этом и остановиться, но.
Предположим ситуацию, что нам надо сложить длины отрезков разных слоёв по-отдельности. Для каждого типа делать новую таблицу? Как вариант. Но, предположим, что таких типов будет 30?
Тут приходят на помощь формулы и группировка строк.

Удалим фильтр наших объектов по слоям.

Жмём image.png.02a0b94891ea530872cbf3b05ab6742a.png и в строке "Слой" в значение выбираем "Сброс"

mlBnveaJeJ.thumb.gif.9a70ec14094097fd45824c0d6158aa1a.gif

 

Теперь в наш отчёт включены все отрезки, не важно в каком они слое.
Добавим столбец (ПКМ по заглавию столбца А -> "Добавить столбец")

qUBTgt3QgL.thumb.gif.0f3144c02c81691249761ead1e618169.gif

 

Теперь в полученном столбце B жмём ПКМ в 1 строке (строка шаблона отчёта) и выбираем из предложенных вариантов Object.Layer(Слой)

XRyogxjCyu.thumb.gif.49c9e5fa3c28471fc579aaba2466feae.gif

 

Получаем информацию для каждого нашего отрезка по-мимо его длины ещё и слой в котором он находится.
Теперь заходим в "группировку и объединение" image.png.5edb2fd0756972d088091865d387c0bd.png   

Добавляем правило "Группировать" и закидываем сюда из окошка справа столбец B

YLA786e5Sy.thumb.gif.a1df4d6894500fa087646c34d7209e21.gif

 

Видим, что наш отчёт преобразился.
Что произошло?
Наш отчёт сгруппировался по значениям в столбце B - это значит, что сгруппированные ячейки теперь в себе несут сразу все элементы по тому критерию, по которому мы их сгруппировали.
Проверим это, тыкнув на любую из ячеек, чтобы подсветить элементы на чертеже:

Спойлер

Сейчас для тех, кто ни разу не пользовался группировкой и объединением советую поиграться с этим функционалом и попробовать самостоятельно (и при помощи справки на f1, конечно) разобраться, как им пользоваться

 

А теперь магия.
Жмём ПКМ по строке шаблона отчёта в столбце А и выбираем "Выражение"
XYja18n3fP.thumb.gif.cc0b33a628a944bc7be114edbad7dc05.gif

 

Нас перебрасывает в специальное окно, предназначенное для написания формул.
Что мы тут видим
1. Наше записанное выражение
2. Подсказки по существующим формулам и выражениям
3. Результат нашего выражения
image.png.5ccb17127e20cb6e6f84f4ee27a57562.png

 

Результат записан несколькими значениями, потому что у наших элементов (отрезков) показатели длины разные. 

Теперь самое сложное.
Вспомним, что мы сгруппировали строки по значениям в столбце B.
Т.е. по факту напротив столбца B в столбце А у нас не одно значение, а множество значений элементов, свойства слоя которых соответствуют значению в столбце B.

 

Спойлер

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


Простыми словами на нашем примере - напротив значение слоя "Надо сложить" в столбце А у нас не одна длина отрезка, которую мы видим, а несколько.

image.png.0258cbb38f330845dad68720be292126.png

 

Поэтому, если мы запишем нашу формулу не просто как:

=Object.Length

а как:

=sum(Object.Length)

В ячейка напротив слоя мы получим значение сумм всех отрезком в данном слое

 

Как итог "итог отчёта" нам уже и не нужен.
Теперь просто наведём красоту и переведём единицы измерения отрезков в метры - разделив на 1000 и округлим до 2-го знака после запятой.
Для этого нашу формулу преобразуем в:

=round(sum(Object.Length)/1000;2)

 

Для того, чтобы подробнее узнать как правильно писать ту или иную формулу и что они делают, открываем "Выражение" и смотрим подсказки:

 

6. Важное дополнение

С помощью отчётов и группировок в этих отчётов можно массово изменять свойства объектов
В моей версии продукта это не работает с отрезками, но не исключаю, что в новой уже можно.

Это, к сожалению, не работает с примитивами платформы (отрезки, полилинии и т.п.) и нативными свойствами объектов (слой, цвет и т.п.).
Я в основном использую для изменения свойств параметрических объектов, а так же атрибутов блоков
К примеру - изменения номеров штампов по положения в прострастве чертежа:

Так же  знаю, что в новых версиях продукта были добавлены функции, которые позволяют автоматически изменять параметры объектов - одно из применений этих функций - это автоматическое обновления позиций объектов, при добавление новых элементов

 

Советую так же, после того, как овладеете отчётами, познакомиться с командами 

SPTBLPREP - если ввести эту команду и выбрать таблицу, позволит повторно выбрать для этой таблицы объекты отчёта (не надо заходить в редактор таблицы)

SPREFSHOW - при выборе таблицы, простроит линии связей между строками отчёта и элементами

spDataExtraction  - позволяет делать отчёт по элементам находящимся на другом чертеже.

А функции 

SPTBLPLUSFRAME - привязать таблицу к формату 

SPTBLMINUSFRAME - отвязать таблицу от формата

будут в принципе полезны при работе с таблицами. Угол привязки таблицы к формату указываются через свойство таблицы "Угол вставки".

 

На этом всё. Надеюсь смог познакомить вас с отчётами в таблицах. Таблицы нананокад, а особенно эти самые отчёты, -  очень мощный инструмент, и при правильном пользование могут сэкономить вам кучу времени. На данный момент, я работаю с нанокадам в течение уже 6-ти лет, и использую таблицы повсеместно - от подсчёта кладки на чертеже, до автоматического заполнения ТЭПов и спецификаций элементов.

 

 

 

 

 

Изменено пользователем dromandon

11 Комментариев


Рекомендуемые комментарии

Прекрасный гайд!..

Замечания:

1)

image.thumb.png.8e7344e18be4ba094709dfd21bccee8f.png

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

2)

image.png.736c0367b6f71f847170f167ad1fd315.png

Сам понимаешь.

3) Я бы добавил, что в случае с выборкой объектов из области, в выборку попадают только объекты, аппликата которых Z строго равна 0. При малейшем отклонении (даже одного конца отрезка вроде, хотя тут могу ошибаться), объекты в выбор не попадут.

 

добавлено через 0 минут

Пока дошёл только до Работы с отчётом. =)

Ссылка на комментарий

4) image.png.d35b4d7213ddbbe91b58ae0f764ffeaa.png

Далее картинка повторена дважды.

добавлено через 6 минут

5) Ну и в конце артефактики какие-то картиночные.

6) Добавь про SPTBLPREP для перевыбора области для группы таблиц и про SPREFSHOW.

Ссылка на комментарий
Цитата

В моей версии продукта это не работает с отрезками, но не исключаю, что в новой уже можно.

Увы, менять "Свойства" примитивов платформы нельзя. 

И изменение нативных свойств (слой, цвет и прочее) для объектов СПДС тоже не представляется возможным. 

Но в последних версиях (по сравнению с нанокад СПДС 6) можно автоматически управлять свойствами объектов СПДС и назначать им значения в зависимости от результатов вычислений в таблице или назначения их по критериям, заданным, например, на форме таблиц.

 

image.png.7a27bf97c7a6d2f253448def194e3ff4.png

 

 

Ссылка на комментарий
2 часа назад, Mитька сказал:

5) Ну и в конце артефактики какие-то картиночные.

Под конец заглючило что-то, поправлю, как до компа доберусь, спасибо) 

Просто думал, накидаю за пол часа статейку, а просидел часа три :D

Поэтому проверку всю оставил на сегодня)) 

Ссылка на комментарий

Поправил грамматику, убрал лишние скрины в середине и в конце статьи, добавил несколько примечаний.

В 6-м пункте добавил небольшую информацию по поводу новых функций в таблицах, а так же информацию про команды SPTBLPREP, SPREFSHOW и spDataExtraction 

Изменено пользователем dromandon
Ссылка на комментарий
3 минуты назад, dromandon сказал:

, а так же информацию про команды SPTBLPREP, SPREFSHOW и spDataExtraction

ну и чтоб два раза не вставать

sptblplusframe 

sptblminusframe 

Ссылка на комментарий
7 минут назад, doctorraz сказал:

ну и чтоб два раза не вставать

sptblplusframe 

sptblminusframe 

Добавил)

Изменено пользователем dromandon
Ссылка на комментарий

эту тему можно обсуждать вечно)))

sptblvform -открыть форму

SPCONVERTTABLE или (converttablea  converttablen ) конвертить туда сюда

sprectable распознать

============

в рамках одной статьи тему не раскрыть.

Ссылка на комментарий

SPTBLPREP - если ввести эту команду и выбрать таблицу, позволит повторно выбрать для этой таблицы объекты отчёта (не надо заходить в редактор таблицы)

 

Тут, мне кажется, важней, что оно работает сразу для группы таблиц.

Ссылка на комментарий
14 минут назад, doctorraz сказал:

эту тему можно обсуждать вечно)))

sptblvform -открыть форму

SPCONVERTTABLE или (converttablea  converttablen ) конвертить туда сюда

sprectable распознать

============

в рамках одной статьи тему не раскрыть.

Ну это всё больше уже чисто к таблицам относится, а не к отчету) 

Ссылка на комментарий
Гость
Добавить комментарий...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...