VetCAD

Получение спецификации в "голом" nanocad

   3 оценки

размещено: 18 Января 2022
обновлено: 20 Января 2022

Автоматическое составление данных спецификации в голом nanocad.

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

Однако стоит заметить, что пользователи автокада  давно и успешно используют различные средства автоматизации для  получения табличных данных используя инструмент _DATAEXTRACTION (Извлечение данных)

 

Рассмотрим аналогичную задачу в nanocad

 

В качестве исходных данных имеем чертёж, где все оборудование представлено в виде обычных блоков.

 

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

 

Вставляем заготовку из базы данных или делаем нестандартную таблицу по вашим потребностям

 

В открывшемся редакторе таблицы в пункте «Разделы» выбираем «Вставить раздел отчёта»

 

Теперь нам нужно выбрать, какие объекты будут попадать в отчёт

Нажимаем на «Выбрать исходные объекты

И, выбрав  в качестве объектов «Вхождение блока», накладываем дополнительное условие,  что значение атрибута блока «Отчёт» =1

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

 

Дополнительно можно добавить любые доступные условия фильтрация. Например, ограничить выбор блоков только на определённом слое или по имени блока. Причём, в условие можно добавить не имя блока или слоя целиком, а только часть «строки»

Теперь, собственно, переходим к получению самого отчёта (спецификации)

Для этого щёлкнем правой клавишей мышки в колонке «B» строки отчёта и выберем нужное свойство. =Object."АРТИКУЛ"

 

В колонке «В» появятся все доступные свойства блоков с данным атрибутом

 

Последовательно назначаем нужные свойства колонкам, выбрав их в контекстном меню

 

После этого все данные атрибутов блоков отображаются в таблице и нам необходимо правильным образом и структрурировать.

Для этого нажимаем «Группировать и объединять» в шапке строки отчета

 

В отрывшемся диалоге нужно мышкой перетащить нужные колонки в область «Группировки и объединения»

 

и определить нужные действия.

Колонку «C» мы отсортируем по возрастанию,  а данные колонки «B» сгруппируем по одинаковым значениям

 

Добавим в колонку «А» =row. Теперь в колонке будет отображаться порядковый номер строки отчёта.

А для «F» сделаем некоторое усовершенствование.  Так как «Заказчик» не любит простых решений, то для данного конкретного случая пустая ячейка вызывает неприятие такого отчёта. 

Проверяем, что если значение атрибута МАССА не заполнено, то пишем «-», иначе указываем массу

=iff(Object."МАССА"=="";"-";Object."МАССА")

Такую же подстановку сделаем при вычислении общей массы

 

Теперь наша таблица имеет вид.

 

Как видно на экране,  данные, которые не вошли в одну ячейку,  увеличили её строку по высоте.

Что бы избежать этого,  в редакторе таблиц  для колонки  «D» назначаем «Переносить по словам» и «Добавить строки»

А для колонок «E, F и G»  становиться доступным флажок «Разместить внизу». Так, как нам не нужно переносить эти ячейки, то ставим "Сжать по горизонтали"

Теперь строки в таблице отображаются нужным образом.

Щёлкнув по «Шаблону отчёта», Добавляем «Итог отчёта»

 

Теперь нам нужно вычислить полную массу всего оборудования.  Так как в колонке «Масса ед» она указана с «кг», то нам проще сделать это в скрытой колонке

Пишем в ячейке отчёта «J» =Object."МАССА"*count()

И считаем полную массу в строке «Итог»  отчёта  =summ(section(-1))

Так, как столбцы «C, H, I, J» у нас скрытые, то итоговая сумма не будет видна на чертеже

В общем случае достаточно сослаться на ячейку (= off(0;3)) и вывести полученное значение, но перфекционизм заказчика  требует сделать проверку , что если масса больше тысячи килограмм, то нужно выводить в тоннах. Да и фиг бы с ним.  Нам не трудно. В ячейке "G" "Итога" отчета вычисляем: 

