![](/o/adaptive-media/image/3725513/preview-1000px-lite/STEPbySTEP_TUBES_MR_ph.MAXZAMBELLI11+copia.jpg?t=1568631184014)
![](/documents/77789/3725512/STEPbySTEP_TUBES_MR_ph.MAXZAMBELLI11+copia.jpg/c0cca8eb-658b-d54c-4148-142468c4b2f5?t=1568631184014)
Untitled Article
Alberto Meda progetta il calorifero di design Step by Step per la collezione Elements di Tubes. Un corpo in alluminio che sembra in movimento con i suoi moduli ellittici plissettati che creano suggestivi giochi di luce ed effetti visivi.
![](/documents/77789/3725512/STEPbySTEP_TUBES_MR_ph.MAXZAMBELLI12+copia+%281%29.jpg/7bd0fae0-3b96-afef-4401-15130e69d27a?t=1568631184089)
Il concept che ha guidato Alberto Meda nella progettazione è stato quello di partire da un solido corpo in alluminio la cui superficie si articola in moduli ellittici plissettati, inclinati verso destra oppure verso sinistra. A seconda della loro disposizione e della prospettiva dell'osservatore, si creano suggestivi giochi di luce ed effetti visivi che suscitano emozioni completamente diverse: da un leggero senso di movimento fino all'architettonico-monumentale.
![](/documents/77789/3725512/STEPbySTEP_TUBES_MR_ph.MAXZAMBELLI9+copia.jpg/554e0c50-2dc2-6e99-0f66-8accc562b371?t=1568631184253)
Un’altra caratteristica importante di Step by Step è le flessibilità nella composizione che lo rende adatto alle più diverse esigenze progettuali. Il modulo base può essere installato singolarmente o posizionato a fianco di un altro modulo, creando così quattro configurazioni che lo rendono ideale sia per ampi spazi nei quali si voglia inserire una presenza decorativa importante, sia per ambienti ristretti, nei quali il limitato ingombro (il calorifero sporge solo 7,8 cm dalla parete) fa guadagnare spazio agli interni.
![](/documents/77789/3725512/STEPbySTEP_TUBES_MR_ph.MAXZAMBELLI3+copia.jpg/9183cb52-76d0-a5d1-8679-5386245c42a7?t=1568631184290)
Step-by-Step è disponibile in versione idraulica, elettrica e mista. Il riscaldamento avviene in due modi: per radiazione, cioè irraggiando direttamente il calore attraverso l'ampia superficie di scambio termico, e per convezione naturale, grazie all'aria calda che lo attraversa dal basso verso l'alto.
![](/documents/77789/3725512/STEPbySTEP_TUBES_MR_ph.MAXZAMBELLI13+copia.jpg/5c0b372d-7c45-6951-8d33-a95148dfcd34?t=1568631184325)
Step-by-Step inoltre, può essere accessoriato con portasalviette e appendino, per l'applicazione nell'ambiente bagno ed è disponibile in diversi colori tra cui bianco, grigio alluminio, grigio antracite metalizzato, marrone rame e avorio, oltre alle possibili personalizzazioni dei colori opachi della gamma Tubes.
![](/documents/77789/3725512/STEPbySTEP_TUBES_MR_ph.MAXZAMBELLI10+copia+%282%29.jpg/708bb827-c322-2b39-45d3-8e76e450d726?t=1568631184358)
Gallery
The following has evaluated to null or missing: ==> value_list[seq_index] [in template "20101#20127#2776835" at line 127, column 62] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign key_value = value_list[seq_in... [in template "20101#20127#2776835" at line 127, column 41] ----
1<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") />
2<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
3<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") />
5
6<#--
7Mostro il titolo del portlet qui
8-->
9<#assign languageId = themeDisplay.getLanguageId()>
10<#assign propertyKey = "portletSetupTitle_"+languageId>
11
12<#assign title = "">
13<#assign counter = 1>
14
15<#if portletPreferences?has_content>
16 <#list portletPreferences?keys as key>
17
18 <#if key == propertyKey>
19 <#assign values = portletPreferences[key] />
20 <#if values?has_content>
21 <#list values as value>
22 <#assign title = value>
23 </#list>
24 </#if>
25 </#if>
26
27 </#list>
28</#if>
29
30<#assign size = 0>
31
32<#list entries as curEntry>
33 <#assign renderer = curEntry.getAssetRenderer() >
34 <#assign className = renderer.getClassName() >
35 <#if className == "com.liferay.journal.model.JournalArticle">
36 <#assign article = renderer.getArticle() >
37
38 <#assign currentArticleAssetEntryId = curEntry.getEntryId() />
39 <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
40
41 <#assign relatedDesigner = "" />
42
43 <#list currentArticleRelatedLinks as related_entry>
44
45 <#assign relatedAssetEntryId = related_entry.getEntryId1() />
46
47 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
48
49 <#assign relatedGroup = groupLocalService.getGroup(relatedAssetEntry.groupId) />
50
51 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
52
53 <#assign relatedArticle = journalArticleLocalService.fetchLatestArticle(relatedAssetEntryPrimKey)!'' />
54
55 <#if relatedArticle?has_content>
56
57 <#assign relatedArticleStructureKey = relatedArticle.getDDMStructure().getStructureKey() />
58
59 <#if relatedArticleStructureKey = "DESIGNER-PROFILE">
60
61 <#assign size = size + 1>
62
63 </#if>
64
65 </#if>
66 </#list>
67 </#if>
68</#list>
69
70<#if (size > 0) >
71 <h2 class="portlet-title-text">${title}</h2>
72</#if>
73
74<#-- un ARTICLE può essere legato a un DESIGNER, un COMPANY, un SHOWCASE -->
75
76<#list entries as curEntry>
77
78 <#assign renderer = curEntry.getAssetRenderer() >
79 <#assign className = renderer.getClassName() >
80 <#if className == "com.liferay.journal.model.JournalArticle">
81 <#assign article = renderer.getArticle() >
82
83 <#assign currentArticleAssetEntryId = curEntry.getEntryId() />
84 <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
85
86 <#assign relatedDesigner = "" />
87
88 <#list currentArticleRelatedLinks as related_entry>
89
90 <#assign relatedAssetEntryId = related_entry.getEntryId1() />
91
92 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
93
94 <#assign relatedGroup = groupLocalService.getGroup(relatedAssetEntry.groupId) />
95
96 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
97
98 <#assign relatedArticle = journalArticleLocalService.fetchLatestArticle(relatedAssetEntryPrimKey)!'' />
99
100 <#if relatedArticle?has_content>
101
102 <#assign relatedArticleStructureKey = relatedArticle.getDDMStructure().getStructureKey() />
103
104 <#if relatedArticleStructureKey = "DESIGNER-PROFILE">
105
106 <#assign relatedDesigner = relatedArticle>
107
108 </#if>
109
110 </#if>
111 </#list>
112
113 <#if relatedDesigner?has_content>
114
115 <#assign relatedArticleId = relatedDesigner.getArticleId() />
116 <#assign articleGroupId = relatedDesigner.getGroupId() >
117
118 <#assign designer = journalArticleLocalService.getArticle(articleGroupId, relatedArticleId) />
119
120 <#assign designerFriendlyURL = "" />
121 <#assign designerFirendlyURLMap = designer.getFriendlyURLMap() />
122 <#assign key_list = designerFirendlyURLMap?keys/>
123 <#assign value_list = designerFirendlyURLMap?values/>
124 <#list key_list as key>
125 <#assign seq_index = key_list?seq_index_of(key) />
126 <#if seq_index != -1 >
127 <#assign key_value = value_list[seq_index]/>
128 <#if key == themeDisplay.getLocale()>
129 <#-- assign designerFriendlyURL = stringUtil.replace(key_value, "/-/", "") -->
130 <#assign designerFriendlyURL = key_value />
131 </#if>
132 </#if>
133 </#list>
134
135 <#assign hasLinkDesigner = false />
136 <#if designerFriendlyURL != "" >
137 <#assign hasLinkDesigner = articleLanguage.hasLanguageCategory(request, designer, themeDisplay.getScopeGroupId(), themeDisplay.getCompanyId(),
138 "/arkitube", true) && articleLanguage.isFriendlyURLCorrectLanguage(request, designer, themeDisplay.getLanguageId(),
139 designerFriendlyURL, themeDisplay.getScopeGroupId(), true, "/arkitube") />
140 </#if>
141
142 <#assign cssClassWrappDesigner = "mb-4" />
143 <#if (counter < entries?size)>
144 <#assign cssClassWrappDesigner = "mb-5" />
145 </#if>
146
147 <div class="${cssClassWrappDesigner}">
148 <#if hasLinkDesigner>
149 <a href="${assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, relatedAssetEntry, true)}">
150 </#if>
151 <@liferay_journal["journal-article"]
152 articleId="${relatedDesigner.getArticleId()}"
153 ddmTemplateKey="MINIMAL_DESIGNER_INFO"
154 groupId=articleGroupId />
155 <#if hasLinkDesigner>
156 </a>
157 </#if>
158 </div>
159
160 </#if>
161
162 </#if>
163
164 <#assign counter += 1>
165</#list>