ITALFABER

Italfaber AI CAD Viewer

ITALFABERv2.1.0

Profile Library

Fonte unica dei profili. Il profilo non viene ricostruito dai consumer: la sua geometria canonica è record.space2d.

Regola: Profile Library sa che cosa è un profilo. Non sa dove viene montato e non sa come viene visualizzato.
Fonte canonica
space2d
Profili attivi
3173
Unità
mm
Runtime builder
nessuno

Download

Shortcode

[italfaber_profile_library]

Alias compatibile: [italfaber_profiles_docs].

API REST

MetodoEndpointScopo
GEThttps://italfaber.com/wp-json/italfaber-profiles/v1/healthStato servizio e numero profili.
GEThttps://italfaber.com/wp-json/italfaber-profiles/v1/item?name=HEA140Restituisce un profilo canonico completo.
GEThttps://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":[...]}
    ]
  }
}

I loop 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

  • Contiene il profilario e la geometria 2D canonica delle sezioni.
  • Non contiene camera, canvas o viewer.
  • Non costruisce strutture 3D.
  • Non contiene una seconda sagoma alternativa ricostruita a runtime.
  • Se il profilo non esiste, il consumer deve ricevere un errore: nessun profilo inventato.

Catena completa

Profile Library → Geometry → const geometry → Viewer

Questa libreria è il primo anello: definisce esclusivamente il profilo.

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.

ITALFABER Frame

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 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>

API globale: ITALFABERFrame3D.solve(model) e adattatore ITALFABERFrame3D.sectionFromUniversal(sectionResponse).

Bridge frontend AI → Frame3D

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 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;

Per componenti frontend isolati e iframe same-origin è disponibile anche il protocollo postMessage: richiesta italfaber.frame3d.execute, risposta italfaber.frame3d.result.

Predimensionatore preliminare

È un orchestratore, non un secondo solver. Cerca candidati nella Profile Library, calcola ogni 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
});

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.

Contratto Frame3D

Nodi XYZ; aste con 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

Modalità attuale: client/browser. I core JavaScript canonici vengono eseguiti nel browser. Le route POST /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).

Test frontend reale: [italfaber_frame3d_test] verifica il core diretto. [italfaber_frame3d_bridge_test] verifica la catena AI → modello JSON → bridge → ITALFABERFrame3D.solve(model) → risultato JSON.

Quando sarà disponibile un server dedicato, le stesse route potranno eseguire gli stessi core senza cambiare modelli, payload o sorgenti del motore.

REST informativo

Apri demo end-to-end: portale 6×3 m / 800 kg


ITALFABERv1.1.0

Geometry

Motore deterministico che riceve operazioni e produce l'unica geometria 3D canonica: {vertices, faces, edges}.

Regola: Geometry sa dove esiste la materia nello spazio. Non possiede un profilario duplicato e non contiene il Viewer.
Input
operations
Output
vertices / faces / edges
Profili
letti da Profile Library
Viewer
assente

Download

Shortcode

[italfaber_geometry]

Alias compatibile: [italfaber_geometry_docs].

API REST

MetodoEndpointScopo
GEThttps://italfaber.com/wp-json/italfaber-geometry/v1/healthStato del motore e disponibilità Profile Library.
GEThttps://italfaber.com/wp-json/italfaber-geometry/v1/schemaContratto e operazioni supportate.
POSThttps://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"}

Legge 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

Richieste incomplete, profili mancanti, assi nulli o geometrie non valide vengono rifiutati. Non esiste fallback geometrico che inventi una forma alternativa.

Responsabilità e confini

  • Non contiene un database locale dei profili.
  • Non contiene camera, canvas, renderer o logica di visualizzazione.
  • Ogni profilo è consumato direttamente dalla geometria canonica space2d.
  • L'output positivo è una sola struttura dati geometry.

Catena completa

Profile Library → Geometry → const geometry → Viewer

ITALFABER Viewer 1.3.4

Profile Library → Geometry → Appearance opzionale → Viewer Core 0.12.3
Nessun iframe. Un solo motore Viewer per pagina WordPress, HTML portabili e client esterni.

Endpoint

RisorsaURL
Viewer paginahttps://italfaber.com/italfaber-viewer/
Viewer Core JShttps://italfaber.com/wp-content/plugins/italfaber-viewer/assets/italfaber-viewer-core-v0.12.4.js
Manifesthttps://italfaber.com/wp-json/italfaber-viewer/v1/manifest

Contratto del Core

ITALFABERViewer.mount({
  container: '#viewer',
  geometry: { vertices, faces, edges },
  appearance: { color:[45,92,140], alpha:1 } // opzionale
});

Il Core non contiene profilario, non costruisce profili, non genera geometry e non esegue fetch. Riceve la geometry canonica già completa.

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

Documentazione e prova live. Appearance aggiunge attributi visivi senza modificare la geometria canonica.
ITALFABER Geometry → canonical geometry → Appearance → Viewer

Regole

  • Geometry resta canonica e immutabile.
  • Il colore deve essere esplicito: [R,G,B].
  • Nessun colore casuale o fallback nascosto.
  • Alpha opzionale: 0..1.
  • name e material sono 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

Pronto.
Anteprima colore

Risposta live

Nessuna richiesta eseguita.