Fonte unica dei profili. Il profilo non viene ricostruito dai consumer: la sua geometria canonica è Alias compatibile: I loop Questa libreria è il primo anello: definisce esclusivamente il profilo. Profile Library
record.space2d.space2d
3173
mm
nessunoDownload
Shortcode
[italfaber_profile_library][italfaber_profiles_docs].API REST
Metodo Endpoint Scopo GET https://italfaber.com/wp-json/italfaber-profiles/v1/healthStato servizio e numero profili. GET https://italfaber.com/wp-json/italfaber-profiles/v1/item?name=HEA140Restituisce un profilo canonico completo. GET https://italfaber.com/wp-json/italfaber-profiles/v1/search?q=IPN&limit=25Ricerca profili. Contratto dati
{
"name": "...",
"space2d": {
"schema": "italfaber.space2d.profile.v1",
"units": "mm",
"origin": [0,0],
"loops": [
{"role":"solid","points":[...]},
{"role":"void","points":[...]}
]
}
}solid definiscono il materiale; i loop void definiscono i vuoti. Geometry consuma direttamente questi punti.Uso PHP interno
$profile = ITALFABER_Profile_Library::get_item('HEA140');
$space2d = $profile['space2d'];Responsabilità e confini
Catena completa
Profile Library → Geometry → const geometry → Viewer
ITALFABER Universal Section API
Engine 0.10.1 · unica fonte di calcolo: core JavaScript derivato dal file validato 0.10.1. PHP non contiene formule strutturali.
Core pubblico
<script src="https://italfaber.com/wp-content/plugins/italfaber-universal-section-api/assets/universal-section-core.js"></script>
Uso minimo
const space2d = {
schema: "italfaber.space2d.profile.v1",
units: "mm",
loops: [
{ role: "solid", points: [[-100,-150],[100,-150],[100,150],[-100,150]] }
]
};
const result = ITALFABERUniversalSection.analyze(space2d);
console.log(result);
Calcoli opzionali
const result = ITALFABERUniversalSection.analyze(space2d, {
directional_angle_deg: 30,
shear: { grid: 90, nu: 0.30 },
torsion_warping: { grid: 100 },
normal_stress: { N: 0, Mx: 100000000, My: 0 }
});
Endpoint di servizio
Nota: il calcolo avviene nello stesso core JavaScript caricato dal consumer. Gli endpoint REST descrivono servizio e contratto; non esiste una seconda implementazione PHP delle formule.
Un solo motore strutturale: Frame3D lineare elastico Timoshenko, 6 DOF per nodo. Il 2D è un caso vincolato dello stesso motore. Fonte unica delle sezioni: Frame non calcola né ricostruisce proprietà geometriche. Riceve API globale: Per AI-CAD eseguito nella pagina WordPress, caricare il bridge dopo il core. Il bridge non contiene un solver: inoltra il modello alla funzione canonica Per componenti frontend isolati e iframe same-origin è disponibile anche il protocollo È un orchestratore, non un secondo solver. Cerca candidati nella Profile Library, calcola ogni Ambito attuale: portale rettangolare a due colonne, carico gravitazionale uniformemente distribuito, predimensionamento elastico preliminare. Include il peso proprio da area geometrica e densità esplicita. Non è ancora verifica normativa completa: niente combinazioni EC3, instabilità, LTB, classe di sezione, nodi o fondazioni. Nodi XYZ; aste con Modalità attuale: client/browser. I core JavaScript canonici vengono eseguiti nel browser. Le route POST Test frontend reale: Quando sarà disponibile un server dedicato, le stesse route potranno eseguire gli stessi core senza cambiare modelli, payload o sorgenti del motore. Motore deterministico che riceve operazioni e produce l'unica geometria 3D canonica: Alias compatibile: Legge Richieste incomplete, profili mancanti, assi nulli o geometrie non valide vengono rifiutati. Non esiste fallback geometrico che inventi una forma alternativa. Il Core non contiene profilario, non costruisce profili, non genera geometry e non esegue fetch. Riceve la geometry canonica già completa.ITALFABER Frame
A, Iy, Iz, J, Asy, Asz da Universal Section.Core JavaScript
<script src="https://italfaber.com/wp-content/plugins/italfaber-frame-0.2.4-ai-frontend-bridge/assets/italfaber-frame3d-core.js"></script>ITALFABERFrame3D.solve(model) e adattatore ITALFABERFrame3D.sectionFromUniversal(sectionResponse).Bridge frontend AI → Frame3D
ITALFABERFrame3D.solve(model) e restituisce un envelope JSON con risultato e tempo di esecuzione.<script src="https://italfaber.com/wp-content/plugins/italfaber-frame-0.2.4-ai-frontend-bridge/assets/italfaber-frame3d-bridge.js"></script>
const envelope = ITALFABERFrame3DBridge.execute(model);
const result = envelope.result;postMessage: richiesta italfaber.frame3d.execute, risposta italfaber.frame3d.result.Predimensionatore preliminare
space2d con Universal Section, risolve con Frame3D e accetta/scarta con criteri espliciti.<script src="https://italfaber.com/wp-content/plugins/italfaber-frame-0.2.4-ai-frontend-bridge/assets/italfaber-frame-predimensioner.js"></script>
const result = await ITALFABERFramePredimensioner.sizePortalUniformLoad({
width_mm: 6000,
height_mm: 3000,
external_mass_kg: 800,
fy_MPa: 275,
deflection_ratio: 300
});Contratto Frame3D
local_y esplicito; materiali con E_MPa, G_MPa; sezioni con A_mm2, Iy_mm4, Iz_mm4, J_mm4, Asy_mm2, Asz_mm2; vincoli sui 6 DOF; carichi nodali e distribuiti locali.Esecuzione
/execute e /predimension restano pubblicate per mantenere stabile il contratto API, ma su questo hosting non lanciano Node.js né un solver PHP duplicato e restituiscono client-execution-required (HTTP 501).[italfaber_frame3d_test] verifica il core diretto. [italfaber_frame3d_bridge_test] verifica la catena AI → modello JSON → bridge → ITALFABERFrame3D.solve(model) → risultato JSON.REST informativo
Geometry
{vertices, faces, edges}.operationsvertices / faces / edges
letti da Profile Library
assenteDownload
Shortcode
[italfaber_geometry][italfaber_geometry_docs].API REST
Metodo Endpoint Scopo GET https://italfaber.com/wp-json/italfaber-geometry/v1/healthStato del motore e disponibilità Profile Library. GET https://italfaber.com/wp-json/italfaber-geometry/v1/schemaContratto e operazioni supportate. POST https://italfaber.com/wp-json/italfaber-geometry/v1/executeCostruisce la geometry canonica. Operazioni
profile
{"op":"profile","from":[0,0,0],"to":[0,0,3000],"profile":"HEA140"}space2d dalla Profile Library e lo estrude lungo l'asse A→B.box
{"op":"box","center":[0,0,5],"size":[260,260,10]}cylinder
{"op":"cylinder","from":[0,0,0],"to":[6000,0,3000],"radius":12,"segments":20}Richiesta completa
{
"operations": [
{"op":"profile","from":[0,0,0],"to":[0,0,3000],"profile":"HEA140"},
{"op":"profile","from":[0,0,3000],"to":[6000,0,3000],"profile":"IPN 240"},
{"op":"box","center":[0,0,5],"size":[260,260,10]}
]
}Risposta positiva
{
"vertices": [[x,y,z], ...],
"faces": [[i0,i1,i2,...], ...],
"edges": [[i0,i1], ...]
}Errori
Responsabilità e confini
space2d.geometry.Catena completa
Profile Library → Geometry → const geometry → ViewerITALFABER Viewer 1.3.4
Nessun iframe. Un solo motore Viewer per pagina WordPress, HTML portabili e client esterni.Endpoint
Risorsa URL Viewer pagina https://italfaber.com/italfaber-viewer/Viewer Core JS https://italfaber.com/wp-content/plugins/italfaber-viewer/assets/italfaber-viewer-core-v0.12.4.jsManifest https://italfaber.com/wp-json/italfaber-viewer/v1/manifestContratto del Core
ITALFABERViewer.mount({
container: '#viewer',
geometry: { vertices, faces, edges },
appearance: { color:[45,92,140], alpha:1 } // opzionale
});
Embed senza iframe
<div id="viewer" style="height:600px"></div>
<script src="https://italfaber.com/wp-content/plugins/italfaber-viewer/assets/italfaber-viewer-core-v0.12.4.js"></script>
<script>
ITALFABERViewer.mount({ container:'#viewer', geometry, appearance });
</script>
ITALFABER Appearance API v0.1.1
Endpoint pubblici
Fonte geometrica:
Regole
- Geometry resta canonica e immutabile.
- Il colore deve essere esplicito:
[R,G,B]. - Nessun colore casuale o fallback nascosto.
- Alpha opzionale:
0..1. nameematerialsono etichette semantiche opzionali.
Schema corrente
{
"ok": true,
"service": "ITALFABER Appearance",
"version": "0.1.1",
"endpoint": "/wp-json/italfaber-appearance/v1/apply",
"input": {
"source": {
"geometry": "{vertices,faces,edges}",
"or_geometry_request": {
"operations": "Same operations accepted by /italfaber-geometry/v1/execute"
}
},
"appearance": {
"color": "[R,G,B] integers 0..255",
"optional_alpha": "0..1",
"optional_name": "semantic label chosen by AI",
"optional_material": "semantic material label chosen by AI"
}
},
"output": {
"geometry": "Canonical geometry, byte-for-byte values preserved after JSON decoding/encoding semantics",
"appearance": "Validated visual attributes"
},
"rules": [
"No geometry mutation.",
"No hidden default color.",
"No random color.",
"No internal AI fallback.",
"If appearance.color is missing or invalid, request fails."
]
}
Payload di prova
Risposta live
Nessuna richiesta eseguita.