Jump to content

Простейшая автоматизация с помощью отчётов таблиц


Recommended Posts

  • 4 weeks later...

К вопросу о использовании комментариев внутри самой таблицы. 

Комментарии доступны в "Построителе выражений" после создания комментария и закрытия таблицы. 

После закрытия они появляются в  "Инспекторе" и появляются "Построителе выражений". 

image.png.dcb23404856ac6d5c666c6c363fe8041.png

 

 

Using cell comments in the same table.dwg

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...
В 16.11.2012 в 13:34, Artem_R сказал:

MCAD, а не планируется добавить в таблицы функции для работы со строками? Таблицы и так замечательные, а стали бы великолепные. :) Это увеличило бы возможности вот такой мелкой автоматизации.

 

Оказывается  до сих пор актуально:

для тех кто не читает справку

Добавлено в версии 20.1

 

image.png.7c81a02f86c4f092d5d52728e40a201e.png

 

 

в версии 21

 

image.png.1333db8f7f72cf372ce04b8019588fa6.png

________________

image.png.388bf63f2a37ca8f3b12dc5b54b19e4b.png

 

  • Like 2
  • Thanks 2
Link to comment
Share on other sites

  • 1 year later...

исходник

Фабула.

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

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

 

 

Подготовка шаблона таблицы.

Предварительно подготовим таблицу для более удобного использования в платформе nanocad.

Добавим  «Именованные ячейки» в качестве переменных.

H7 – 1-й Раздел

H8 – 2-й Раздел

H9 – 3-й Раздел

H10 – 4-й Раздел

H11 – 5-й Раздел

H12 – 6-й Раздел

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

J7 – Договор

J8 - Разделитель

J9 - Предприятие

J10- Изделие

Формирование отчёта

Чертежи одной марки должны располагаться на одной линии (Object.OriginY);

1.       В данном примере «Форматы» фильтруются по слою MCAD_ФОРМАТЫ;

image001.png.360e2d7f85c1ee61bbb582b95189bac8.png

2.       В колонки  «B» и «C»  берём  значения =rnd(Object."Position Y"/100) и rnd(Object."Position X"))

3.       В колонке «С» заранее вводим =count()

4.       Теперь мы можем определить, сколько блоков находится в каждом ряду. Для этого открываем диалог «Группировать и объединять»

 image002.png.98621596799110123c33db1dca07df87.png

 

image003.png.4354bfa83788fd8fdbb02b309197085d.png

5.       Присвоение чертежам «Марки» происходит на основании индекса строки  в столбце “G” как: =iff(off(0;-6)==1;1;iff(off(-1;-5)==off(0;-5);off(-1;0);off(-1;0)+1)) где off(0;-5) объединённая колонка по значению Object."Position Y".  Добавляем объединение по «G»

image004.png.cebef9d89c9ea18cc294f92243a1a8cc.png

6.        Дальнейшее определение марки происходит в колонке «Q», в соответствии с индексом объедения по Object.OriginY и присвоению соответствующего значения переменных  This.‘’й-Раздел’’  в виде   «Именованная ячейка» как:

=Select(

off(0;-10)==1;This."1-й Раздел";

off(0;-10)==2;This."2-й Раздел";

off(0;-10)==3;This."3-й Раздел";

off(0;-10)==4;This."4-й Раздел";

off(0;-10)==5;This."5-й Раздел";

off(0;-10)==6;This."6-й Раздел";

TRUE;"Нет раздела")

Тут off(0;-10) – колонка  “G”, описанная выше;

7.       Теперь в колонке “H” мы можем сформировать обозначение

=This."Предприятие"+iff(This."Предприятие"=="";"";This."Разделитель")+This."Изделие"+"."+off(0;9)+" (Листы 1..."+off(0;-4)+")"

