Ogee Grille Tile Covering

Ogee Grille Tile Covering

A tile covering laid in the ogee grille pattern on the face you give it, with grout between the tiles. The face the tiles cover, Tiles cut at the edge, whole inside, or overlapping, Pattern size, tile thickness and edge bevel, Joint widths and joint depth, Pattern rotation and offset from the face center, Tile and grout colour

Details

Category: Tiles › Perforation

By Huu Khanh Nguyen · Updated November 8, 2026

Parameters

NameDefaultUnit
Object On Boundariestrim
Pattern rotation0°
Pattern offset X0mm
Pattern offset Y0mm
Opening pitch250mm
Opening size0.44
Thickness10mm
Edge bevel radius0.5mm
Edge bevel segments5
Horizontal joint5mm
Vertical joint5mm
Joint depth5mm
Generate surfacetrue
Tile colour#b8b5ae
Tile roughness0.5
Tile metalness0
Joint colour#d0d0d0
halfWidthwidth / 2
halfHeight(1.2 * width) / 2
patternX(rings[0].map((p) => p[0]).reduce((m, x) => Math.min(m, x)) + rings[0].map((p) => p[0]).reduce((m, x) => Math.max(m, x))) / 2 + offsetXmm
patternY(rings[0].map((p) => p[1]).reduce((m, x) => Math.min(m, x)) + rings[0].map((p) => p[1]).reduce((m, x) => Math.max(m, x))) / 2 + offsetYmm
wallAMath.sqrt(((sq) => ((R) => R.reduce((m, A, i) => R.reduce((n, B, k) => (k <= i) ? n : A.reduce((q, p) => B.slice(1).reduce((s, b, j) => Math.min(s, sq(p, B[j], b)), q), n), m), 1e300))(tile))((p, a, b) => ((dx, dy) => ((t) => (p[0] - a[0] - t * dx) ** 2 + (p[1] - a[1] - t * dy) ** 2)(Math.max(0, Math.min(1, ((p[0] - a[0]) * dx + (p[1] - a[1]) * dy) / (dx * dx + dy * dy)))))(b[0] - a[0], b[1] - a[1])))mm
wallBMath.sqrt(((sq) => ((R) => R.reduce((m, A, i) => R.reduce((n, B, k) => (k >= i) ? n : A.reduce((q, p) => B.slice(1).reduce((s, b, j) => Math.min(s, sq(p, B[j], b)), q), n), m), 1e300))(tile))((p, a, b) => ((dx, dy) => ((t) => (p[0] - a[0] - t * dx) ** 2 + (p[1] - a[1] - t * dy) ** 2)(Math.max(0, Math.min(1, ((p[0] - a[0]) * dx + (p[1] - a[1]) * dy) / (dx * dx + dy * dy)))))(b[0] - a[0], b[1] - a[1])))mm