=iff(off(0;3)<1000;round(off(0;3);2)+" кг.";round(off(0;3)/1000;2)+" т.")

 

____________________________________________________________

Теперь можно сказать, что мы смогли повторить функционал _DATAEXTRACTION (Извлечение данных),  не используя никаких дополнительных иструментов, а просто повторяя логигу проектировщика при составлении спецификации. Собрать  в кучу, подсчитав  блоки с одинаковым именем и получив в таблице номера позиций, вернуть их в атрибут блоков

В колонке отчета "I", введём =sum(ctlSetValue(off(0;-1);Object."ПОЗИЦИЯ")). Буквально это означает, что мы берем вычесленное значение из левой колонки off(0;-1)  и передаём его в атрибут блока "ПОЗИЦИЯ" 

Исппользуя обычную выноску платформы

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

 

Далее, используя команду платформы addCopy с опцией  <Несколько>

Последовательно указываем нужные блоки и расставляя позиции (выноски) на чертеже.

Теперь, при любом изменении количества блоков, изменения массы блока (если постоянный атрибут) или изменении значения атрибута "Отчёт" на <не равно Один> Спецификация всегда будет иметь данные актуальные на для данного чертежа. 

 

____________________________________________________________

PS: Не буду перегружать этот блог информацией по более полной автоматизации. Например   все это можно посмотреть в ролике.

Отдельно следует добавить, что таблица, сохранённая в базе данных, будет всегда доступна для повторного использования всеми пользователями локальной сети организации и легко импортируется  для передачи другим пользователям средствами утилиты конфигурации.  

 

 

                 

 

 

Комментарии

Комментарии могут оставлять только зарегистрированные участники
Авторизоваться
Комментарии 1-15 из 23
Петр-и-Алекс , 27 мая 2022 в 16:40
#23
Спасибо. можно или нельзя, а ссылкой воспользоваться успел :)
MCAD , 27 мая 2022 в 15:56
#22
Цитата:
Сообщение #21 от Петр-и-Алекс
Может быть есть какие то "полуфабрикаты" на этот случай? до которых мне еще листать и листать гайд...

Не знаю, можно || нельзя давать ссылки, но Вам сюда: https://forum.nanocad.ru/index.php?/topic/7606-tablitsy-i-funktsii-v-tablitsah/&tab=comments#comment-43437
Петр-и-Алекс , 27 мая 2022 в 15:16
#21
Угу, спасибо за ответ.
Было бы отлично, если бы Вы (или кто то другой хорошо разбирающийся в нано) дали бы рекломендации по созданию этой обязательной к использованию таблицы... Может быть есть какие то "полуфабрикаты" на этот случай? до которых мне еще листать и листать гайд...
Ну неужели никто не думал над этим.
Не хотелось бы как с российским автопромом: спецы которого упорно не хотят делать в российском же автомобиле штатного раскрепления обязательного в России огнетушителя...
MCAD , 26 мая 2022 в 14:05
#20
Цитата:
Сообщение #18 от Петр-и-Алекс
Готов оказать посильную помощь, надеюсь, однако, что не потребуется :).

Так обратитесь в нанософт.
MCAD , 26 мая 2022 в 13:56
#19
Цитата:
Сообщение #17 от Петр-и-Алекс
генерация дебильнейшей таблицы

Да там же, куча дебильнейших таблиц с примерами https://www.youtube.com/watch?v=Nq0O018c5FI
Цитата:
Сообщение #17 от Петр-и-Алекс
хоть и мало где применимо.