8.       Теперь, когда мы определили, сколько блоков находится в каждом ряду необходимо, пронумеровать их  по возрастанию параметра  Object."Position X". Для этого в колонку «F» вводим выражение: =iff(off(0;-5)==1;1;iff(off(-1;-4)!=off(0;-4);1;off(-1;0)+1)). Это значит, на самом деле, очень простое действие. Если (iff) ячейка, которая находится (off) в той же строке (0) , на пять колонок влево (-5)  равна «1», то пишем «1». Дальше проверяем, если координата «Y » не равна выше стоящей ячейке off(-1;-4)!=off(0;-4) , то ставим «1», если равна, то берём значение верхней ячейки off(-1;0) и прибавляем «1»

9.       Определяем порядковый номер страницы в комплекте документации в колонке «М»

=iff(This."Отображать номер страницы"==1;off(0;-12)+This."Начальный номер страницы"-1;"")

10.   Общее количество страниц начинается с переменной заданной на форме и вычисляется как: iff(This."Отображать номер страницы"==1;row+This."Начальный номер страницы"-1;"");

11.   Отображение на чертеже номеров страниц может быть отключено, переменной на форме This."Отображать номер страницы"; дополнительно в колонке «P» добавим проверку для

=iff(This."Отображать номер страницы"==TRUE;"Видим";"Скрыт"). Для отображения поля номера страницы.

12.   В колонки «I», «J», «K» берём атрибуты блока

=Object.NAME_OF_THE_BUILDING             

=Object.NAMEOFTTHECOMPLEX   

=Object.NAME_OF_IMAGES

 

image006.png.ecb8ffe251f0107a711cf0538bc87d93.png

Теперь, когда мы определили все необходимые атрибуты, осталось вернуть их значения в блок. В колонку «P»:

=ctlSetValue(off(0;1);Object.SHEET_NUMBER)+ctlSetValue(off(0;-1);Object.SHEET_COUNT)+ctlsetValue(off(0;10);Object.DESIGNATION)+ctlsetValue(off(0;11);Object."Выбор1")+ctlSetValue(off(0;8);Object.N_SHEET)+"ctlSetValue"  

image007.png.7890695efca14347e00dcb92e6608ebd.png

 

13.   Вид фрагмента основной надписи в первом ряду.

image008.png.7483a94111ac12cd194a630be719a9d2.png

 

14.   Теперь  при изменении «Именованной ячейки» H7 (1-й Раздел) или при добавлении, например трёх форматов справа от указанного «Обозначение» пересчитается и  листы будут соответствовать нужным значениям

image009.png.b57f9426f315772e022e30a5251550fe.png

 

15.   Все форматы имеют разный размер, но нам нужно привести их к формату А4. В колонке отчёта  «L» вводим:

=Select(

subLeft(Object."Выбор";9)=="Формат А4";1*iff(subString(Object."Выбор"+" ";10;1)=="x";subString(Object."Выбор";11;1);1);

subLeft(Object."Выбор";9)=="Формат А3";2*iff(subString(Object."Выбор"+" ";10;1)=="x";subString(Object."Выбор";11;1);1);

subLeft(Object."Выбор";9)=="Формат А2";4*iff(subString(Object."Выбор"+" ";10;1)=="x";subString(Object."Выбор";11;1);1);

subLeft(Object."Выбор";9)=="Формат А1";8*iff(subString(Object."Выбор"+" ";10;1)=="x";subString(Object."Выбор";11;1);1);

subLeft(Object."Выбор";9)=="Формат А0";16*iff(subString(Object."Выбор"+" ";10;1)=="x";subString(Object."Выбор";11;1);1);

TRUE;0)

image010.png.51711f6fa61699529eaec2c3b4d408d5.png

 

Функция subLeft вернёт только обозначение формата, без кратности

image012.png.94b93b18b6df493f028b33ba9747c180.png

 

Для А3, нужно умножить это значение на 2, для А2 на 4, для А1 на 8 и для А0 на 16.

Теперь нужно проверить, если в Object.«Выбор» есть  «х»

image013.png.23f2d42a3aafbee06109e43888fb5f44.png

 

То взять 11-символ из Object.«Выбор» и использовать его в качестве множителя.

16.   Добавляем «Итог отчёта»

 

И в колонке:

  • «K» ="Всего листов: "+off(-2;-10)

