Repository navigation
Expand file tree
/
Copy pathmaterial-reference.js
More file actions
32 lines (30 loc) · 8.09 KB
/
Copy pathmaterial-reference.js
File metadata and controls
32 lines (30 loc) · 8.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import {facadeColourReference} from './facade-colour-reference.js';
import {roofColourReference,roofCoatingAppearance} from './roof-colour-reference.js';
// Source identity is separate from unmeasured digital optical parameters.
export function referenceMaterial(material,role=''){
const n=(material.name||role).toLowerCase(),prior=material.userData??{};
let reference={identity:'Матеріал не визначений',source:null,brand:null,orderedProduct:null,appearance:'Показова фактура',approved:false};
if(prior.materialFamily==='decorative'||n.startsWith('decor_'))reference={...reference,identity:'Декор квартири',appearance:'Показовий декор за запитом; не обмір квартири',quantityEligible:false};
else if(prior.materialFamily==='insect_mesh')reference={...reference,identity:'Протикомахова сітка підшивки',source:'§5.4',appearance:'Відкрита сітка для огляду; виріб, колір, осередок і вентиляційна площа до погодження',quantityEligible:false};
else if(prior.materialFamily==='cement_particleboard')reference={...reference,identity:'Цементно-стружкова плита24mm',source:'арк16/17 PDF64/65',thicknessMM:24,appearance:'Показова структура; постачальник невідомий'};
else if(/^fc_p222/.test(n)||n==='board')reference={...reference,identity:'Cembrit Patina / Swisspearl · P222',source:'арк05/06 PDF53/54; §5.3/5.5',brand:'Cembrit Patina як приклад у записці; колір за легендою',thicknessMM:8,colour:facadeColourReference.P222,appearance:'Незмінений цифровий зразок виробника; фактура/партія потребують фізичного зразка'};
else if(n==='fc_p070'||n==='entrance_board')reference={...reference,identity:'Cembrit Patina / Swisspearl · P070',source:'арк05/06 PDF53/54',thicknessMM:8,colour:facadeColourReference.P070,appearance:'Незмінений цифровий зразок виробника; фактична партія невідома'};
else if(n.includes('pural')||['roof_steel','paintedmetal','entrance_metal','entrance_frame'].includes(n)||['BALCONY_STEEL_S355JR_C3','BALCONY_PURAL_FLASHING_0P6'].includes(prior.materialId))reference={...reference,identity:n==='roof_steel'?'Classic · PURAL0.6 · RR23':n==='entrance_frame'?'Утеплений алюмінієвий профіль · RR23':prior.materialId==='BALCONY_STEEL_S355JR_C3'?'S355JR · C3 · RR23':'Металевий елемент · RR23',source:'PDF53/54 легенда; §5.4/5.8',colour:roofColourReference,appearance:'Цифровий зразок RR23; блиск/фактура покриття показові',...(n==='roof_steel'?{thicknessMM:.6,profile:'32/475mm dimensional reference, not ordered click geometry'}:{})};
else if(['wood','timber','roof_timber','entrance_wood'].includes(n))reference={...reference,identity:'Деревина з просоченням',source:'VS-2; §5.5; арк12',treatment:'H3 для зовнішньої підконструкції; глибоке просочення виступів',strengthGrade:null,appearance:'Показова деревна фактура; порода/колір партії невідомі'};
else if(['wool','mineral_wool'].includes(n))reference={...reference,identity:'Мінеральна вата',source:'VS-2 фасад200mm; PP-1 насипна450mm',examples:['Isover Standard35: фасад λ≤.035','IsoverKV: PP-1 λ≤.041'],brand:null,appearance:'Показові волокна; конкретний виріб не замовлений'};
else if(['wind','windboard'].includes(n))reference={...reference,identity:'Вітрозахисний гіпс ·9mm',source:'VS-2 арк08/PDF56',thicknessMM:9,brand:null,appearance:'Показова поверхня; GTS9.5 не підмінює проєкт9mm'};
else if(n.startsWith('eps_'))reference={...reference,identity:'EPS120 Perimeeter або аналог',source:'VS-1 арк09/PDF57',thicknessMM:[100,50],appearance:'Показова структура EPS; завод/партія не задані'};
else if(n==='roof_underlay')reference={...reference,identity:'Підпокрівельна мембрана',source:'§5.4; арк12/PDF60',vapourPermeability:'непаропроникна за вузлом',thicknessMM:null,appearance:'Показова тонка мембрана; товщина0.2mm лише для огляду, марка невідома'};
else if(['steel','galvanized','entrance_steel'].includes(n))reference={...reference,identity:'Оцинкована сталь / металевий профіль',source:'VS-2 кронштейн150×150×60×2.5; VS-1 MP25/38 або аналог',appearance:'Показове цинкування; точний виріб і цинковий візерунок невідомі'};
else if(['tape','epdm'].includes(n)||prior.materialFamily==='rubber')reference={...reference,identity:'Захисна стрічка / гумова прокладка',source:'Виробнича інструкція Patina; балкон арк16/17',appearance:'Показова чорна гума; тип, ширина та сумісність вузла до погодження'};
else if(prior.materialFamily==='glass'||n.includes('glass')||n==='igu_proxy')reference={...reference,identity:prior.opticalRole??'Скло',source:prior.source??'§5.7/5.8; арк25/26',sourceFacts:prior.sourceFacts??null,appearance:'Оптичний кандидат; газ, покриття, крайові ущільнення й замовлена композиція невідомі'};
else if(prior.materialFamily==='pvc'||['frame','sash','bead'].includes(n))reference={...reference,identity:'PVC · білий усередині / темно-сірий зовні',source:'арк25/26 PDF73/74',finish:prior.finish??null,appearance:'Колірна сім’я за проєктом; RGB/RAL та профіль постачальника не задані'};
else if(prior.materialFamily==='polyurethane')reference={...reference,identity:'Неслизьке поліуретанове покриття або аналог',source:'арк16/17 PDF64/65',appearance:'Показова поверхня; продукт/товщина покриття не задані'};
else if(prior.materialFamily==='ceramic')reference={...reference,identity:'Керамічна дистанційна рамка склопакета',source:'§5.7',appearance:'Матеріал за проєктом; конкретний виріб і розміри невідомі'};
else if(['seal','foam'].includes(prior.materialFamily)||['gasket','foam','igu_seal'].includes(n))reference={...reference,identity:n.includes('foam')?'Монтажний заповнювач':'Ущільнення',source:'Віконний кандидат',appearance:'Показовий матеріал; хімічний склад, постачальник та розмір до погодження'};
else if(n.includes('concrete')||['base','masonry','lining'].includes(n))reference={...reference,identity:n==='apron_concrete'?'Бетон C30/37 · XC4+XF3':n.includes('concrete')?'Бетон':'Існуюча основа / оздоблення',source:n==='apron_concrete'?'§5.2; арк10/PDF58':'Існуюча конструкція; матеріал/стан обміряти',appearance:'Показова поверхня; немає сканування фактичного матеріалу'};
material.userData={...prior,materialReference:reference};
if(reference.colour===roofColourReference){material.color.set(roofColourReference.hex);material.roughness=n==='roof_steel'?roofCoatingAppearance.roughness:.46;material.metalness=0;if(n==='roof_steel')reference.opticalParameters=roofCoatingAppearance;}
if(reference.colour&&n==='entrance_board'){material.color.set('#676664');material.userData.portableTexture=facadeColourReference.P070.portableTexture;material.userData.finishAuthority='manufacturer digital colour sample; physical batch unknown';}
return reference;
}