Не буду спорить.
Петр-и-Алекс , 25 мая 2022 в 13:40
#18
Лет 25 назад написал lisp, читающий указанную юзером "спецификацию" и генерирующий по результатам "выборку стали", оформляя ее как "блок". Попутно шла проверка орфографии и сроков действия помянутых ГОСТов... Сделал это на основании литературы, купленной на блошином рынке. Хочется надеяться, что сообществу профессиональных разработчиков, создавших такой продукт как наноКАД, это тоже окажется вполне по силам... Готов оказать посильную помощь, надеюсь, однако, что не потребуется :).
Петр-и-Алекс , 25 мая 2022 в 13:09
#17
Спасибо, любопытно, хоть и мало где применимо.
А вот что нужно вот прямо каждый день: генерация дебильнейшей таблицы "выборка стали на элемент". Было бы славно посмотреть возможности "нано" на этом жизненном примере. Только только входим в эту среду...
MCAD , 08 апреля 2022 в 11:49
#16
Цитата:
Сообщение #15 от ltnchik1405

И я то же. :) Как в тёмном лесу с завязанными глазами.

Если есть конкретные вопросы - спрашивайте. На youtube под роликом большая легенда. По шагам описаны все действия и приложен файл с примером.
ltnchik1405 , 05 апреля 2022 в 15:18
#15
Цитата:
Сообщение #14 от MCAD
но вот что будет просто - не соглашусь.

И я то же. :) Как в тёмном лесу с завязанными глазами.
MCAD , 29 марта 2022 в 06:30
#14
Цитата:
Сообщение #13 от Сергей812
Была своего рода рекламная акция - что упрощенную версию нанокада давали вообще бесплатно для желающих попробовать.

Да я очень далёк от таких понятий как "акция", "реклама" и прочее непотребство. Назначение примера - показать, что обычный проектировщик может автоматизировать свою деятельность, использую штатные средства платформы, не имея навыков программирования.
Цитата:
Сообщение #3 от Сергей812
имхо - там реально ничего сложного нет, во всяком случае на .Net.

Моё ИМХО: Реально повторить динамическое обновление позиции, динамическое обновление (без обновления dataExtraction) таблицы? Я думаю, что да, но вот что будет просто - не соглашусь.
Сергей812 , 24 марта 2022 в 18:54
#13
Цитата:
Сообщение #12 от MCAD
Продукт, как графическая платформа, абсолютно самодостаточен и у него до сих пор много пользователей

ну кто откажется от бесплатного работоспособного ПО) Вообще то немного о другом речь была - что как то нелепо предъявлять претензии к продукту
Цитата:
Сообщение #9 от ltnchik1405
На 5.1 забили кажется.

что не поддерживают и не развивают его дальше. Была своего рода рекламная акция - что упрощенную версию нанокада давали вообще бесплатно для желающих попробовать. Но никто не обещал - что такая модель бизнеса будет всегда.
MCAD , 24 марта 2022 в 06:39
#12
Цитата:
Сообщение #11 от Сергей812

Цитата:Сообщение #9 от ltnchik1405На 5.1 забили кажется.
фринанокад был рекламной фишкой на период раскрутки основного платного продукта.

Я бы так не сказал. Продукт, как графическая платформа, абсолютно самодостаточен и у него до сих пор много пользователей. Если в нём нельзя повторить алгоритм, приведённый в блоге, то нужно просто поискать более простые подходы. Сами табличные отчёты работают. Другое дело что поменялся подход к обновлению данных на чертеже.
Тут есть ссылка на ролик. А там у нас много примеров реализации таких или подобных задач. В том числе и от пользователей.
Сергей812 , 23 марта 2022 в 15:05
#11
Цитата:
Сообщение #9 от ltnchik1405
На 5.1 забили кажется.

фринанокад был рекламной фишкой на период раскрутки основного платного продукта.
MCAD , 22 марта 2022 в 13:51
#10
Цитата:
Сообщение #9 от ltnchik1405

Цитата:Сообщение #8 от MCADПродукт развивается с каждой версией.
На 5.1 забили кажется.

Что значит "Забили"? На него даже лицензии выдают. А развивать функционал на той платформе просто не реально
ltnchik1405 , 21 марта 2022 в 17:35
#9
Цитата:
Сообщение #8 от MCAD
Продукт развивается с каждой версией.

На 5.1 забили кажется.