«L»  ="Форматов кратно А4: "+"

      "+summ(section(-1))+" шт."

  • «N» =off(0;-2)

image016.jpg.855cbf7634fbe29da5d01e5d57066b02.jpg

 

Итог

 

Если вы дочитали до этого места то, наверное, уже поняли, что ничего сложного в этом алгоритме нет. Это не программирование как таковое. Вам не нужно ни определять типы данных, ни создавать сложные функции и процедуры. Ничего такого!!! Вам просто нужно мысленно представить каким путём вы достигаете поставленной задачи при обычном проектировании и последовательно реализовать этот алгоритм в виде отчёта.

Файл примера можно посмотреть тут

 

 

  • Thanks 3
Link to comment
Share on other sites

  • 2 weeks later...

Типовой вопрос:

Как значение одного объекта (например блока) учесть в разных колонках отчёта.

 

На чертеже размещены блоки, представляющие из себя «Перекрытия» определенной «Серии». Блоки обладают двумя параметрами «Выбора», «Марка» и «Этаж». Нам нужно подсчитать, сколько блоков, определенной «Марки» размещены по этажам. В примере условно рассмотрено пять этажей и «Подвал», но этот метод позволит Вам расширить возможности отчёта. При необходимости, конечно.

00:14 Открываем заготовку отчета и в меню «Разделы» выбираем «Вставить раздел отчета»

image001.png.3ad411743ac4c9956ba585610850da56.png

00:22 Нажимаем на «Выбрать исходные объекты» image002.png.47bdab18b1c7ba770cc8ee7f7ccd8f1d.png указываем, что нам нужны блоки и, в качестве дополнительного фильтра, задаем «Имя» - «плиты пустотные»

image003.png.8ddd08579a0af642d0baebebdd0e023d.png

00:36 Последовательно выбирая из контекстного меню , назначаем колонка свойства из атрибутов блока. Колонка «В» - Object."СЕРИЯ" , клонка «С» - Object."МАРКА". В колонке «J» - пишем count().

image004.png.fd0e4da411bfa508e9dd39bee45b9bf1.png

01:10 В «Итоге» отчёта вставляем из контекстного меню «Сумма» summ(section(-1))

 01:15 Нажимаем «Группировать и объединять».

 image005.png.e024534ffba432522d286dba29446e3d.png 

Перетаскиваем из левой части обозначение колонки «В» и назначаем «Объединять» и «Сортировать по возрастанию». Теперь все ячейки, с одинаковым обозначением «Серии» будут объединены.

01:25 Назначаем для колонки «С» группировку по «Марке». Теперь все строки, объединённые по серии, сгруппированы по «Марке». В колонке «J» автоматически подсчитывается общее количество блоков соответствующей «Марки».

image006.png.b6ce8f3682b14a20250b353d30d44560.png

01:36 Временно убираем «Группировку» по «С», чтобы более наглядно продемонстрировать алгоритм подсчёта.

01:40 В колонке «D» вставляем свойство блока (Выбор) «Этаж». В данном случае мы выбрали его из контекстного меню.

01:55 Открываем «Построитель выражений». В этой колонке нам нужно подсчитать, сколько блоков имеют параметр «Этаж» значение «Подвал». Пишем условие, ели значение равно «Подвал», то «1»,если иное значение, то «0» iff(Object."Этаж"=="Подвал";1;0)

image008.png.85ca33bd95ba39d4a7370e6a1440e7de.png

02:20 Возвращаем группировку по «С» и видим, что пока мы не получили нужный результат. В колонке появились только значения «0» и «1».

02:28. Снова заходим в «Построитель выражений» и суммируем все значение в сгруппированной строке отчёта. =sum(iff(Object."Этаж"=="Подвал";1;0))

image009.png.86c1d39016b447949891cc29dee73727.png

02:39 Повторяем данное условие для каждого этажа, редактируя значение аргумента Object."Этаж" в зависимости от текущей колонки.

03:30 В данной постановке задача уже решена. Мы имеем возможность подсчитать все «Плиты перекрытия» по этажам, но отображаются все колонки, хотя пока у нас нет «Плит перекрытия» для четвёртого и пятого этажа. Так как мы делаем «универсальный» отчёт, то желательно автоматически скрывать «нулевые» колонки.

