¬аше окно в мир —јѕ–
 
Ќовости —татьи јвторы —обыти€ ¬акансии Ёнциклопеди€ –екламодател€м
—татьи

6 феврал€ 2019

‘ормулы в ARCHICAD 22

≈гор «ахаров, главный архитектор «јќ Ђ»нститут ѕ»–—ї (ѕермь)

≈гор «ахаров

¬ступление

ћен€ зовут ≈гор «ахаров, € главный архитектор «јќ Ђ»нститут ѕ»–—ї (ѕермь). ARCHICAD €вл€етс€ моим помощником на прот€жении всей моей профессиональной де€тельности.

я уже делал общий обзор новых возможностей ARCHICAD 22-й версии и теперь хочу подробнее остановитьс€ на одном из главных нововведений Ц формулах, область применени€ которых оказалась намного шире, чем могло показатьс€ на первый взгл€д.

ћногие ждали формулы в интерактивных каталогах и функционал, схожий с Excel. ѕоначалу € был удивлен по€влению формул в свойствах отдельных элементов и расстроен ограничени€ми, которые в св€зи с этим бросаютс€ в глаза. Ќо, рассмотрев новинку повнимательнее, € пон€л, что формулы по примеру Excel в интерактивных каталогах имели бы р€д существенных ограничений. –езультат расчета был бы прив€зан к конкретному каталогу, а формулы как новый тип пользовательского свойства могут не только включатьс€ в каталоги, но и использоватьс€ дл€ выносных надписей, графической замены и IFC-свойств. » ограничение в виде использовани€ в формулах только свойств одного объекта и общих параметров проекта кажетс€ мне приемлемой ценой за универсальность использовани€, тем более что функци€ нова€ и будет развиватьс€. ƒалее € подробнее остановлюсь на особенност€х в работе формул с ARCHICAD.

ƒл€ многих BIM-модель ассоциируетс€ прежде всего с объемной моделью здани€, но без наполнени€ информацией это по сути просто 3D-макет. » тут начинаютс€ проблемы, потому что наполнение модели информацией вручную Ц довольно трудоемкий процесс; может показатьс€, что оно того не стоит и при оформлении документации проще всЄ подписывать и прописывать простым текстом. Ќо, во-первых, прошли времена, когда проект был прежде всего стопкой бумажной документации. ¬о-вторых, важно не единожды сформировать проект и сдать его заказчику, а получить его как базу взаимосв€занных данных, изменени€ любого фрагмента которой распростран€ютс€ на весь объем проекта. ¬ ARCHICAD давно существует возможность автоматизации наполнени€ модели информацией через параметры элементов. ‘ормулы вывод€т этот инструментарий на новый уровень, позвол€€ комбинировать параметры и свойства элементов, задава€ внутренние взаимосв€зи между ними.

ќбщие особенности использовани€

‘ормулы по€вились как новое значение пользовательских —войств, создаваемых в ћенеджере —войств. —войства с формулами, как и обычные —войства, прив€зываютс€ к  лассам элементов, о чем говорит нижн€€ панель в правой половине окна диалога (рис. 1).
‘ормулы ARCHICAD 22

–ис. 1

ѕри нажатии кнопки Ђƒобавитьї по€вл€етс€ окно –едактора ‘ормул.  нопка Ђѕараметры и —войстваї позвол€ет добавить свойства, наход€щиес€ в панели Ђ лассификаци€ и —войстваї параметров каждого элемента. ‘ункции и единицы измерени€ вы можете вводить с клавиатуры (если уже запомнили обозначени€ единиц измерени€, функций и их синтаксис), но предусмотрены и специальные кнопки дл€ выбора функций из списка. ‘ункции удобно сгруппированы по типам, при наведении на функцию по€вл€етс€ всплывающа€ подсказка, а щелчком правой кнопки мыши можно вызвать более подробную справку о каждой функции. ѕосле выбора нужной функции в окне –едактора по€вл€етс€ правильный синтаксис данной функции, и от пользовател€ требуетс€ только подставить свои значени€ (строковые значени€ вписываютс€ в кавычках, числовые Ц без кавычек). ¬ нижней части окна –едактора в режиме реального времени вывод€тс€ подсказки по ходу ввода формулы. ¬ целом интерфейс довольно дружелюбен, а синтаксис очевиден и подробно описан в руководстве пользовател€.

ѕользовательские —войства как с формулами, так и без них расположены внизу списка параметров дл€ вставки в окно –едактора ‘ормул, автотекста и »нтерактивных  аталогов (рис. 2).

‘ормулы ARCHICAD 22

–ис. 2

Ѕолее подробное описание формул вы можете найти на сайте, а на официальном канале ЂGRAPHISOFT –осси€ї есть отдельный плейлист, посв€щенный формулам в значени€х —войств.

ƒл€ начала надо договоритьс€ об условных обозначени€х, которые € буду использовать в дальнейшей части статьи.

  1. ѕримеры формул будут выдел€тьс€ курсивом.
  2. ѕараметры и —войства элементов, вставленные в формулы, будут иметь серый цвет Ц в соответствии с их отображением в окне –едактора ‘ормул. ≈сли, например, параметр  рыши ”клон скопировать из –едактора ‘ормул и вставить в любой сторонний текстовый редактор, он будет иметь вид {Property: рыша/”клон}, то есть в названии закодирована также группа, в которой этот параметр расположен. “аким образом, вы не сможете просто скопировать примеры формул, которые € разместил в статье: придетс€ вручную подобрать либо создать нужные свойства дл€ вставки в формулы. ѕроцесс подбора нужного элемента позволит вам изучить набор стандартных параметров и —войств элементов ARCHICAD, если вы не сделали этого ранее.
  3. ѕользовательские —войства, которые создал €, будут иметь голубой фон.
  4. {‘ќ–ћ”Ћј} Ц так мы обозначим некую абстрактную формулу, суть которой не важна дл€ рассматриваемого примера.
ќдним из основных принципов BIM-проектировани€ в целом (и средствами ARCHICAD в частности) €вл€етс€ создание унифицированного шаблона. ‘ормулы позвол€ют устанавливать гораздо более сложные св€зи между параметрами элементов ARCHICAD и должны стать важной частью реквизитов шаблона вашей работы. ѕоскольку, начина€ с 21-й версии, пользовательские —войства прив€заны не к инструментам, а к  лассам элементов, вы должны четко понимать, как вы классифицируете различные элементы проекта:
  1. ѕросмотреть и отредактировать стандартную классификацию или создать свою с нул€.
  2. Ќазначить соответствующую классификацию элементам »збранного.
  3. Ќеобходимо не только понимать, но и иметь описание всех ваших реквизитов, их наименование и структуру хранени€.
  4. —оздава€ новые —войства, вы также должны продуманно подходить к их наименованию и разделению по группам.