03:32 Для этого в «Итоге» отчёта, суммируем значения внутри секции отчёта для колонки «D».

03:33 Открываем «Построитель выражений» и Задаём условие, что если «Итог» колонки равен «0», то и ширина колонки равна «0», иначе назначаем «8» мм. =ctlSetColumnWidth( iff(summ(section(-1))==0;0;8))

image010.png.9c162e51bd856b4a7c720b14968799d6.png

04:02 «Размножаем» данное выражение по колонкам «этажей». Так как ролик делался практически одним дублем и без последующей обработки, то прошу отнестись с пониманием, что иногда приходилось делать откаты ctrl+Z, но это никак не влияет на работу отчёта. 

 04:32 Теперь колонки с «нулевыми» значениями в «Итоге» отчёта имеют нулевую ширину.

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

04:45 Заходим в любую «Скрытую ячейку» и назначаем «Комментарий». В нашем случае это будет ячейка «О2» - «Show Pos»

image011.png.4558aed66a79e62b23d9161e130a9ac9.png

04:58 В ячейке «N» строки отчёта вводим условие, что если значение в «Комментированной ячейке» равно «1», То пишем «Поз.» + row если нет то «» (пустое значение). =iff(This."Show Pos"==1;"Поз. "+ row;"")

image012.png.47c5d2da5d0acfff96fd7d3cb59a1879.png

05:41 Теперь нам нужно передать это значение в атрибут блока Object.POSITION. ctlSetValue(off(0;-1);Object.POSITION) Заодно наступим на «грабли» и, получив по лбу при проверке работы отчёта, быстро исправим позже 06:35.

image013.png.de9e8b28bc1d0234f25d01eae0cc6391.png

06:18 Проверяем работу отчёта , меняя значение комментированной ячейки. Как мы видим, что у некоторых блоков не меняется значение атрибута POSITION.

06:35 Возвращаемся в редактор и добавляем, =sum(ctlSetValue(off(0;-1);Object.POSITION)) . Теперь значение должно передаваться во все блоки.

image.png.5dbb1b835743b35bfdaf6b4d3d71a493.png

07:13 Сохраняем таблицу в базу данных, создав, при необходимости, новую папку в нужном разделе.

07:32 Теперь этот отчёт можно использовать во всех чертежах, где при оформлении документации используются данные блоки «плиты пустотные»

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

  • 4 months later...
В 31.05.2023 в 00:07, sokave сказал:
  • не понимаю, как автонумерация страниц у вас сделана
  • а легче не стало  я вообще не понимаю ничерта, магия какая то запредельного уровня
  • ммм, мне кажется китайский язык проще

 

Пример нумерации объектов по простому алгоритму. Разделы сортируются сверху вниз по уменьшению координаты Y. Номера в разделах по увеличению координаты X

1.    Подготовка данных

1.1.   Объектами, которые будут использоваться в качестве примера, будут «Универсальные выноски»

1.2.   Вставим в чертеж универсальную выноску с произвольным набором значений

 image001.png.cea3a8876d62bcde8474b30e31e78349.png

1.3.   Создадим массив из выносок, например, пять по горизонтали и одиннадцать по вертикали.

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

image002.png.4755860ab467de6ccf4dcf956184a686.png

2.    Подготовительные работы

2.1.   Вставляем в чертеж обычную таблицу, состоящую из двух строк

2.2.   Так как нам нужно показать формирование «Обозначения»

2.3.   Примем, что в первой строке будет формироваться постоянная часть (условно), такая как производитель, номер договора или любимы цвет вашей мамы

2.4.   Вторая строка будет содержать «вертикальную» часть обозначения , которая будет формировать индексы разделов проекта

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

image003.png.e4c3a1073c3f027d9c89d437c1f2b5b3.png

2.6.   Например, все ячейки второй строки имеют «комментарий» Раздел с индексом от 1 (колонка А) до 12 (колонка L) .

image005.png.29d3bf8dd1e06ce9670ed1595f28c1cd.png

2.7.    image006.png.42c5be151605f209f1d163ad43d02680.pngАбсолютно не принципиально, что все данные ячейки должны быть в одной строке. Это может быть несколько строк, или, если у Вас есть, например СПДС GraphiCS, то вы можете назначать переменные на форме.

image007.png.55e3187db477e9bcded29b4646246de7.png

3.    Создание отчёта

3.1.   Добавляем «Раздел отчёта»

image008.png.26b5952537268a8ce71fa9d9c4424949.png

3.2.   Нажимаем на пиктограмму «Выбрать исходные объекты» image009.png.227fd59ab4f4afb6b8f7f00d177851b1.png

В качестве источника данных выбираем «Универсальная выноска» и добавляем условие нахождения на слое «Test Leader»

image010.png.a82e74004446ee8d6815bcb5f3320312.png

3.3.   В колонке «B» отчеты назначаем свойство выноски Object.OriginY, выбрав, например,  из контекстного меню.

image011.png.f714f91b6b092d8b3e9cf93ad97555d4.png

3.4.   В колонке «С» назначаем Object.OriginX, а для колонки «D» считаем значение count() – количество.

image012.png.723c1adf7d5cd6453918c743c4d515db.png

3.5.   Собственно на этом, этап получения исходных данных отчёта с чертежа закончен. Мы получили все необходимые данные и теперь нужно правильно расположить строки отчета и определить количество объектов на определённом уровне.

4.    Формирование данных отчёта

4.1.   Нажимаем пиктограмму «Группировать и объединять»

image013.png.450fbcb680a35b6bff29b0796eb9c00b.png

4.2.   Перетаскиваем колонку «В» из правой части и указываем «Объединять» и сортировать по убыванию

image014.png.104c80233c3729c947be3bbe89b762bf.png

4.3.   Как видно на рисунке, строки с координатами «Y» объединились и отсортировались  по убыванию

4.4.   Добавим в объединение колонку «D» и последовательно отсортируем колонку «С» по возрастанию

image016.png.e58fc239a264756da2e4cb787527112b.png

4.5.   Теперь мы получили количество объектов (универсальных выносок) в каждой строке, а внутри поддиапазона объектов с одинаковой координатой «Y» выноски отсортированы по координате «Х»

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

5.1.    Теперь нужно определить порядковый номер «Раздела» для дальнейшего использования

5.1.1.     Для упрощения, наглядности и простоты понимания в первую очередь проверяем, что если это именно третья  строка в таблице (не в отчёте) то сразу назначаем номер 1

5.1.2.     Теперь, если в колонке «В» значение в верхней строке равно значению в текущей строке off(0;-3)==off(-1;-3), то пишем значение из строки на одну выше off(-1;0), если условие не выполняется, то берём верхнюю строку и прибавляем «1» off(-1;0)+1)

image018.png.ac8f660bc7d563d3cf104a6aaceebf51.png

image019.png.1701d7b20c392c0f11d071f6fe720e87.png

5.1.3.     Для наглядности в «Группировке и объединении» добавляем в «Объединение» колонку «Е»

image020.png.1f798b952859ed66dd1bbb08f5481e5f.png

5.2.   Так как мы приняли, что значение разделов будет браться со второй строки данных формироваться в порядке следования объектов (универсальных выносок) по убыванию, то открываем «Построитель выражений» в колонке «А» отчёта и пишем выражение

Select(

off(0;4)==1;A2;

off(0;4)==2;B2;

off(0;4)==3;C2;

off(0;4)==4;D2;

off(0;4)==5;E2;

off(0;4)==6;F2;

off(0;4)==7;G2;

off(0;4)==8;H2;

off(0;4)==9;I2;

off(0;4)==10;J2;

off(0;4)==11;K2;

off(0;4)==12;L2;

TRUE;"Б/Ч")

Последовательно проверяем значение в  колонке «Е», и при выполнении условия берём значение из соответствующей ячейки с названием раздела. В нашем случае оно совпадает с индексом ячейки, но конечно, оно должно соответствовать  значению комплекта КД