Ѕез всего вышеперечисленного формулы внесут в вашу работу хаос, и быстро ориентироватьс€ в растущем объеме информации будет затруднительно (рис. 3).

‘ормулы ARCHICAD 22

–ис. 3

 огда шаблон сформирован и описан, классификаци€ элементов вам пон€тна, вы должны сформулировать дл€ себ€ задачу, которую хотите решить с помощью формулы. ѕервое, что мне пришло в голову, это назначить, наконец, такое свойство  рыши, как уклон в процентах. —оздаю новое —войство в группе Ђќсновные конструкцииї, выбираю  лассы, дл€ которых это —войство будет примен€тьс€ (в моем случае  ровл€ и ћарш пандуса), выбираю значение по умолчанию Ц ‘ормула, набираю формулу:

100 * TAN (”клон)

и, наконец, мен€ю “ип данных (в моем случае Ђ„ислої).

¬се —войства можно создавать в одной группе, но тогда со временем вы просто запутаетесь. ћожно указывать дл€ —войств доступность всем  лассам, но тогда список —войств у каждого элемента (отображаемый в диалогах ѕараметров элементов) будет расшир€тьс€ до бесконечности, причем дл€ большей части —войств даже не будет доступен расчет по формуле, так как параметр ”клон есть только у крыш.

ћожно сразу задать формулу:

CONCAT ("i="; STR (100 * TAN (”клон); "%"),

чтобы получить строку Ђi=1,50%ї (только тип данных надо сменить на Ђ—трокаї), но тогда результат нельз€ будет использовать дл€ дальнейших расчетов, к тому же нужный текст можно дописать в выноске типа “екст/јвтотекст и сохранить в »збранное, правда, направление уклона в любом случае придетс€ задавать вручную.

‘ормулы должны быть доступны только дл€ тех  лассов, дл€ которых расчет по ним возможен и необходим. ѕри этом пользовательское —войство может быть создано и использоватьс€ в формулах и при этом вообще оставатьс€ недоступным ни дл€ одного  ласса. Ќапример, можно создать —войство —тепень огнестойкости с типом данных Ќабор ѕараметров и задать значени€ I, II, III, IV, V. “аким образом, это —войство становитс€ как бы аналогом пол€ из »нформации о ѕроекте, но с выбором из заранее установленных вариантов, без ручного ввода. Ёто может быть полезно, поскольку формулы чувствительны к точности значений, и случайно поставленный пробел в конце значени€ параметра способен сбить расчет.

¬ одно —войство может быть добавлено несколько формул, расчет ведетс€ последовательно сверху вниз. ≈сли перва€ формула не может быть рассчитана дл€ элемента, то расчет переходит к следующей и так далее до тех пор, пока расчет не будет выполнен либо не кончатс€ формулы, при этом “ип данных у результата всех формул в одном —войстве должен совпадать.

≈сли формулы закончились, но ни одна из них не подошла элементу, то результатом будет <анализ формулы недоступен>, а в интерактивном каталоге отобразитс€ Ђ---ї. ѕоэтому € рекомендую последней формулой дл€ —войства с несколькими формулами и типом данных Ђ—трокаї делать формулу типа Ђ!ќЎ»Ѕ ј!ї (или какой-то аналог заметной надписи дл€ визуального контрол€). Ёта заметна€ надпись будет выводитьс€ в ¬ыносках,  аталогах и —войствах элемента, и вы будете понимать, что нужно откорректировать либо сами формулы, либо  лассы, доступные дл€ этого свойства. “акже, сдвига€ другие формулы ниже формулы с предупреждением, вы отдел€ете их от расчета, не удал€€ их (рис. 4).

‘ормулы ARCHICAD 22

–ис. 4

¬ одно —войство может быть добавлено несколько формул дл€ разных типов элементов (стены/колонны/перекрыти€ и т. д.). ќграничить использование формулы каким-то одним типом элемента можно присутствием в ней хот€ бы одного параметра, характерного только дл€ одного типа элемента, даже если этот параметр не нужен дл€ работы самой формулы. Ќапример, в формуле

IF (”клон <> ”клон; У!ќЎ»Ѕ ј!Ф; {‘ќ–ћ”Ћј}),

первое условие неравенства уклона кровли самому себе в принципе невыполнимо и установлено только дл€ ограничени€ расчета формулы  рыш, а остальные типы элементов переход€т к расчету по следующей формуле.

Ќа сегодн€ комментирование в теле формул не предусмотрено, и когда в одно —войство добавлено много формул, становитс€ сложно ориентироватьс€ в том, дл€ какого типа элементов кака€ формула создана. ƒл€ идентификации € придумал в начале также добавл€ть условие, ненужное дл€ самого расчета.

Ќапример:

IF (У—тенаФ =Ф-Ф; У!ќЎ»Ѕ ј!Ф; {‘ќ–ћ”Ћј}) (рис. 5).

‘ормулы ARCHICAD 22

–ис. 5

ќчевидно, что строка Ђ—тенаї никогда не будет равна строке Ђ-ї и, соответственно, значение —войства никогда не станет Ђ!ќЎ»Ѕ ј!ї, но при этом в начале формулы по€вилась надпись, говор€ща€ об элементе, дл€ которого она создавалась.

—ложные формулы бывает удобно разбить на несколько —войств с формулами предварительного расчета. Ќапример, результат расчета формулы уклона крыши в процентах можно использовать самосто€тельно дл€ указани€ уклона кровли, а можно примен€ть в других формулах Ц например дл€ определени€ типа кровли (плоска€/скатна€):

IF (”клон в % <= 5; Уѕлоска€Ф; У—катна€Ф)

“о есть если уклон меньше или равен 5%, то кровл€ считаетс€ плоской, а если больше Ц скатной.

Ќужно очень внимательно относитьс€ к “ипам данных —войств с формулами и понимать логику определени€ “ипа данных программой ARCHICAD. “ак, в моем примере параметр  рыши ”клон Ц это ”глова€ величина, но после применени€ функции тангенса превращаетс€ в число. ƒанную особенность можно использовать дл€ своих целей. Ќапример, если вам требуетс€ посчитать длину каких-то элементов в метрах, а в качестве единиц измерени€ линейных величин прин€ты миллиметры и вам неудобно мен€ть их ради одного параметра, вы можете создать —войство дл€ длины нужного типа элементов и вставить в него формулу:

3D-длина * 1 m

“аким образом, изначальный “ип данных у параметра был Ћинейна€ величина, а после умножени€ на один метр само значение не изменилось, но тип данных сменилс€ на ѕлощадь, и его отображение мен€етс€ в соответствии с отображением площадей (в большинстве случаев это м2 с двум€ знаками после зап€той).

¬ ARCHICAD пока не предусмотрено форматирование формул: если вы перенесете часть формулы на новую строку, ошибки не будет, но после закрыти€ и повторного открыти€ окна формулы она вновь выстроитс€ в одну строку. ƒл€ сложных формул можно либо составл€ть схемы, о которых € скажу ниже, либо использовать сторонний проприетарный текстовый редактор (например Sublime Text) дл€ проверки соответстви€ открывающих и закрывающих скобок.

—тоит отметить, что формулы в ARCHICAD чувствительны к локализации программы, то есть тип элемента в RUS-версии будет иметь название Ђ—тенаї, а в INT-версии Ц ЂWallї. «начени€ таких встроенных параметров, как –асположение и  онструктивна€ ‘ункци€, тоже различаютс€ в зависимости от €зыка программы. ѕри этом функции формул и значени€ критери€ соответстви€ TRUE/FALSE (ѕ–ј¬ƒј/Ћќ∆№) в обеих верси€х на английском €зыке. Ќазвани€ параметров и —войств, вставленных в формулы, жестко прив€зываютс€ к ним: при переименовании пользовательского —войства оно автоматически изменитс€ во всех формулах, где было применено. ѕри этом значени€ всех —войств вписываютс€ в формулы вручную, даже значени€ свойств типа Ќабор ѕараметров и стандартные параметры элементов (–асположение,  онструктивна€ ‘ункци€ и т. п.). ƒл€ большего удобства € рекомендую открыть вторую копию ARCHICAD дл€ копировани€ значений —войств.

»ногда бывает необходимо, чтобы значение —войства могло вычисл€тьс€ по формуле либо задаватьс€ вручную. ¬ —войствах элемента можно Ђразорватьї цепь дл€ ввода специального значени€ (рис. 6), но в таком случае, чтобы вернуть расчет —войства по формуле, надо будет вручную вернуть значение ѕо умолчанию, что неудобно. ¬ таких случа€х € делаю два свойства: свойство A с простым строковым значением (либо Ќабором ѕараметров) и значением по умолчанию Ђ-ї, чтобы задавать значение вручную; и свойство B с формулой:

IF (A<>Ф-Ф; A; {‘ќ–ћ”Ћј})

“о есть если дл€ свойства A задано какое-то значение, то B=A, иначе выполн€етс€ {‘ќ–ћ”Ћј}.

‘ормулы ARCHICAD 22

–ис. 6

ѕример 1: назначение предела огнестойкости стены в соответствии с ‘«-123

≈сли нужно сделать по-насто€щему сложную многоуровневую формулу, то не обойтись без рисовани€ схемы разветвленных условий, необходимой дл€ понимани€ логики построени€, подсчета количества и месторасположени€ закрывающих скобок. —ведение вычислени€ значени€ по некой таблице можно отнести именно к таким задачам и вообще выделить в отдельный класс задач при работе с формулами. ƒл€ примера хотел бы показать часть работы с таблицей (рис. 7) назначени€ предела огнестойкости строительных конструкций здани€ (таблица 21 из ‘«-123).
‘ормулы ARCHICAD 22

–ис. 7

»значально дл€ мен€ было очевидно, что признак предела огнестойкости (R, RE, E и т. д.) и непосредственно предел огнестойкости необходимо разделить на два —войства, поскольку это позволит значительно упростить формулы. —ледует определитьс€ с исходными данными: какие параметры уже есть в ARCHICAD, какие необходимо создать в качестве пол€ в »нформации о ѕроекте или пользовательского —войства, какие параметры задаютс€ автоматически, а какие вручную.

≈стественно, в такой формуле будут использоватьс€ стандартные параметры –асположение и  онструктивна€ ‘ункци€, и правильное их назначение приобретает большую важность. я создал свойство —тепень огнестойкости, которое может быть использовано и в формулах, и в общих данных проекта. ѕришлось создать пользовательское —войство принадлежности стены к лестничной клетке, так как стандартное —войство »м€ св€занной зоны прив€зывает стену к первой созданной зоне, примыкающей к стене, а следить за этим не всегда удобно (было бы здорово иметь в значении данного параметра список всех зон, примыкающих к стене, а не только первую размещенную зону).

“акже перед началом составлени€ формул следует определить общие закономерности назначени€ параметров и не пытатьс€ вычисл€ть формулами каждую €чейку. Ќапример, видно, что при V степени огнестойкости здани€ ни одна конструкци€ не нормируетс€, Ц и эту строку можно отсечь глобально, а далее дл€ наружных стен имеет значение только ответ на вопрос, I степень огнестойкости или нет. я составил схему формулы Ц как она выгл€дит в черновом варианте, показано на рис. 8.

‘ормулы ARCHICAD 22

–ис. 8

», наконец, на рис. 9 представлена оформленна€ схема с по€снени€ми дл€ данного материала.
‘ормулы ARCHICAD 22

–ис. 9

 ак видите, после чернового варианта схема немного изменилась Ц поначалу € забыл учесть, что иную огнестойкость имеют только внутренние стены лестничных клеток. ѕоэтому дл€ вы€влени€ ошибок необходимо провер€ть работу формул во всех возможных вариантах. ∆елательно, чтобы это делал человек, не занимавшийс€ непосредственно составлением формулы.

“акже обратите внимание, что после перебора всех возможных степеней огнестойкости стоит не просто ошибка, а указание на то, что степень огнестойкости задана неверно, то есть она не приведена совсем или имеет место ошибка (лишний пробел либо ненормативное значение). ѕодобным образом вы можете закладывать внутренние проверки в тело формулы, но, к сожалению, это возможно только дл€ типа данных Ђ—трокаї.

¬ результате получаетс€ формула, которую практически невозможно создать без серьезной предварительной подготовки и продумывани€ структуры:

IF ("—тена" = ""; "!ќЎ»Ѕ ј!";

IF (ѕредел огнестойкости <> " "; ѕредел огнестойкости;

IF (ƒлина Ћинии ѕрив€зки <> ƒлина Ћинии ѕрив€зки; "!ќЎ»Ѕ ј!";

IF (—тепень огнестойкости = "V"; "Ќе нормируетс€";

IF ( онструктивна€ ‘ункци€ = "Ќесущий Ёлемент";

IF (—тепень огнестойкости = "I"; "120";

IF (—тепень огнестойкости = "II"; "90";

IF (—тепень огнестойкости = "III";

IF (AND (Ћ _ онструкции = TRUE; –асположение = "—наружи"); "60"; "45");

IF (—тепень огнестойкости = "IV";

IF (AND (Ћ _ онструкции = TRUE; –асположение = "—наружи"); "45"; "15"); "! —тепень огнестойкости задана неверно!"))));

IF (–асположение = "—наружи";

IF (—тепень огнестойкости = "I"; "30"; "15"); "Ќе нормируетс€"))))))


я подписал формулу, так как данное свойство планируетс€ расширить дл€ всех необходимых типов элементов. —оздано дублирующее свойство ѕредел огнестойкости на случай необходимости задать значение степени огнестойкости вручную. «адано свойство, ограничивающее применение формулы только дл€ стен.

 онечно, хотелось бы, чтобы формирование формул происходило в графическом интерфейсе создани€ схемы, что соответствует ве€ни€м времени и росту попул€рности программ параметризации с графическим интерфейсом Ц например Grasshopper. ѕри этом создаетс€ ощущение, что подобные формулы выход€т за пределы тех возможностей, которые предполагались разработчиками дл€ данного инструмента, и в результате дальнейшего развити€ формулы будут становитьс€ только удобнее.

ѕосле составлени€ формулы по€вл€етс€ желание подключить графическую замену дл€ визуального контрол€ результатов, но тут мы встречаем программное ограничение. —войства со сложными формулами не могут участвовать в критери€х графической замены, однако тут можно воспользоватьс€ способом, который был продемонстрирован в выступлении »гор€ ёрасова на конференции в  иеве. —оздаетс€ »нтерактивный  аталог с уникальными ID элементов, у которых —войство предела огнестойкости, например, равно 90; далее данный каталог сохран€етс€ в TXT-формат, и из этого текстового файла список GUID копируетс€ в специально подготовленное поле в »нформации о ѕроекте, которое выполн€ет роль буфера данных. ƒалее создаетс€ новое —войство с простой формулой:

CONTAINS (”никальный ID;!ѕЅ 90!; FALSE),

где !ѕЅ 90! Ц это созданное поле в »нформации о ѕроекте, и формула провер€ет, находитс€ ли GUID элемента в этом списке. ѕоле в »нформации о ѕроекте и —войство с проверкой GUID необходимо будет создать дл€ каждого возможного результата значени€ исходного —войства предела огнестойкости.

— помощью ёри€ ÷епова из Labpp € смог автоматизировать операцию записи GUID элементов в »нформацию о ѕроекте. ѕосредством скрипта на C++ (GUID предел огнестойкости.cpp в приложенном архиве *) при нажатии одной кнопки в бесплатном расширении Goodwin GDL от Labpp (либо в любом платном решении от этой компании) € записываю списки GUID элементов по заданным характеристикам в предварительно созданные пол€ »нформации о ѕроекте. ¬ итоге можно получить результат, показанный на рис. 10.

‘ормулы ARCHICAD 22

–ис. 10

¬озможно, предложенна€ структура формулы будет мной дорабатыватьс€ либо вы найдете более из€щное решение. ћожет показатьс€, что описанные мной действи€ неверо€тно сложны и сильно тормоз€т процесс создани€ модели, но на самом деле всЄ, о чем € пишу, в основном требует лишь однократной настройки в шаблоне и некоторого навыка в процессе создани€ модели, но в результате у вас будет по€вл€тьс€ действительно интерактивна€ BIM-модель, а не 3D-макет.

ѕример 2: наименование окон по √ќ—“ 23166-99

’очу сразу оговоритьс€, что есть правило наименовани€ в общем √ќ—“е на окна и несколько отличающихс€ типов наименований в √ќ—“ах на оконные блоки из различных материалов. я сформулировал дл€ себ€ усредненный вариант.

¬ св€зи с тем что в формулах пока нельз€ использовать параметры библиотечных элементов, пришлось создать несколько —войств типа Ќабор ѕараметров дл€ выбора материала окна и типа открывани€. “акже создан параметр сопротивлени€ теплопередаче окна и набор —войств типа  ритерий —оответстви€ дл€ дополнительных опций (фрамуга, клапаны и т. п.). ћожет показатьс€, что здесь присутствует слишком много исходных параметров, задаваемых вручную, но, во-первых, в ходе развити€ формул количество таких параметров будет сокращатьс€, а база, созданна€ сейчас, будет использоватьс€. ¬о-вторых, наиболее часто используемые типы окон можно сохранить в »збранном.   тому же раньше приходилось регул€рно свер€тьс€ с нормами дл€ определени€ √ќ—“а на конкретный материал окна или кода той или иной опции окна (‘р Ц фрамуга,    Ц климатический клапан и т. д.), а теперь можно просто выставить галочки напротив элементов, необходимых в окне (рис. 11).

‘ормулы ARCHICAD 22

–ис. 11

—войство сопротивлени€ теплопередаче установлено по умолчанию (и примен€етс€ дл€ всех окон проекта) на минимально допустимом значении дл€ проектируемого региона. ¬ дальнейшем, если заказчик решит улучшить параметры дома и повысить эффективность окон, можно изменить значение по умолчанию в ћенеджере —войств, и это изменение распространитс€ на весь проект. ѕри этом какие-то отдельные окна (например, технических помещений), дл€ которых вы задали специальное значение, останутс€ неизменными.

ƒл€ свойств данной группы необходимо задать доступность  лассов Ц в моем случае Ђќкної и ЂЅалконна€ дверьї.

¬ процессе присвоени€ наименований нам, по сути, надо заполнить два пол€ спецификации: Ђќбозначениеї и ЂЌаименованиеї. ƒл€ первого значени€ используетс€ несложна€, но многоуровнева€ формула подбора номера √ќ—“а в зависимости от материала окна:

IF (OR (ѕризнак предела огнестойкости_‘ <> " "; ќ _ћатериал = "»ндивидуальный"); "»ндивидуальный";

IF (ќ _ћатериал = "ѕ¬’"; "√ќ—“ 30674-99";

IF (ќ _ћатериал = "јлюминий"; "√ќ—“ 21519-2003";

IF (ќ _ћатериал = "ƒерево + стеклопакет"; "√ќ—“ 24700-99";

IF (ќ _ћатериал = "ƒерево + стекло"; "√ќ—“ 11214-2003";

IF (ќ _ћатериал = "ƒерево мансарда"; "√ќ—“ 30734-2000";

IF (ќ _ћатериал = "«ащитное"; "√ќ—“ 31462-2011"; "!ћатериал задан неверно!")))))))


¬ своей работе € не задаю конкретного производител€ противопожарных дверей, поэтому первым делом идет проверка на выполнение одного из условий: либо задано свойство ѕризнак предела огнестойкости_‘, либо параметр ќ _ћатериал имеет значение "»ндивидуальный" и при выполнении одного из условий ќбозначение тоже становитс€ "»ндивидуальный". ¬ противном случае начинаетс€ подбор √ќ—“а в зависимости от тех значений, которые € задал дл€ свойства ќ _ћатериал . ѕосле перебора всех возможных значений ќ _ћатериал вставлено проверочное значение Ц на случай ошибочно заданного пользовательского свойства, о чем € говорил выше.

ЂЌаименованиеї Ц более сложный параметр, и € решил разбить его на несколько составл€ющих свойств, которые также определ€ютс€ по формулам.

¬начале определ€етс€ вид издели€ (ќ _1_¬ид):

IF ( OR ( ѕризнак предела огнестойкости_‘ <> " "; ќ _ћатериал = "»ндивидуальный" ); "ќконный блок";

CONCAT (IF ( Ћј——»‘» ј÷»я мо€ - 22 = "Ѕалконна€ дверь"; "Ѕ";

IF ( Ћј——»‘» ј÷»я мо€ - 22 = "Ѕалконна€ дверь"; "ќ"; У!ќшибка  лассификации!Ф);

IF (ќ _ћатериал = "ѕ¬’"; "ѕ ";

IF (ќ _ћатериал = "јлюминий"; "ј  ";

IF (ќ _ћатериал = "ƒерево + стеклопакет"; "ƒ";

IF (ќ _ћатериал = "ƒерево + стекло"; "ƒ";

IF (ќ _ћатериал = "ƒерево мансарда"; "ƒ ћјЌ—ј–ƒЌќ≈";

IF (ќ _ћатериал = "«ащитное"; "ѕ защитный"; "!ћатериал задан неверно!"))))))))


ѕрежде всего € снова провер€ю, задан ли предел огнестойкости окна либо материал Ц "»ндивидуальный". ≈сли первое условие не выполнено, то в зависимости от одной из двух возможных классификаций задаетс€ код вида издели€ (оп€ть с проверкой в конце). ‘ункцией CONCAT код вида издели€ объедин€етс€ с кодом материала издели€, подбираемым в зависимости от значени€ ќ _ћатериал.

ƒалее описываем конструкцию окна (ќ _02_ онструкци€ обща€):

IF (OR (ѕризнак предела огнестойкости_‘ <> " ";

ќ _ћатериал = "»ндивидуальный"); "";

IF (ќ _06_«аполнение = ""; "ќ";

IF (ќ _ћатериал = "ƒерево мансарда"; "-1"; "ќ—ѕ")))


—нова начинаем с проверки окна на индивидуальность. ¬ ином случае, если последующее —войство заполнени€ окна не задано, вписываем код одинарного остеклени€. ƒалее выбираем между конструкцией со среднеповоротным открыванием мансардного окна (по √ќ—“ 30734-2000) или одинарной конструкцией со стеклопакетом.

¬ этой формуле нагл€дно видно, что € не стал перебирать все возможные конструкции окон, а ограничилс€ только теми вариантами, которые встречаютс€ в моей работе.

ƒалее идет, казалось бы, простое —войство размера (ќ _03_–азмеры), но на случай, если по каким-то причинам мне понадобитс€ классифицировать Ѕиблиотечный объект как ќкно, в это свойство добавлены две формулы.

ѕерва€ дл€ собственно окна:

IF ("ќкно" = ""; "!ќЎ»Ѕ ј!";

SUBSTITUTE (CONCAT (STRCALCUNIT (Ўирина); "-"; STRCALCUNIT (¬ысота);

IF ( Ћј——»‘» ј÷»я мо€ - 22 = "Ѕалконна€ дверь"; ќриентаци€; "")); " "; ""))


¬начале подпись формулы. ƒалее функцией CONCAT объедин€ютс€ Ўирина, символ тире и ¬ысота; в случае, если объект классифицирован как Ѕалконна€ дверь, то к размерам добавл€етс€ обозначение ориентации открывани€.  аждый параметр Ћинейного размера перед объединением необходимо перевести в —троку функцией STRCALCUNIT, так как объедин€тьс€ могут только строковые значени€.

¬ ARCHICAD настройка отображени€ чисел (деление на группы по три цифры) задаетс€ через настройки Windows ѕанель управлени€ → –егиональные стандарты → ƒополнительные параметры → √руппировка цифр по разр€дам. ¬ формулах ARCHICAD 22 изменение данной настройки не мен€ет группировку цифр по разр€дам, поэтому пришлось исключить пробелы между разр€дами цифр, причем функци€ TRIM не удал€ет эти пробелы и их пришлось копировать и вставл€ть в формулу дл€ замены символа разделител€ разр€дов на ничто (пара кавычек, сто€щих вплотную друг к другу) функцией SUBSTITUTE.

¬тора€ формула в этом свойстве Ц дл€ Ѕиблиотечного элемента:

IF ("ќбъект как ќкно" = ""; "!ќЎ»Ѕ ј!";

SUBSTITUTE (CONCAT (STRCALCUNIT (ƒлина (A)); "-"; STRCALCUNIT (¬ысота)); " "; ""))


ƒанна€ формула, по сути, повтор€ет предыдущую, но параметр Ўирина заменен на параметр Ѕиблиотечного элемента ƒлина (A).

«атем под —войством € прописываю коды дополнительных опций окна (ќ _04_ онструкци€_ƒетали):

IF (OR (ѕризнак предела огнестойкости_‘ <> " "; ќ _ћатериал = "»ндивидуальный"); "";

TEXTJOIN (" "; TRUE; IF ( ќ _‘орточка = TRUE; "‘"; "");

IF (ќ _‘рамуга = TRUE; "‘р"; "");

IF (ќ _ лапан вентил€ционный = TRUE; "¬ "; "");

IF (ќ _ лапан климатический = TRUE; "  "; "");

IF (ќ _—истема самовентил€ции = TRUE; "—¬"; "");

IF (ќ _—истема безопасности = TRUE; "—Ѕ"; "");

IF (ќ _ќткрывание = "ѕоворотно-откидное"; "ѕќ";

IF (ќ _ќткрывание = "ѕараллельно-выдвижное"; "ѕ¬"; ""))))


ƒл€ начала идет уже привычна€ проверка на индивидуальное окно. ¬ принципе можно было вынести эту проверку в отдельное подсвойство и вставл€ть его в каждую формулу, но € решил, что тут и так достаточно свойств. ƒалее коды опций окна (‘рамуга, ‘орточка и т. п.) объедин€ютс€ в строку, если их значение соответствует TRUE. ¬ конце идет перебор типа открывани€, из тех что использую €. ќбъединение кодов выполнено функцией TEXTJOIN, котора€ позвол€ет задать символ-разделитель и игнорировать пустые значени€ объедин€емых элементов.

ѕоследние подсвойства (ќ _05_ ласс и ќ _06_«аполнение) имеют одинаковую структуру и подпирают значение в зависимости от значени€ свойства ќ _R:

IF (OR (ѕризнак предела огнестойкости_‘ <> " "; ќ _ћатериал = "»ндивидуальный"); "";

IF (ќ _R = 0; "";

IF (ќ _R >= 0,8; "ј1";

IF (ќ _R >= 0,75; "ј2";

IF (ќ _R >= 0,7; "Ѕ1";

IF (ќ _R >= 0,65; "Ѕ2";

IF (ќ _R >= 0,6; "¬1";

IF (ќ _R >= 0,55; "¬2";

IF (ќ _R >= 0,5; "√1";

IF (ќ _R >= 0,45; "√2";

IF (ќ _R >= 0,4; "ƒ1";

IF (ќ _R >= 0,35; "ƒ2"; ""))))))))))))


ѕо очереди € отсекаю значени€ R (сопротивление теплопередаче) в соответствии с п. 4.7.1 √ќ—“ 23166-99. ‘ормула дл€ подбора стеклопакета выгл€дит так же, только вместо значений класса указываютс€ обозначени€ стеклопакетов, которые вы примен€ете, и их значение R.

», наконец, —войство ќ _Ќј»ћ≈Ќќ¬јЌ»≈ собирает вычисленные подсвойства в единое наименование:

TRIM (TEXTJOIN (" "; TRUE; ќ _01_¬ид; ќ _02_ онструкци€ обща€; ƒ/ќ _01_ќписание_Ќачало; ќ _03_–азмеры; ќ _04_ онструкци€_ƒетали; ќ _05_ ласс; ќ _06_«аполнение; ƒ/ќ _02_ќписание_ онец; CONCAT (ѕризнак передела огнестойкости_‘; ѕредел огнестойкости_‘)))


«начени€ дл€ —войств просто объедин€ютс€ функцией TEXTJOIN, и дополнительно функцией TRIM убираютс€ пробелы, на вс€кий случай. —войства ƒ/ќ _01_ќписание_Ќачало и ƒ/ќ _02_ќписание_ онец Ц это просто строковые пользовательские —войства, на случай если мне надо добавить какое-то описание к окну или двери в начале или конце наименовани€.

¬ результате »нтерактивный  аталог заполнени€ оконных проемов выгл€дит так, как показано на рис. 12.

‘ормулы ARCHICAD 22

–ис. 12

¬ левой части находитс€ непосредственно спецификаци€, предназначенна€ дл€ размещени€ на листе, а столбцы правой части с зачеркнутыми заголовками размещены дл€ управлени€ наименованием пр€мо из »нтерактивного  аталога и обрезаютс€ при размещении в ћакете.

–езультат рассмотренной автоматизации можно включить в графическую замену без дополнительных ухищрений, посредством свойства ќ _ћатериал (рис. 13).

‘ормулы ARCHICAD 22

–ис. 13

¬ заключение еще раз повторюсь, что представленный материал дан дл€ понимани€ принципов работы нового инструмента и не претендует на точное соответствие нормативным требовани€м, хот€ и вполне удовлетвор€ет моим потребност€м при работе.

ѕример 3: подбор площади сечени€ вентканала в квартире

¬ этом примере € хотел бы продемонстрировать автоматизацию выполнени€ задани€ отдела ќ¬ по подбору площади канала естественной вентил€ции в квартирах Ц с использованием формул, расширени€ Labpp_ вартирографи€ и новой функции ARCHICAD: пользовательска€ ¬ыносна€ Ќадпись.

ѕри выполнении многих объектов € подолгу ждал выдачи задани€ от раздела ќ¬ по требуемым площад€м каналов естественной вентил€ции в квартирах (наши заказчики не хот€т использовать какие-то стандартные сборные вентканалы). » вот, наконец, смог получить некое универсальное задание (рис. 14).

‘ормулы ARCHICAD 22

–ис. 14

”видев эти таблицы, € загрустил и сел думать, что мне с этим делать. Ќе хочу обсуждать правильность этих расчетов и саму суть задани€, поскольку так и не сумел добитьс€ ссылок на конкретные нормы, четко регламентирующие этот расчет.

ѕо сути же, мне нужно определить тип квартиры, исход€ из расположени€ и количества санузлов; это € могу сделать только вручную.  оличество жилых этажей в проектируемой секции и количество этажей с коммерческими площад€ми € тоже не придумал, как автоматизировать, Ц тем более что в одном проекте может быть несколько секций с разными показател€ми. “акже вручную пришлось вводить количество зон (или групп) градаций площади вентканала по вертикали, так как иногда делаютс€ две градации, иногда четыре, а иногда едина€ площадь на всю высоту. ¬ результате у мен€ получилс€ набор свойств, представленный на рис. 15.

‘ормулы ARCHICAD 22

–ис. 15

¬се эти —войства доступны дл€  ласса Ђјннотированиеї Ц его € создал сам дл€ маркеров квартир, которые поставл€ютс€ в составе расширени€ Labpp_ вартирографи€. ¬ целом это приложение расшир€ет возможности формул в ARCHICAD, поскольку формулы рассчитываютс€ на уровне отдельного элемента, а приложение сводит площади множества зон в один объект, разбивает их по группам и позвол€ет производить расчеты с этими данными. “олько необходимо перенести значение —войств библиотечного объекта в пользовательские —войства в ћенеджере —войств. ƒл€ таких целей в составе аддона поставл€етс€ специальный скрипт, который €, реша€ данную задачу, подкорректировал дл€ переноса жилой площади квартиры в ѕользовательское свойство.

–ассмотрим последовательность подбора вентканала. ƒл€ начала моделируем квартиру, размещаем «оны и прив€зываем их к ћаркеру квартиры. ѕодробно работу аддона квартирографии € показывал в специализированном вебинаре. «апускаем скрипт (S жила€ OP-UP.cpp в приложенном архиве *) и переносим жилую площадь квартиры в ѕользовательское свойство S жила€ (рис. 16).

‘ормулы ARCHICAD 22

–ис. 16

ƒалее нужно вручную выбрать “ип  ¬ дл€ вентканала, задать  ол-во жилых этажей и є первого жилого этажа. » тут по€вл€етс€ проблема: € должен либо помнить наизусть типы квартиры, либо открывать какую-то справку. ѕомочь может нова€ функци€ создани€ пользовательской выноски. ¬ы можете начертить с помощью линий, полилиний и штриховок то, что вам нужно вставить в требуемых местах в текст либо автотекст, а затем при помощи команды ƒокумент → јннотаци€ → ¬ыносна€ Ќадпись сохранить нарисованное и использовать его как ¬ыносную Ќадпись. ” мен€ получилась така€ ¬ыносна€ Ќадпись дл€ помощи в подборе вентканала (рис. 17).
‘ормулы ARCHICAD 22

–ис. 17

¬ левой части показана подсказка по выбору типа квартиры. ƒальше идет вертикальный текст выбранного типа и, наконец, три значени€ площадей вентканалов дл€ разных помещений.

≈сли посмотреть на таблицы исходного задани€, становитс€ видно, что в зависимости от жилой площади подбираетс€ не площадь канала, а его тип. ѕоэтому дл€ каждой квартиры рассчитываютс€ все типы каналов, а уже в зависимости от типа квартиры и жилой площади подбираетс€ конкретный тип канала в свойства S канала  ухни, S канала —/у-L, S канала —/у-S.

–ассмотрим расчет площади канала на примере свойства дл€ типа I (S канала I):

IF (є этажа расположени€ >  ол-во жилых этажей; "!!!Ётажность меньше текущего этажа!!!";

IF ( ол-во жилых этажей <= 7; "0,067";

IF ( ол-во жилых этажей <= 13;

IF ( ол-во зон = "1"; "0,133";

IF (OR ( ол-во зон = "2";  ол-во зон = "3/4");

IF (є этажа расположени€ <= 7; "0,067"; "0,133"); "!ќшибка количества зон!"));

IF ( ол-во жилых этажей <= 21;

IF ( ол-во зон = "1"; "0,222";

IF ( ол-во зон = "2"; IF (є этажа расположени€ <= 13; "0,133"; "0,222");

IF ( ол-во зон <> "3/4"; "!ќшибка количества зон!";

IF (є этажа расположени€ <= 7; "0,067";

IF (є этажа расположени€ <= 13; "0,133"; "0,222")))));

IF ( ол-во жилых этажей > 25; "! оличество этажей больше расчетных 25!";

IF ( ол-во зон = "1"; "0,267";

IF ( ол-во зон = "2"; IF (є этажа расположени€ <= 13; "0,133"; "0,267");

IF ( ол-во зон <> "3/4"; "!ќшибка количества зон!";

IF (є этажа расположени€ <= 7; "0,067";

IF (є этажа расположени€ <= 13; "0,133";

IF (є этажа расположени€ <= 19; "0,222" ; "0,267" )))))))))))


¬начале идет проверка правильности ввода исходных данных, то есть чтобы количество этажей было больше, чем этаж расположени€, который рассчитываетс€ по формуле (є этажа расположени€):

Ќомер —обственного Ётажа Ц (є первого жилого этажа Ц 1)


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

ƒалее в формуле расчета площади вентканала идет перебор значений из таблицы в зависимости от количества жилых этажей в доме и этажа расположени€ квартиры. ≈сли количество этажей в доме не превышает семи, то площадь канала минимальна и одинакова на всех этажах. ≈сли этажей от 8 до 13, то уже возможны варианты единой зоны вентканалов и, соответственно, их одинаковой площади, либо градаци€ площадей каналов по двум группам этажей (до 7 и выше). ƒл€ этажности от 14 до 21 этажа возможны уже три варианта градации площадей вентканалов (одна, две и три зоны). ƒл€ общего количества этажей 22-25 возможны градации площадей каналов на одну, две, четыре зоны. ѕоэтому последнее возможное значение  ол-во зон соответствует Ђ3/4ї.

≈сли общее количество этажей превышает 25, то либо это значение задано ошибочно, либо дом выходит за пределы расчетных параметров исходного задани€ и требует дополнительного расчета, о чем в формулу также помещено предупреждение. “ак как у свойства  ол-во зон только три значени€ (1, 2 и 3/4), то на вс€кий случай добавлена проверка на правильность значени€ данного свойства, хот€ оно и имеет тип Ќабор ѕараметров. я стараюсь формировать формулы таким образом, чтобы в конце было как можно меньше чередующихс€ данных и закрывающих скобок Ц так мне удобнее ориентироватьс€ в формуле. јналогичным образом подбираютс€ площади каналов типа II и III.

ѕодбор типа вентканала рассмотрю на примере канала кухни (S канала  ухни):

IF (S жила€ = 0; "!!!Ќ≈“ ∆»Ћќ… ѕЋќўјƒ»!!!";

IF (“ип  ¬ дл€ вентканала = " "; "¬ыберите “ип  ¬ дл€ вентканала";

IF (OR (“ип  ¬ дл€ вентканала = "1"; “ип  ¬ дл€ вентканала = "3");

IF (S жила€ <= 50; S канала I; S канала III);

IF (“ип  ¬ дл€ вентканала = "2";

IF (S жила€ <= 63; S канала I; S канала III ); "!ќшибка типа квартиры!"))))


¬начале идет проверка переноса жилой площади из параметров объекта маркера в пользовательское —войство. «атем проверка назначени€ типа квартиры. », наконец, следует перебор значений из исходной таблицы в зависимости от жилой площади и типа квартиры.

—тоит отметить, что исходные данные (количество этажей и этаж расположени€) можно вносить сразу дл€ всех маркеров этажа. —крипт также переносит значени€ жилой площади дл€ всех маркеров в проекте. ¬ итоге можно пакетно нанести подготовленные выноски дл€ всех маркеров квартир на этаже (команда ƒокумент → јннотаци€ → Ќанести ¬ыносные Ќадписи дл€ выбранных Ёлементов) и зан€тьс€ расстановкой вентканалов.

¬ентканал у мен€ представл€ет собой группу элементов: стены с отверсти€ми, Ѕиблиотечный элемент разделени€ заборного канала, профилированной колонны из прозрачного материала с высоким приоритетом пересечени€, и ¬ыносна€ Ќадпись со свойством S  јЌјЋј. Ёто —войство надо сравнивать с минимальной площадью из задани€ ќ¬, котора€ имеет три знака после зап€той. „тобы не переключатьс€ между точностью отображени€ площадей, € решил попытатьс€ реализовать это с помощью формул. —начала € рассчитываю площадь колонны со сдвигом зап€той на три знака вправо (S канала_чернова€) (рис. 18).

‘ормулы ARCHICAD 22

–ис. 18

SPLIT (STRCALCUNIT (“олщина / ƒиаметр ядра * Ўирина ядра * 1000)); ","; 1)

ѕеред переводом в строковое значение отсекаю дробную часть (зап€тую и всЄ, что правее нее) площади функцией SPLIT. ј затем уже мен€ю отображение получившегос€ значени€ как дробь с трем€ знаками после зап€той, использу€ то, что ARCHICAD 22 не убирает пробелы между разр€дами чисел в формулах (о чем € говорил выше):

IF (CONTAINS ( " "; S канала_чернова€ ); SUBSTITUTE ( S канала_чернова€; " "; "," );

CONCAT ( "0,"; S канала_чернова€ ) )


¬ данной формуле применены только функции преобразовани€ текста. “аким образом, если S канала_чернова€ имеет больше трех цифр, то в ней есть пробел и € его замен€ю на зап€тую, иначе ставлю в начало строки У0,Ф. ƒанное решение абсурдно, антинаучно и не универсально (например будет некорректно работать с площад€ми, имеющими больше шести знаков), но работает и показывает, что довольно нестандартные задачи можно решить, если мыслить шире.

ќчевидно, что результат далек от полной автоматизации, Ц по сути, € просто убрал из процесса проектировани€ работу с таблицами и уменьшил возможность ошибки при подборе минимальных значений площади вентканала. ќп€ть же хочу уточнить: € не доказываю, что исходное задание абсолютно верно, и не призываю точно следовать моим формулам. я хочу показать общие принципы того, как, если один раз хорошо подумать, можно автоматизировать рутинные задачи.

«аключение

‘ормулы Ц это серьезный шаг ARCHICAD на пути автоматизации насыщени€ модели информацией. “о, что раньше выполн€лось только через неочевидные инструменты IFC-схем (объединение нескольких параметров в строку), теперь доступно напр€мую из ћенеджера —войств. “о, что раньше требовало выгрузки в Excel с последующей обработкой (вычисление процента жилой площади от общей площади квартиры или квартир на этаже), теперь может вычисл€тьс€ автоматически пр€мо в ARCHICAD и отображатьс€ в ¬ыносных Ќадпис€х или »нтерактивном  аталоге. “о, что раньше могло назначатьс€ только вручную (предел огнестойкости конструкций), теперь может рассчитыватьс€ автоматически.

ќбласть применени€ формул уже сейчас довольно широка, особенно в комплексе со сторонними расширени€ми, а с развитием этого инструмента будет ограничена только воображением пользовател€.

¬ заключение хотелось бы отметить следующее: кому-то может показатьс€, что всЄ, изложенное мной, мало похоже на то, чем привык заниматьс€ архитектор. Ќо професси€ архитектора всегда была сопр€жена с необходимостью знаний во множестве смежных специальностей, и программирование Ц лишь еще одна из них. язык программировани€ Ц это международный €зык нового времени, наравне с английским, и, отказыва€сь от изучени€ хот€ бы базовых принципов программировани€, вы фактически отказываетесь от саморазвити€.

Ђ...приходитс€ бежать со всех ног, чтобы только остатьс€ на том же месте, а чтобы попасть в другое место, нужно бежать вдвое быстрееї (Ћьюис  эрролл, Ђјлиса в «азеркальеї).


(*) ‘айл примера и скрипты дл€ работы (zip, 37MB)



¬акансии:

јктуальное обсуждение

RSS-лента комментариев

ƒавид Ћевин
ƒавид Ћевин
ќт редактора: ¬ы€снилось, что первое российское BIM-решение полного цикла по€вилось уже 11 лет назад
ѕроект ЂЌародное —јѕ–-интервьюї

—лучайна€ стать€:

ќбзор рынка аналогов AutoCAD (2019 год) — –альф √рабовски (26 июл€ 2019)
isicad Top 10

—амые попул€рные материалы

   ‘орумы isicad:

isicad-2010 isicad-2008
isicad-2006 isicad-2004

ќ проекте

ѕриглашаем публиковать на сайте isicad.ru новости и пресс-релизы о новых решени€х и продуктах, о проводимых меропри€ти€х и другую информацию. јдрес дл€ корреспонденции - info@isicad.ru

ѕроект isicad нацелен на

  • укрепление контактов между разработчиками, поставщиками и потребител€ми промышленных решений в област€х PLM и ERP...
ѕодробнее

»нформаци€ дл€ рекламодателей


¬се права защищены. © 2004-2019 √руппа компаний «Ћ≈ƒј—»

ѕерепечатка материалов сайта допускаетс€ с согласи€ редакции, ссылка на isicad.ru об€зательна.
¬ы можете обратитьс€ к нам по адресу info@isicad.ru.