image023.jpg.dca87d721f4d965530b1fbe8ad852d23.jpg

5.3.   Для определения последовательности номера внутри раздела вычисляем

5.3.1.     Для строки таблицы «3» назначаем «1»

5.3.2.     Далее проверяем, что если мы находимся в том же разделе off(0;-1)==off(-1;-1), то берём значение верхней строки и прибавляем 1 off(-1;0)+1, иначе начинаем новую нумерацию. В нашем случае это «1», но можно, начать с нужного номера

image024.png.70811bc87a6d5b9658f32375df87d2d1.png

5.4.   Заранее предугадать пожелание требований в той или иной организации мв никогда не сможем, но постараемся. Вполне вероятно, что «номер документа» должен содержать три знака. Например 001..099. или кроме обозначение раздела еще и числовой обозначенние. Для этого в колонке «G» пишем

iff(off(0;-2)<10;"00"+str(off(0;-2));"0"+str(off(0;-2)))+"."+iff(off(0;-1)<10;"00"+str(off(0;-1));"0"+str(off(0;-1)))

 image027.jpg.c88329fadece5c6ccd9a3b22613e6d0a.jpg

На данном этапе мы закончим с арифметикой, так как все разделы определены, и порядковые номера объектов вычислены

6.     Формирование обозначений

6.1.   «Универсальная выноска», выбранная нами в качестве примера, может иметь несколько строк. На самом деле может быть любой объект, например динамический блок с исполнениями, «Универсальный маркер», «Параметрический объект базы данных» или, например, формат основной надписи. Поэтому возникает необходимость формирования различных обозначений в зависимости от пожеланий пользователя

6.2.   Для наглядности в колонке отчета «А» дополним наше выражение

=A1+"."+B1+"."+

Select(

off(0;4)==1;A2;

off(0;4)==2;B2;

off(0;4)==3;C2;

off(0;4)==4;D2;

off(0;4)==5;E2;

off(0;4)==6;F2;

off(0;4)==7;G2;

off(0;4)==8;H2;

off(0;4)==9;I2;

off(0;4)==10;J2;

off(0;4)==11;K2;

off(0;4)==12;L2;

TRUE;"Б/Ч")+

"-"+off(0;6)

Например, для первой строки мы получим MCAD.АБВГД.A2-001.001 ,  для последней MCAD.АБВГД.K2-011.005 . Мы задаём только правила формирования текстовой строки, но значения самой строки будут меняться в зависимости от того, что будет внесено в соответствующие ячейки таблицы, поля формы или отредактировано в инспекторе.                       

6.3.   В колонках «H», «I» и «K» можно просто потренироваться складывать значение текстовой строки. Например

  •   ="Уровень: "+off(0;-3)+"(Раздел-"+off(0;1)+"); №"+str(off(0;-2))      
  •   =Select(

off(0;-4)==1;A2;

off(0;-4)==2;B2;

off(0;-4)==3;C2;

off(0;-4)==4;D2;

off(0;-4)==5;E2;

off(0;-4)==6;F2;

off(0;-4)==7;G2;

off(0;-4)==8;H2;

off(0;-4)==9;I2;

off(0;-4)==10;J2;

off(0;-4)==11;K2;

off(0;-4)==12;L2;

TRUE;"Б/Ч")

 

  •   ="Лист № "+off(0;-5)+ " из "+ off(0;-7)

7.    Возвращаем вычисленные значения в объекты (Универсальные выноски)

  Вся это «красивая – красота» без проблем может быть построена в сторонней программе и, без сомнения будет гораздо более функциональна. Например, в Excel, Bitrix, Microsoft Project  вы легко можете «построить»  график по результатам, показать высокому начальству в презентации и, наверное, удивить своих коллег.

Все это мы делали для того что бы:

  •   Вернуть полученные значения в наш объект;
  •   Иметь возможность динамического обновления при добавлении, удалении, перемещении объектов;
  •   Производить с вычисления с любыми данными, полученными с объекта. Например подсчитать кол-во форматов кратно А4, для раздела проекта, для конкретного исполнителя или что-о еще.

7.1.   Для возврата вычисленного значения используем функцию ctlSetValue (;)

 image028.png.8f9de3b526587eaecf23441e5718986c.png

Говоря простыми словами, мы берём значение из off(0;-10)  указанной (-10) ячейки текущей строки (0)

7.2.    image006.png.bbbaea1ab9ead891a0d9a06529277998.pngПеред тем, как переходить к следующему  пункту отключите обновление текущего отчета

image029.png.4935e090fabb3da95cd47c596c05fabc.png

8.    Управление отображением данных в объекте

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

8.1.   Вводим в ячейку «К1» значение «1»

8.2.   Еще раз открываем ячейку отчёта в колонке «К» в построителе выражений. Если мы, например, хотим просто поменять местами значения в первой и второй строки, то редактируем выражение

Если «К1» ==1 то пишем в свойство первой строки Object.McPropNoteString0 значения из колонки «А» off(0;-1), в противном случае берём из колонки «Н» off(0;-3) . Для второй строки условия точно такие же только «К1»!=1 и, соответственно, передаётся Object.McPropNoteString1

image030.png.84dbcb9717c9ced8910e90ddd378dd00.png

8.3.   Следует указать, что указывать адрес ячейки можно не только по имени ячейки, а ссылаться на неё как на переменную (комментарии).

image032.png.2f6b702f0ad306d8a53370a07f3e361a.png

8.4   Формула выглядит так: 1.1.   iff(This."Показать строку ТРИ"==1;off(0;-1);off(0;1))

image.png.3d4943f4d6662b5971a108a1f8d14432.png

image.png

9.    Заключение

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

Отчёты умеют работать со всем объектами, у которых есть атрибутивная информация.  Например с динамическими блоками.   Пример реализации работы с Форматами – выполненными в виде блоков можно посмотреть здесь  

Сортировка и нумерация.dwg

 

Сортировка и нумерация выносок. Управление отображением.pdf

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

Ой, мама... Во что же за 10 лет превратилась "Простейшая автоматизация!.. :o:wub:

Edited by Mитька
  • Haha 2
  • Sad 1
Link to comment
Share on other sites

  • 2 months later...

Вопрос  по мотивам темы "Можно ли извлечь в отчете данные о геометрическом положении строительной оси?"

Цитата
  • Просуммировать значение атрибутов блока, находящихся на одной линии и записать значение в крайнем правом блоке. 
  • Автоматически отслеживать изменение значений атрибутов и количества блоков.
  • Видимый признак блока с результатом вычислений.

 

Суммирование чисел в строке rev000.dwg

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Получение геометрии с чертежа и  подсчёт однотипных объектов с разными свойствами.

 

Шаблон "Позиции" ищет все "Универсальные выноски ", расположенные на слое "Позиция фасонки" После размещения шаблона на чертеже, нужно назначить марку и номер. Автоматически происходит поиск всех выносок с заданными критериями в первой строке. Остается только указать на замкнутый контур полилинии. Если площадь состоит из нескольких контуров, то нужно последовательно их указать 01:07. Если во второй строке содержится число, например 150 шт 01:32 , то считается, что данных элементов (фасонок) на чертеже 150 и они участвуют в расчете. 02:31 текст под обозначением позиции можно скрыть.

 

 

 

Шаблон таблицы фасонки.mcdi Отчёт по фасонкам.dwg

  • Like 1
Link to comment
Share on other sites

В продолжение

 

Спойлер

image.png.a50f79f4ffb7fc8ad65ca1fa80c10427.png

 

или только для булевых работает?

Link to comment
Share on other sites

8 часов назад, doctorraz сказал:

В продолжение

Если ты про то, что вытащить список из кода, то нет.

Если нужен общий, динамически обновляющийся список для форм всех типов объектов, то "Редактор коллекций" отреставрировали давно.

image.png.065a93e29c935a936ec5127fa4ff2396.png

 

Переключалка маскировки (1).dwg

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт Разработка? Tell a friend!

×
×
  • Create New...