Can you make me a detailed ppt on processing errors in denture base and resin for presenting seminar
processing errors denture base acrylic resin porosity distortion incomplete polymerization
https://uomustansiriyah.edu.iq/media/lectures/3/3_2020_02_17…
ls /home/daytona/workspace/ 2>/dev/null || echo "empty"
mkdir -p /home/daytona/workspace/denture-ppt
~/denture-ppt/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Processing Errors in Denture Base Resin";
pres.author = "Prosthodontics Seminar";
// ─── COLOUR PALETTE ───────────────────────────────────────────────
const C = {
navy: "0D2B55", // dominant dark
teal: "1A7A8A", // supporting
gold: "E8A020", // accent
light: "EAF4F7", // slide bg light
white: "FFFFFF",
lightGray: "DDE8ED",
darkText: "12293E",
midText: "2A5070",
red: "C0392B",
green: "1E7D4A",
orange: "D4600A",
};
// ─── HELPERS ──────────────────────────────────────────────────────
function titleBar(slide, text, subtitle) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.1, fill: { color: C.navy } });
slide.addText(text, {
x: 0.3, y: 0.05, w: 9.4, h: 0.75,
fontSize: 26, bold: true, color: C.white, fontFace: "Calibri", valign: "middle"
});
if (subtitle) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 1.1, w: 10, h: 0.35, fill: { color: C.teal } });
slide.addText(subtitle, {
x: 0.3, y: 1.1, w: 9.4, h: 0.35,
fontSize: 13, color: C.white, fontFace: "Calibri", italic: true, valign: "middle"
});
}
}
function addBullets(slide, items, x, y, w, h, opts = {}) {
const base = { fontSize: 15, color: C.darkText, fontFace: "Calibri", paraSpaceAfter: 6, ...opts };
const textArr = items.map((item, i) => ({
text: item.text || item,
options: {
bullet: item.indent ? { indent: 20 * (item.indent) } : true,
breakLine: i < items.length - 1,
bold: item.bold || false,
color: item.color || base.color,
fontSize: item.fontSize || base.fontSize,
indentLevel: item.indent || 0,
}
}));
slide.addText(textArr, { x, y, w, h, fontFace: "Calibri", paraSpaceAfter: 6, valign: "top", ...opts });
}
function sectionTag(slide, label, color) {
slide.addShape(pres.ShapeType.rect, { x: 8.2, y: 0.15, w: 1.6, h: 0.4, fill: { color: color || C.gold }, line: { color: color || C.gold } });
slide.addText(label, { x: 8.2, y: 0.15, w: 1.6, h: 0.4, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
}
function footerLine(slide) {
slide.addShape(pres.ShapeType.line, { x: 0.3, y: 5.4, w: 9.4, h: 0, line: { color: C.teal, width: 1 } });
slide.addText("Processing Errors in Denture Base Resin | Prosthodontics Seminar", {
x: 0.3, y: 5.43, w: 9.4, h: 0.2, fontSize: 9, color: C.teal, fontFace: "Calibri", align: "center"
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE SLIDE
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
// Decorative bars
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.35, h: 5.625, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 0, w: 0.12, h: 5.625, fill: { color: C.gold } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.4, w: 10, h: 1.225, fill: { color: "0A1E3A" } });
// Title
s.addText("Processing Errors in", {
x: 0.7, y: 0.7, w: 9, h: 0.85, fontSize: 38, bold: true, color: C.white, fontFace: "Calibri", align: "left"
});
s.addText("Denture Base Resin", {
x: 0.7, y: 1.5, w: 9, h: 0.85, fontSize: 38, bold: true, color: C.gold, fontFace: "Calibri", align: "left"
});
s.addShape(pres.ShapeType.rect, { x: 0.7, y: 2.45, w: 6, h: 0.06, fill: { color: C.teal } });
s.addText("A Comprehensive Seminar Presentation", {
x: 0.7, y: 2.6, w: 8, h: 0.45, fontSize: 18, color: C.lightGray, fontFace: "Calibri", italic: true
});
s.addText("Causes • Classification • Prevention • Clinical Implications", {
x: 0.7, y: 3.15, w: 8.5, h: 0.4, fontSize: 14, color: C.lightGray, fontFace: "Calibri"
});
s.addText("Department of Prosthodontics", {
x: 0.7, y: 4.5, w: 6, h: 0.3, fontSize: 13, color: C.lightGray, fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 2 — TABLE OF CONTENTS
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Contents at a Glance");
footerLine(s);
const topics = [
{ num: "01", title: "Introduction & Overview", sub: "Denture base resins, composition, processing methods" },
{ num: "02", title: "Porosity", sub: "Internal, external — causes, types & prevention" },
{ num: "03", title: "Crazing", sub: "Surface cracks, causes & clinical significance" },
{ num: "04", title: "Warpage & Distortion", sub: "Processing shrinkage, thermal effects" },
{ num: "05", title: "Polymerization Shrinkage", sub: "Volumetric & linear shrinkage, clinical impact" },
{ num: "06", title: "Residual Monomer", sub: "Incomplete polymerization, toxicity" },
{ num: "07", title: "Tooth Movement", sub: "Tooth displacement during processing" },
{ num: "08", title: "Prevention & Summary", sub: "Best practices & take-home points" },
];
topics.forEach((t, i) => {
const row = Math.floor(i / 2);
const col = i % 2;
const x = col === 0 ? 0.3 : 5.2;
const y = 1.6 + row * 0.87;
const bgColor = i % 2 === 0 ? C.navy : C.teal;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.7, h: 0.75, fill: { color: bgColor }, line: { color: bgColor } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.55, h: 0.75, fill: { color: C.gold }, line: { color: C.gold } });
s.addText(t.num, { x, y, w: 0.55, h: 0.75, fontSize: 16, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(t.title, { x: x + 0.62, y: y + 0.04, w: 3.95, h: 0.3, fontSize: 13, bold: true, color: C.white, fontFace: "Calibri", valign: "top" });
s.addText(t.sub, { x: x + 0.62, y: y + 0.38, w: 3.95, h: 0.3, fontSize: 9.5, color: C.lightGray, fontFace: "Calibri", valign: "top" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 3 — INTRODUCTION
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Introduction", "Denture Base Resins — The Foundation of Prosthetic Dentistry");
sectionTag(s, "01 Intro", C.navy);
footerLine(s);
s.addText("Why Denture Base Resin?", {
x: 0.3, y: 1.6, w: 9, h: 0.4, fontSize: 17, bold: true, color: C.navy, fontFace: "Calibri"
});
addBullets(s, [
"Poly(methyl methacrylate) — PMMA — has been the material of choice for denture bases since the 1940s",
"Available as powder (PMMA polymer) + liquid (MMA monomer) system",
"Properties: tooth-coloured, dimensionally stable, easily processed, repairable, biocompatible",
"Despite decades of use, processing errors remain a significant clinical challenge",
], 0.3, 2.05, 9.3, 1.5, { fontSize: 14 });
// Types box
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 3.55, w: 9.3, h: 0.38, fill: { color: C.navy } });
s.addText("ADA Classification — Types of Denture Base Resin", {
x: 0.3, y: 3.55, w: 9.3, h: 0.38, fontSize: 13, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle"
});
const types = [
{ type: "Type I", desc: "Heat-polymerizable (PMMA)" },
{ type: "Type II", desc: "Auto-polymerizable (cold cure)" },
{ type: "Type III", desc: "Thermoplastic (injection)" },
{ type: "Type IV", desc: "Light-activated resin" },
{ type: "Type V", desc: "Microwave-cured resin" },
];
types.forEach((t, i) => {
const x = 0.3 + i * 1.85;
s.addShape(pres.ShapeType.rect, { x, y: 3.93, w: 1.82, h: 1.2, fill: { color: i % 2 === 0 ? C.teal : C.navy } });
s.addText(t.type, { x, y: 3.98, w: 1.82, h: 0.38, fontSize: 13, bold: true, color: C.gold, align: "center", fontFace: "Calibri" });
s.addText(t.desc, { x, y: 4.38, w: 1.82, h: 0.66, fontSize: 11, color: C.white, align: "center", fontFace: "Calibri", valign: "top" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 4 — PROCESSING OVERVIEW
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Processing Overview", "Compression Mould Technique & Polymerization Cycles");
sectionTag(s, "01 Intro", C.navy);
footerLine(s);
// Left column — steps
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 4.4, h: 0.4, fill: { color: C.teal } });
s.addText("Processing Steps", { x: 0.3, y: 1.55, w: 4.4, h: 0.4, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const steps = ["Flasking", "Dewaxing", "Separating medium application", "Mixing powder & liquid", "Packing acrylic dough (dough stage)", "Trial closure & flash removal", "Final closure & clamping", "Heat curing under pressure", "Deflasking & finishing"];
steps.forEach((st, i) => {
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 2.0 + i * 0.35, w: 0.35, h: 0.32, fill: { color: C.gold } });
s.addText(`${i + 1}`, { x: 0.3, y: 2.0 + i * 0.35, w: 0.35, h: 0.32, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(st, { x: 0.7, y: 2.0 + i * 0.35, w: 3.95, h: 0.32, fontSize: 12, color: C.darkText, fontFace: "Calibri", valign: "middle" });
});
// Right column — curing cycles
s.addShape(pres.ShapeType.rect, { x: 5.1, y: 1.55, w: 4.6, h: 0.4, fill: { color: C.navy } });
s.addText("Recommended Curing Cycles", { x: 5.1, y: 1.55, w: 4.6, h: 0.4, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 5.1, y: 2.02, w: 4.6, h: 1.4, fill: { color: C.lightGray } });
s.addText("Long Cycle (Recommended)", { x: 5.2, y: 2.07, w: 4.4, h: 0.32, fontSize: 13, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("• Cure at 74°C for 8 hours\n• Then raise to 100°C for 1 hour\n• Controls monomer vaporization\n• Minimizes porosity and warpage", { x: 5.2, y: 2.4, w: 4.4, h: 0.95, fontSize: 12, color: C.darkText, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 5.1, y: 3.5, w: 4.6, h: 1.4, fill: { color: "D6EAF8" } });
s.addText("Short Cycle (Alternative)", { x: 5.2, y: 3.55, w: 4.4, h: 0.32, fontSize: 13, bold: true, color: C.teal, fontFace: "Calibri" });
s.addText("• Cure at 74°C for 1–2 hours\n• Then raise to 100°C for 30 min\n• Risk: porosity if temperature\n rises too quickly in thick areas", { x: 5.2, y: 3.88, w: 4.4, h: 0.95, fontSize: 12, color: C.darkText, fontFace: "Calibri" });
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 5 — OVERVIEW OF PROCESSING ERRORS
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.2, fill: { color: "0A1E3A" } });
s.addText("Processing Errors — At a Glance", {
x: 0.4, y: 0.2, w: 9.2, h: 0.75, fontSize: 28, bold: true, color: C.white, fontFace: "Calibri"
});
const errors = [
{ icon: "●", name: "Porosity", types: "Internal / External", color: C.red },
{ icon: "●", name: "Crazing", types: "Surface micro-cracks", color: C.orange },
{ icon: "●", name: "Warpage & Distortion", types: "Shape change post-processing", color: C.gold },
{ icon: "●", name: "Polymerization Shrinkage", types: "Volumetric & linear", color: C.teal },
{ icon: "●", name: "Residual Monomer", types: "Incomplete polymerization", color: "8E44AD" },
{ icon: "●", name: "Tooth Movement / Displacement", types: "Occlusal inaccuracy", color: C.green },
];
errors.forEach((e, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.4 : 5.2;
const y = 1.35 + row * 1.35;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 1.2, fill: { color: "0A2240" }, line: { color: e.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.18, h: 1.2, fill: { color: e.color } });
s.addText(e.name, { x: x + 0.28, y: y + 0.1, w: 4.0, h: 0.42, fontSize: 16, bold: true, color: C.white, fontFace: "Calibri" });
s.addText(e.types, { x: x + 0.28, y: y + 0.55, w: 4.0, h: 0.5, fontSize: 12, color: C.lightGray, fontFace: "Calibri" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 6 — POROSITY: OVERVIEW
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Porosity", "The Most Common Processing Error in Denture Base Resin");
sectionTag(s, "02 Porosity", C.red);
footerLine(s);
s.addText("Definition:", { x: 0.3, y: 1.6, w: 9, h: 0.35, fontSize: 15, bold: true, color: C.navy, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.95, w: 9.3, h: 0.75, fill: { color: "D6EAF8" } });
s.addText("Presence of voids, bubbles, or pores within or on the surface of the polymerized denture base resin.", {
x: 0.4, y: 1.98, w: 9.1, h: 0.7, fontSize: 14, color: C.darkText, fontFace: "Calibri", italic: true, valign: "middle"
});
s.addText("Clinical Significance of Porosity:", { x: 0.3, y: 2.82, w: 9, h: 0.35, fontSize: 15, bold: true, color: C.navy, fontFace: "Calibri" });
const impacts = [
{ label: "Aesthetics", desc: "Unsightly appearance — white/grey voids on denture surface", color: C.orange },
{ label: "Hygiene", desc: "Harbours microorganisms — impossible to clean porous surface", color: C.red },
{ label: "Strength", desc: "Weakens the denture base — stress concentration at voids", color: C.teal },
{ label: "Odour", desc: "Entraps food debris → patient complaints", color: C.navy },
];
impacts.forEach((imp, i) => {
const x = 0.3 + i * 2.38;
s.addShape(pres.ShapeType.rect, { x, y: 3.28, w: 2.28, h: 1.85, fill: { color: imp.color } });
s.addText(imp.label, { x, y: 3.33, w: 2.28, h: 0.4, fontSize: 14, bold: true, color: C.white, align: "center", fontFace: "Calibri" });
s.addText(imp.desc, { x: x + 0.08, y: 3.78, w: 2.1, h: 1.2, fontSize: 11.5, color: C.white, fontFace: "Calibri", align: "center", valign: "top" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 7 — INTERNAL POROSITY
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Internal Porosity", "Subsurface Voids — Gaseous Porosity");
sectionTag(s, "02 Porosity", C.red);
footerLine(s);
// Left pane
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 4.55, h: 0.38, fill: { color: C.navy } });
s.addText("Characteristics", { x: 0.3, y: 1.55, w: 4.55, h: 0.38, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Spherical voids WITHIN the bulk of the resin",
"NOT visible on the surface",
"Develops in THICKER portions of the denture base",
"Voids are round and regular in shape",
], 0.3, 2.0, 4.55, 1.6, { fontSize: 13 });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 3.65, w: 4.55, h: 0.38, fill: { color: C.teal } });
s.addText("Cause", { x: 0.3, y: 3.65, w: 4.55, h: 0.38, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.03, w: 4.55, h: 1.15, fill: { color: "D6EAF8" } });
s.addText("Vaporization of monomer when the temperature of resin rises above the BOILING POINT of MMA monomer (100.3°C). Monomer vapour is trapped within the polymerizing mass.", {
x: 0.4, y: 4.06, w: 4.35, h: 1.1, fontSize: 12.5, color: C.darkText, fontFace: "Calibri", valign: "top"
});
// Right pane
s.addShape(pres.ShapeType.rect, { x: 5.2, y: 1.55, w: 4.5, h: 0.38, fill: { color: C.red } });
s.addText("Why Thick Sections are Affected", { x: 5.2, y: 1.55, w: 4.5, h: 0.38, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 5.2, y: 1.93, w: 4.5, h: 1.5, fill: { color: C.lightGray } });
s.addText("Polymerization is EXOTHERMIC. In thick sections, heat generated cannot dissipate fast enough. The local temperature may exceed 100.3°C — boiling point of MMA — causing monomer to vaporize before it can polymerize.", {
x: 5.3, y: 1.97, w: 4.3, h: 1.42, fontSize: 12.5, color: C.darkText, fontFace: "Calibri", valign: "top"
});
s.addShape(pres.ShapeType.rect, { x: 5.2, y: 3.5, w: 4.5, h: 0.38, fill: { color: C.green } });
s.addText("Prevention", { x: 5.2, y: 3.5, w: 4.5, h: 0.38, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Use the LONG CURING CYCLE for thick denture bases",
"Cure at 74°C for 8 hours — stays below MMA boiling point",
"Slow temperature rise prevents exothermic runaway",
"Never rush the curing process by raising temperature rapidly",
], 5.2, 3.9, 4.5, 1.2, { fontSize: 12 });
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 8 — EXTERNAL POROSITY
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "External Porosity", "Surface Voids — Two Distinct Causes");
sectionTag(s, "02 Porosity", C.red);
footerLine(s);
// Two cause cards
// Card 1
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 4.6, h: 3.65, fill: { color: C.white }, line: { color: C.orange, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 4.6, h: 0.5, fill: { color: C.orange } });
s.addText("Cause 1 — Lack of Homogeneity", { x: 0.3, y: 1.55, w: 4.6, h: 0.5, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText("Mechanism:", { x: 0.45, y: 2.12, w: 4.3, h: 0.3, fontSize: 12, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("When the dough is not homogeneous at the time of packing, portions with MORE monomer will shrink MORE than adjacent areas on polymerization. This localized differential shrinkage creates voids.", {
x: 0.45, y: 2.42, w: 4.3, h: 1.1, fontSize: 12, color: C.darkText, fontFace: "Calibri"
});
s.addText("Appearance:", { x: 0.45, y: 3.55, w: 4.3, h: 0.3, fontSize: 12, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Resin appears WHITE/CHALKY in the affected area", { x: 0.45, y: 3.85, w: 4.3, h: 0.35, fontSize: 12, color: C.darkText, fontFace: "Calibri" });
s.addText("Prevention:", { x: 0.45, y: 4.22, w: 4.3, h: 0.3, fontSize: 12, bold: true, color: C.green, fontFace: "Calibri" });
s.addText("Pack in DOUGH stage. Use correct P:L ratio. Mix thoroughly until homogeneous.", {
x: 0.45, y: 4.52, w: 4.3, h: 0.55, fontSize: 12, color: C.darkText, fontFace: "Calibri"
});
// Card 2
s.addShape(pres.ShapeType.rect, { x: 5.1, y: 1.55, w: 4.6, h: 3.65, fill: { color: C.white }, line: { color: C.red, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: 5.1, y: 1.55, w: 4.6, h: 0.5, fill: { color: C.red } });
s.addText("Cause 2 — Lack of Adequate Pressure", { x: 5.1, y: 1.55, w: 4.6, h: 0.5, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText("Mechanism:", { x: 5.25, y: 2.12, w: 4.3, h: 0.3, fontSize: 12, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Insufficient clamp pressure OR inadequate amount of dough in the mould during final closure results in voids that are NOT spherical. Air is trapped at the mould-resin interface.", {
x: 5.25, y: 2.42, w: 4.3, h: 1.1, fontSize: 12, color: C.darkText, fontFace: "Calibri"
});
s.addText("Appearance:", { x: 5.25, y: 3.55, w: 4.3, h: 0.3, fontSize: 12, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Resin appears LIGHTER in colour; irregular, non-spherical voids", { x: 5.25, y: 3.85, w: 4.3, h: 0.35, fontSize: 12, color: C.darkText, fontFace: "Calibri" });
s.addText("Prevention:", { x: 5.25, y: 4.22, w: 4.3, h: 0.3, fontSize: 12, bold: true, color: C.green, fontFace: "Calibri" });
s.addText("Use adequate dough. Check for FLASH during trial closure — presence of flash = adequate material. Maintain clamp pressure throughout curing.", {
x: 5.25, y: 4.52, w: 4.3, h: 0.6, fontSize: 12, color: C.darkText, fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 9 — CRAZING
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Crazing", "Surface and Subsurface Micro-Cracks in Denture Resin");
sectionTag(s, "03 Crazing", C.orange);
footerLine(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 9.3, h: 0.65, fill: { color: "FEF9E7" }, line: { color: C.gold, width: 1.5 } });
s.addText("Definition: Formation of a network of surface and subsurface cracks (crazes) in the denture base resin. Crazes run perpendicular to the direction of tensile stress.", {
x: 0.45, y: 1.58, w: 9.1, h: 0.58, fontSize: 12.5, color: C.darkText, fontFace: "Calibri", italic: true, valign: "middle"
});
s.addText("Three Causes of Crazing:", { x: 0.3, y: 2.3, w: 9, h: 0.35, fontSize: 15, bold: true, color: C.navy, fontFace: "Calibri" });
const causes = [
{
num: "1", title: "Mechanical Stresses",
desc: "Tensile stresses — either residual internal stress from processing or external forces. Processing stresses arise from differential shrinkage during polymerization.",
color: C.red
},
{
num: "2", title: "Solvent Attack",
desc: "Solvents (acetone, nail polish removers, alcohol) cause swelling of the resin matrix. Differential swelling creates localized tensile stress → crazing.",
color: C.orange
},
{
num: "3", title: "Water Sorption / Incorporation",
desc: "Rapid water uptake creates expansion stresses. Drying after soaking creates shrinkage stresses. Both lead to crazing if stresses exceed craze initiation threshold.",
color: C.teal
},
];
causes.forEach((c, i) => {
const y = 2.75 + i * 0.85;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.42, h: 0.75, fill: { color: c.color } });
s.addText(c.num, { x: 0.3, y, w: 0.42, h: 0.75, fontSize: 18, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.75, y, w: 8.85, h: 0.75, fill: { color: C.white }, line: { color: c.color, width: 1 } });
s.addText(c.title, { x: 0.88, y: y + 0.04, w: 8.5, h: 0.3, fontSize: 13, bold: true, color: c.color, fontFace: "Calibri" });
s.addText(c.desc, { x: 0.88, y: y + 0.33, w: 8.5, h: 0.38, fontSize: 11.5, color: C.darkText, fontFace: "Calibri" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 10 — CRAZING CLINICAL & PREVENTION
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Crazing", "Clinical Impact, Detection & Prevention");
sectionTag(s, "03 Crazing", C.orange);
footerLine(s);
// Left
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 4.5, h: 0.38, fill: { color: C.orange } });
s.addText("Clinical Significance", { x: 0.3, y: 1.55, w: 4.5, h: 0.38, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Weakens the denture base — propagates to fracture",
"Reduces aesthetic quality of the prosthesis",
"Crazes act as stress risers under masticatory forces",
"May lead to complete fracture of the denture base",
"Difficult to repair — often requires remaking",
], 0.3, 2.0, 4.5, 1.85, { fontSize: 13 });
// Right
s.addShape(pres.ShapeType.rect, { x: 5.2, y: 1.55, w: 4.5, h: 0.38, fill: { color: C.green } });
s.addText("Prevention", { x: 5.2, y: 1.55, w: 4.5, h: 0.38, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Reduce internal processing stresses: use correct curing cycle",
"Cool flask slowly — do not quench in cold water",
"Avoid contact with solvents (nail polish, acetone)",
"Do not allow denture to dry out completely then wet rapidly",
"Store denture in water when not in use",
"Handle dentures carefully — avoid impact loading",
], 5.2, 2.0, 4.5, 1.85, { fontSize: 12.5 });
// Bottom note
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.0, w: 9.3, h: 1.1, fill: { color: "FDEBD0" }, line: { color: C.orange, width: 1 } });
s.addText("⚠ Important Note:", { x: 0.45, y: 4.05, w: 9.1, h: 0.3, fontSize: 13, bold: true, color: C.orange, fontFace: "Calibri" });
s.addText("Crazing is different from fracture — in crazing the surfaces remain connected via polymer fibrils spanning the craze (craze bridging). When these fibrils break, a true crack forms and propagates to fracture.", {
x: 0.45, y: 4.38, w: 9.1, h: 0.65, fontSize: 12, color: C.darkText, fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 11 — WARPAGE & DISTORTION
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Warpage & Distortion", "Dimensional Inaccuracy Affecting Denture Fit");
sectionTag(s, "04 Warpage", C.gold);
footerLine(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 9.3, h: 0.58, fill: { color: "EBF5FB" }, line: { color: C.teal, width: 1.5 } });
s.addText("Definition: Warpage is a deformity or change in the shape of the denture base that adversely affects its fit to the underlying tissues, occlusion, and function.", {
x: 0.45, y: 1.58, w: 9.1, h: 0.52, fontSize: 12.5, italic: true, color: C.darkText, fontFace: "Calibri", valign: "middle"
});
s.addText("Causes of Warpage:", { x: 0.3, y: 2.22, w: 9, h: 0.35, fontSize: 15, bold: true, color: C.navy, fontFace: "Calibri" });
const wCauses = [
{
title: "1. Rapid Cooling After Curing",
detail: "If the denture flask is cooled too rapidly (e.g., quenching in cold water), the resin and investment contract at different rates → differential thermal contraction → internal stresses → warpage.",
remedy: "Bench-cool or slow cool. Never quench the flask.",
color: C.red
},
{
title: "2. Processing Shrinkage",
detail: "PMMA shrinks ~0.53% (linear) during heat cure. Uneven shrinkage across the arch creates distortion of the palate and ridge-lapping areas.",
remedy: "Adequate pack pressure; correct P:L ratio.",
color: C.orange
},
{
title: "3. Premature Deflasking",
detail: "Removing the denture from the flask while still hot — before the resin has fully cross-linked and stabilized — allows residual stresses to manifest as warpage.",
remedy: "Allow flask to cool to room temperature before deflasking.",
color: C.teal
},
];
wCauses.forEach((c, i) => {
const y = 2.65 + i * 0.88;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 9.3, h: 0.8, fill: { color: C.white }, line: { color: c.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.16, h: 0.8, fill: { color: c.color } });
s.addText(c.title, { x: 0.52, y: y + 0.04, w: 9.0, h: 0.3, fontSize: 13, bold: true, color: c.color, fontFace: "Calibri" });
s.addText(c.detail + " | Remedy: " + c.remedy, { x: 0.52, y: y + 0.35, w: 8.7, h: 0.38, fontSize: 11.5, color: C.darkText, fontFace: "Calibri" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 12 — POLYMERIZATION SHRINKAGE
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Polymerization Shrinkage", "Inevitable Volume Change During Curing");
sectionTag(s, "05 Shrinkage", C.teal);
footerLine(s);
// Explanation box
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 9.3, h: 0.9, fill: { color: "EBF5FB" } });
s.addText("During polymerization, MMA monomer (density 0.94 g/cm³) is converted to PMMA polymer (density 1.19 g/cm³). This density increase causes significant volumetric contraction.", {
x: 0.45, y: 1.6, w: 9.1, h: 0.8, fontSize: 13, color: C.darkText, fontFace: "Calibri", valign: "middle"
});
// Values table
const rows = [
["Parameter", "Heat-Cure PMMA", "Self-Cure PMMA", "Clinical Impact"],
["Volumetric shrinkage", "~6–7% (theoretical 21%*)", "~6–7%", "Offset by mould constraint"],
["Linear shrinkage", "0.53%", "0.26%", "Affects arch fit & occlusion"],
["Net processing shrinkage", "0.2–0.5%", "~0.26%", "Residual after water sorption"],
["Water sorption compensation", "0.6 mg/cm²", "0.6 mg/cm²", "Partially reverses shrinkage"],
];
const colWidths = [2.5, 2.2, 2.2, 2.3];
const colXs = [0.3, 2.82, 5.04, 7.26];
rows.forEach((row, ri) => {
row.forEach((cell, ci) => {
const bgColor = ri === 0 ? C.navy : ri % 2 === 0 ? C.lightGray : C.white;
const txtColor = ri === 0 ? C.white : C.darkText;
const bold = ri === 0 || ci === 0;
s.addShape(pres.ShapeType.rect, {
x: colXs[ci], y: 2.52 + ri * 0.42, w: colWidths[ci], h: 0.42,
fill: { color: bgColor }, line: { color: "BBBEC3", width: 0.5 }
});
s.addText(cell, {
x: colXs[ci] + 0.05, y: 2.52 + ri * 0.42, w: colWidths[ci] - 0.1, h: 0.42,
fontSize: ri === 0 ? 11 : 10.5, bold, color: ri === 0 ? C.white : (ci === 0 ? C.navy : C.darkText),
fontFace: "Calibri", valign: "middle"
});
});
});
s.addText("*21% volumetric shrinkage is the free (unconstrained) value for MMA→PMMA conversion. The mould constrains shrinkage significantly, resulting in net processing shrinkage of 0.2–0.5%.", {
x: 0.3, y: 4.65, w: 9.3, h: 0.55, fontSize: 10, color: C.midText, fontFace: "Calibri", italic: true
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 13 — RESIDUAL MONOMER
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Residual Monomer", "Incomplete Polymerization & Its Consequences");
sectionTag(s, "06 Monomer", "8E44AD");
footerLine(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 9.3, h: 0.62, fill: { color: "F3EFF7" }, line: { color: "8E44AD", width: 1.5 } });
s.addText("Residual monomer = unbound MMA remaining in the cured resin due to incomplete polymerization. Freshly processed PMMA: ~0.5% residual monomer. After water leaching: <0.2%.", {
x: 0.45, y: 1.58, w: 9.1, h: 0.56, fontSize: 12.5, color: C.darkText, italic: true, fontFace: "Calibri", valign: "middle"
});
// Two columns
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 2.28, w: 4.5, h: 0.38, fill: { color: "8E44AD" } });
s.addText("Causes of High Residual Monomer", { x: 0.3, y: 2.28, w: 4.5, h: 0.38, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Incorrect powder-to-liquid ratio (excess monomer)",
"Inadequate curing temperature",
"Insufficient curing time",
"Microwave overcrowding / uneven energy distribution",
"Early deflasking before complete polymerization",
], 0.3, 2.7, 4.5, 1.8, { fontSize: 12.5 });
s.addShape(pres.ShapeType.rect, { x: 5.1, y: 2.28, w: 4.6, h: 0.38, fill: { color: C.red } });
s.addText("Consequences", { x: 5.1, y: 2.28, w: 4.6, h: 0.38, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Tissue irritation & allergic contact stomatitis",
"MMA is a known allergen → burning sensation",
"Hydrolysis produces methacrylic acid → cytotoxic",
"Reduces physical-mechanical properties of resin",
"Residual MMA detected after 17–30 years of wear",
"Increases water sorption & reduces dimensional stability",
], 5.1, 2.7, 4.6, 1.8, { fontSize: 12 });
// Bottom box
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.6, w: 9.3, h: 0.58, fill: { color: "F3EFF7" }, line: { color: "8E44AD", width: 1 } });
s.addText("Management: Post-cure heat treatment, water storage (leaching), or microwave post-curing can significantly reduce residual monomer content.", {
x: 0.45, y: 4.63, w: 9.1, h: 0.52, fontSize: 12, color: C.darkText, fontFace: "Calibri", italic: true, valign: "middle"
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 14 — TOOTH MOVEMENT / DISPLACEMENT
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Tooth Movement During Processing", "Displacement Affecting Occlusion & Aesthetics");
sectionTag(s, "07 Teeth", C.green);
footerLine(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.55, w: 9.3, h: 0.62, fill: { color: "E9F7EF" }, line: { color: C.green, width: 1.5 } });
s.addText("During processing, the artificial teeth may shift from their set positions, resulting in occlusal discrepancies and aesthetic problems in the finished denture.", {
x: 0.45, y: 1.58, w: 9.1, h: 0.56, fontSize: 12.5, italic: true, color: C.darkText, fontFace: "Calibri", valign: "middle"
});
const cols = [
{
title: "Causes",
color: C.red,
items: [
"Excessive monomer in the mix — teeth float or displace",
"Packing too early (sandy/stringy stage) — material not uniform",
"Hydraulic pressure during flask closure displaces teeth",
"Wax not fully removed during dewaxing — residual wax under teeth",
"Flash removal technique applies pressure on teeth",
]
},
{
title: "Clinical Consequences",
color: C.orange,
items: [
"Open contacts between teeth",
"Cuspal interdigitation errors",
"Premature occlusal contacts → sore spots",
"Aesthetic problems — midline shift, rotation",
"Poor phonetics",
]
},
{
title: "Prevention",
color: C.green,
items: [
"Pack in DOUGH stage — optimal consistency",
"Complete and careful dewaxing",
"Controlled flask closure under hydraulic press",
"Check tooth positions during trial closure",
"Use correct P:L ratio to avoid excess monomer",
]
}
];
cols.forEach((col, ci) => {
const x = 0.3 + ci * 3.18;
s.addShape(pres.ShapeType.rect, { x, y: 2.28, w: 3.08, h: 0.38, fill: { color: col.color } });
s.addText(col.title, { x, y: 2.28, w: 3.08, h: 0.38, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
col.items.forEach((item, ii) => {
s.addShape(pres.ShapeType.rect, { x, y: 2.7 + ii * 0.5, w: 0.22, h: 0.4, fill: { color: col.color } });
s.addText("→", { x, y: 2.7 + ii * 0.5, w: 0.22, h: 0.4, fontSize: 11, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: x + 0.22, y: 2.7 + ii * 0.5, w: 2.86, h: 0.4, fill: { color: ii % 2 === 0 ? C.white : C.lightGray } });
s.addText(item, { x: x + 0.28, y: 2.7 + ii * 0.5, w: 2.76, h: 0.4, fontSize: 10.5, color: C.darkText, fontFace: "Calibri", valign: "middle" });
});
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 15 — OTHER ERRORS: INCOMPLETE SEATING + COLOUR
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Other Processing Errors", "Incomplete Flask Closure, Colour Changes & Flasking Errors");
sectionTag(s, "Additional", C.midText);
footerLine(s);
const errors2 = [
{
title: "Incomplete Flask Closure (Thick Denture)",
color: C.red,
points: [
"Over-packing: too much dough prevents flask from closing fully",
"Results in a denture that is too thick vertically",
"Creates increased vertical dimension of occlusion (VDO) in the patient",
"Prevention: use adequate but not excessive amount of dough; check flash",
]
},
{
title: "Colour Variation / Discolouration",
color: C.orange,
points: [
"Over-heating during cure → yellowing of resin",
"Contamination of mould with wax residue → patchy colour",
"Incorrect separating medium → affects surface aesthetics",
"Prevention: controlled temperature; thorough dewaxing; proper separating medium",
]
},
{
title: "Flasking Errors",
color: C.teal,
points: [
"Air trapping in investment → defective surface reproduction",
"Plaster contamination of stone → rough tissue surface",
"Incomplete wax elimination → residual wax in mould",
"Prevention: vibrate investment during flasking; thorough boil-out",
]
},
];
errors2.forEach((e, i) => {
const y = 1.55 + i * 1.2;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 9.3, h: 1.1, fill: { color: C.white }, line: { color: e.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 3.0, h: 1.1, fill: { color: e.color } });
s.addText(e.title, { x: 0.38, y: y + 0.22, w: 2.85, h: 0.65, fontSize: 12.5, bold: true, color: C.white, fontFace: "Calibri", valign: "middle", align: "center" });
e.points.forEach((pt, pi) => {
s.addText(`• ${pt}`, { x: 3.45, y: y + 0.02 + pi * 0.26, w: 6.05, h: 0.26, fontSize: 11, color: C.darkText, fontFace: "Calibri", valign: "middle" });
});
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 16 — PREVENTION MASTER TABLE
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Prevention — Master Reference Table", "Quick Guide for Each Processing Error");
sectionTag(s, "08 Prevention", C.green);
footerLine(s);
const tableData = [
["Error", "Primary Cause", "Key Prevention"],
["Internal Porosity", "Monomer boils (>100.3°C) in thick sections", "Long slow curing cycle (74°C × 8 h)"],
["External Porosity (Type 1)", "Inhomogeneous dough — unequal shrinkage", "Pack in dough stage; correct P:L ratio"],
["External Porosity (Type 2)", "Insufficient pressure / inadequate dough", "Adequate dough; check for flash"],
["Crazing", "Tensile stress, solvents, rapid wetting/drying", "Slow cool; avoid solvents; store in water"],
["Warpage", "Rapid cooling / residual processing stress", "Bench-cool; correct cycle; no premature deflask"],
["Shrinkage", "MMA → PMMA density change", "Adequate pressure; correct P:L ratio"],
["Residual Monomer", "Incomplete polymerization", "Correct P:L; full curing time and temperature"],
["Tooth Movement", "Excess monomer; premature packing", "Pack in dough stage; controlled closure"],
["Thick Denture", "Over-packing (excess dough)", "Verify flash; use hydraulic press"],
];
const colW = [2.2, 3.55, 3.37];
const colX = [0.3, 2.52, 6.09];
tableData.forEach((row, ri) => {
row.forEach((cell, ci) => {
const bg = ri === 0 ? C.navy : (ri % 2 === 0 ? C.lightGray : C.white);
const fc = ri === 0 ? C.white : (ci === 0 ? C.navy : C.darkText);
s.addShape(pres.ShapeType.rect, {
x: colX[ci], y: 1.55 + ri * 0.38, w: colW[ci], h: 0.38,
fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 }
});
s.addText(cell, {
x: colX[ci] + 0.06, y: 1.55 + ri * 0.38, w: colW[ci] - 0.1, h: 0.38,
fontSize: ri === 0 ? 12 : 10.5, bold: ri === 0 || ci === 0,
color: fc, fontFace: "Calibri", valign: "middle"
});
});
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 17 — SUMMARY & CLINICAL PEARLS
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.2, fill: { color: "0A1E3A" } });
s.addText("Summary & Clinical Pearls", {
x: 0.4, y: 0.2, w: 9.2, h: 0.75, fontSize: 28, bold: true, color: C.white, fontFace: "Calibri"
});
const pearls = [
{ num: "1", text: "TEMPERATURE CONTROL is the single most important factor in preventing porosity and warpage. Never rush the curing cycle.", color: C.gold },
{ num: "2", text: "Pack resin in the DOUGH STAGE — this prevents tooth movement, external porosity, and ensures homogeneity.", color: C.teal },
{ num: "3", text: "FLASH = adequate material. Always verify flash during trial closure before final closure.", color: C.green },
{ num: "4", text: "COOL SLOWLY — bench-cooling prevents warpage from differential thermal contraction.", color: C.orange },
{ num: "5", text: "RESIDUAL MONOMER is biologically relevant — complete polymerization protects the patient's oral tissues.", color: "9B59B6" },
{ num: "6", text: "Water sorption PARTIALLY compensates for shrinkage — store dentures in water between appointments.", color: C.red },
];
pearls.forEach((p, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.35 : 5.18;
const y = 1.3 + row * 1.35;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.6, h: 1.2, fill: { color: "0E2A50" }, line: { color: p.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.5, h: 1.2, fill: { color: p.color } });
s.addText(p.num, { x, y, w: 0.5, h: 1.2, fontSize: 20, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(p.text, { x: x + 0.6, y: y + 0.15, w: 3.88, h: 0.9, fontSize: 12, color: C.lightGray, fontFace: "Calibri", valign: "middle" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 18 — THANK YOU / REFERENCES
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.35, h: 5.625, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 0, w: 0.12, h: 5.625, fill: { color: C.gold } });
s.addText("Thank You", {
x: 0.7, y: 0.7, w: 9, h: 0.9, fontSize: 42, bold: true, color: C.white, fontFace: "Calibri"
});
s.addText("Questions & Discussion", {
x: 0.7, y: 1.6, w: 9, h: 0.5, fontSize: 20, color: C.gold, fontFace: "Calibri", italic: true
});
s.addShape(pres.ShapeType.rect, { x: 0.7, y: 2.25, w: 7, h: 0.06, fill: { color: C.teal } });
s.addText("Key References", {
x: 0.7, y: 2.4, w: 9, h: 0.38, fontSize: 16, bold: true, color: C.lightGray, fontFace: "Calibri"
});
const refs = [
"1. Anusavice KJ, Shen C, Rawls HR. Phillips' Science of Dental Materials. 12th ed. Elsevier Saunders; 2013.",
"2. McCabe JF, Walls AWG. Applied Dental Materials. 9th ed. Blackwell Publishing; 2008.",
"3. Craig RG, Powers JM. Restorative Dental Materials. 11th ed. Mosby; 2002.",
"4. Raszewski Z. Problems with working with acrylic resins. Open Access J Sci. 2020;4(4):131–133.",
"5. Kasina SP et al. Porosities in acrylic mandibular denture bases. J Int Oral Health. 2014;6(1):72–77.",
"6. Venus H et al. Processing methods and acrylic resins on accuracy of maxillary dentures. Quintessence Int. 2011;42:669–677.",
];
refs.forEach((r, i) => {
s.addText(r, {
x: 0.7, y: 2.85 + i * 0.38, w: 9.0, h: 0.36,
fontSize: 11, color: C.lightGray, fontFace: "Calibri"
});
});
}
// WRITE FILE
pres.writeFile({ fileName: "/home/daytona/workspace/denture-ppt/Processing_Errors_Denture_Base_Resin.pptx" })
.then(() => console.log("PPTX written successfully."))
.catch(e => { console.error("Error:", e); process.exit(1); });
cd /home/daytona/workspace/denture-ppt && node build.js
ls -lh /home/daytona/workspace/denture-ppt/Processing_Errors_Denture_Base_Resin.…
Processing Errors Denture Base Resin
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title Slide — Bold navy/gold design |
| 2 | Contents at a Glance — 8 numbered topic cards |
| 3 | Introduction — PMMA history, ADA classification (Types I–V) |
| 4 | Processing Overview — Compression mould steps + both curing cycles |
| 5 | Processing Errors Overview — All 6 errors on a dark background overview card |
| 6 | Porosity: Overview — Definition, 4-column clinical significance panel |
| 7 | Internal Porosity — Mechanism (monomer boiling), why thick sections are affected, prevention |
| 8 | External Porosity — Two distinct types (inhomogeneity vs. insufficient pressure) side by side |
| 9 | Crazing — Three causes (mechanical stress, solvent, water sorption) with colour-coded rows |
| 10 | Crazing: Clinical & Prevention — Impact + prevention + important note box |
| 11 | Warpage & Distortion — Three causes with remedy for each |
| 12 | Polymerization Shrinkage — Comparison table (heat-cure vs. self-cure, volumetric vs. linear) |
| 13 | Residual Monomer — Causes, consequences, management |
| 14 | Tooth Movement — Three-column layout: causes / consequences / prevention |
| 15 | Other Errors — Incomplete flask closure, colour changes, flasking errors |
| 16 | Prevention Master Table — Quick-reference table for all errors |
| 17 | Summary & 6 Clinical Pearls — Dark background, colour-coded pearl cards |
| 18 | Thank You + References — 6 key references |
Can you make me a detailed ppt on processing errors in denture base and resin for presenting seminar
Processing Errors Denture Base Resin
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title Slide — Bold navy/gold design |
| 2 | Contents at a Glance — 8 numbered topic cards |
| 3 | Introduction — PMMA history, ADA classification (Types I–V) |
| 4 | Processing Overview — Compression mould steps + curing cycles |
| 5 | Processing Errors Overview — All 6 errors at a glance |
| 6 | Porosity: Overview — Definition + 4 clinical significance panels |
| 7 | Internal Porosity — Monomer boiling mechanism, why thick sections, prevention |
| 8 | External Porosity — Two types side by side (inhomogeneity vs. insufficient pressure) |
| 9 | Crazing — Three causes: mechanical stress, solvent, water sorption |
| 10 | Crazing: Clinical & Prevention — Impact, prevention, important distinction note |
| 11 | Warpage & Distortion — Three causes, each with a remedy |
| 12 | Polymerization Shrinkage — Comparison table (heat-cure vs. self-cure) |
| 13 | Residual Monomer — Causes, biological consequences, management |
| 14 | Tooth Movement — Three-column: causes / consequences / prevention |
| 15 | Other Errors — Flask closure errors, colour changes, flasking errors |
| 16 | Prevention Master Table — Quick-reference for every error |
| 17 | Summary & 6 Clinical Pearls — Key take-home points |
| 18 | Thank You + References — 6 key references (Anusavice, McCabe, Craig, etc.) |
Can you make me a detailed ppt with pictures attached on the topic processing errors in denture base and resin for presenting seminar
denture base porosity acrylic resin processing error clinical photo
denture warpage crazing acrylic resin fracture clinical image
# Test which images are accessible urls=( "https://pocketdentistry.com/wp-con…
# Download 5 accessible images into the project folder mkdir -p /home/daytona/w…
mkdir -p /home/daytona/workspace/denture-ppt/images curl -s -L --max-time 15 -o…
PMMA denture base polymerization shrinkage diagram resin processing dental
curl -s -L --max-time 15 -o "/home/daytona/workspace/denture-ppt/images/shrinka…
~/denture-ppt/build_with_images.js
const pptxgen = require("pptxgenjs");
const fs = require("fs");
const path = require("path");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Processing Errors in Denture Base Resin";
// ─── COLOUR PALETTE ───────────────────────────────────────────────
const C = {
navy: "0D2B55",
teal: "1A7A8A",
gold: "E8A020",
light: "EAF4F7",
white: "FFFFFF",
lightGray: "DDE8ED",
darkText: "12293E",
midText: "2A5070",
red: "C0392B",
green: "1E7D4A",
orange: "D4600A",
purple: "7D3C98",
darkBg: "0A1E3A",
};
// ─── IMAGE HELPER ─────────────────────────────────────────────────
const IMG_DIR = path.join(__dirname, "images");
function imgPath(filename) {
const full = path.join(IMG_DIR, filename);
if (fs.existsSync(full) && fs.statSync(full).size > 500) return full;
return null;
}
// ─── LAYOUT HELPERS ───────────────────────────────────────────────
function titleBar(slide, text, subtitle) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.05, fill: { color: C.navy } });
slide.addText(text, { x: 0.3, y: 0.05, w: 9.4, h: 0.68, fontSize: 25, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
if (subtitle) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 1.05, w: 10, h: 0.32, fill: { color: C.teal } });
slide.addText(subtitle, { x: 0.3, y: 1.05, w: 9.4, h: 0.32, fontSize: 12.5, color: C.white, fontFace: "Calibri", italic: true, valign: "middle" });
}
}
function sectionTag(slide, label, color) {
slide.addShape(pres.ShapeType.rect, { x: 8.1, y: 0.13, w: 1.75, h: 0.38, fill: { color: color || C.gold } });
slide.addText(label, { x: 8.1, y: 0.13, w: 1.75, h: 0.38, fontSize: 10.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
}
function footer(slide) {
slide.addShape(pres.ShapeType.line, { x: 0.3, y: 5.38, w: 9.4, h: 0, line: { color: C.teal, width: 1 } });
slide.addText("Processing Errors in Denture Base Resin | Prosthodontics Seminar", {
x: 0.3, y: 5.4, w: 9.4, h: 0.2, fontSize: 8.5, color: C.teal, fontFace: "Calibri", align: "center"
});
}
function addImg(slide, filename, x, y, w, h, opts = {}) {
const p = imgPath(filename);
if (p) {
slide.addImage({ path: p, x, y, w, h, ...opts });
return true;
}
return false;
}
function imagePlaceholder(slide, label, x, y, w, h) {
slide.addShape(pres.ShapeType.rect, { x, y, w, h, fill: { color: C.lightGray }, line: { color: C.teal, width: 1 } });
slide.addText(label, { x, y, w, h, fontSize: 11, color: C.teal, align: "center", valign: "middle", fontFace: "Calibri", italic: true });
}
function addBullets(slide, items, x, y, w, h, opts = {}) {
const textArr = items.map((item, i) => ({
text: typeof item === "string" ? item : item.text,
options: {
bullet: true,
breakLine: i < items.length - 1,
bold: typeof item === "object" ? item.bold || false : false,
color: typeof item === "object" ? item.color || C.darkText : C.darkText,
fontSize: opts.fontSize || 13,
indentLevel: typeof item === "object" ? item.indent || 0 : 0,
}
}));
slide.addText(textArr, { x, y, w, h, fontFace: "Calibri", paraSpaceAfter: 4, valign: "top", ...opts });
}
// Caption helper
function caption(slide, text, x, y, w) {
slide.addShape(pres.ShapeType.rect, { x, y, w, h: 0.28, fill: { color: C.navy } });
slide.addText(text, { x, y, w, h: 0.28, fontSize: 9.5, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", italic: true });
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE SLIDE
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.35, h: 5.625, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 0, w: 0.12, h: 5.625, fill: { color: C.gold } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.5, w: 10, h: 1.125, fill: { color: C.darkBg } });
s.addText("Processing Errors in", { x: 0.7, y: 0.65, w: 9, h: 0.8, fontSize: 38, bold: true, color: C.white, fontFace: "Calibri" });
s.addText("Denture Base Resin", { x: 0.7, y: 1.42, w: 9, h: 0.8, fontSize: 38, bold: true, color: C.gold, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.7, y: 2.38, w: 6.5, h: 0.06, fill: { color: C.teal } });
s.addText("A Comprehensive Seminar Presentation", { x: 0.7, y: 2.52, w: 8.5, h: 0.42, fontSize: 18, color: C.lightGray, fontFace: "Calibri", italic: true });
s.addText("Causes • Classification • Prevention • Clinical Implications", { x: 0.7, y: 3.0, w: 8.5, h: 0.38, fontSize: 14, color: C.lightGray, fontFace: "Calibri" });
s.addText("Department of Prosthodontics", { x: 0.7, y: 4.6, w: 6, h: 0.3, fontSize: 13, color: C.lightGray, fontFace: "Calibri" });
// Small acrylic overview image on right
if (!addImg(s, "acrylic_overview.jpg", 6.8, 0.8, 2.9, 3.3)) {
imagePlaceholder(s, "PMMA Denture Base", 6.8, 0.8, 2.9, 3.3);
}
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 2 — TABLE OF CONTENTS
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Contents at a Glance");
footer(s);
const topics = [
{ num: "01", title: "Introduction & Composition", sub: "PMMA, ADA types, processing overview" },
{ num: "02", title: "Porosity", sub: "Internal porosity & External porosity" },
{ num: "03", title: "Crazing", sub: "Surface micro-cracks — causes, prevention" },
{ num: "04", title: "Warpage & Distortion", sub: "Shape change, cooling errors" },
{ num: "05", title: "Polymerization Shrinkage", sub: "Volumetric & linear shrinkage" },
{ num: "06", title: "Residual Monomer", sub: "Incomplete polymerization, toxicity" },
{ num: "07", title: "Tooth Movement", sub: "Displacement, occlusal errors" },
{ num: "08", title: "Prevention Summary", sub: "Master table & clinical pearls" },
];
topics.forEach((t, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.15;
const y = 1.45 + row * 0.87;
const bg = i % 2 === 0 ? C.navy : C.teal;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.7, h: 0.75, fill: { color: bg } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.55, h: 0.75, fill: { color: C.gold } });
s.addText(t.num, { x, y, w: 0.55, h: 0.75, fontSize: 16, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(t.title, { x: x + 0.62, y: y + 0.05, w: 3.95, h: 0.28, fontSize: 13, bold: true, color: C.white, fontFace: "Calibri" });
s.addText(t.sub, { x: x + 0.62, y: y + 0.38, w: 3.95, h: 0.28, fontSize: 9.5, color: C.lightGray, fontFace: "Calibri" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 3 — INTRODUCTION & COMPOSITION
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Introduction", "Poly(Methyl Methacrylate) — The Gold Standard Denture Base");
sectionTag(s, "01 Intro", C.navy);
footer(s);
// Left text
s.addText("Why PMMA?", { x: 0.3, y: 1.48, w: 5.5, h: 0.35, fontSize: 15, bold: true, color: C.navy, fontFace: "Calibri" });
addBullets(s, [
"Material of choice for denture bases since 1940s",
"Available as Powder (PMMA polymer) + Liquid (MMA monomer)",
"Tooth-coloured, dimensionally stable, easily processed",
"Despite decades of use, processing errors remain a major clinical challenge",
"Understanding errors → better clinical outcomes",
], 0.3, 1.88, 5.4, 1.85, { fontSize: 13 });
// Right image
if (!addImg(s, "pmma_processing.png", 5.9, 1.45, 3.8, 2.62)) {
imagePlaceholder(s, "PMMA Processing Diagram", 5.9, 1.45, 3.8, 2.62);
}
caption(s, "Fig. Processing methods for PMMA denture bases", 5.9, 4.07, 3.8);
// ADA Types bottom strip
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.42, w: 9.3, h: 0.36, fill: { color: C.navy } });
s.addText("ADA Classification: Type I — Heat cure | Type II — Auto/cold cure | Type III — Thermoplastic | Type IV — Light activated | Type V — Microwave", {
x: 0.3, y: 4.42, w: 9.3, h: 0.36, fontSize: 11, color: C.white, fontFace: "Calibri", align: "center", valign: "middle"
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 4 — PROCESSING STEPS
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Processing Overview", "Compression Mould Technique & Stages of Acrylic Mixing");
sectionTag(s, "01 Intro", C.navy);
footer(s);
// Left — processing stages
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.45, w: 4.4, h: 0.36, fill: { color: C.teal } });
s.addText("Stages of Mixing (P:L Ratio 3:1)", { x: 0.3, y: 1.45, w: 4.4, h: 0.36, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const stages = [
{ name: "Sandy Stage", desc: "Gritty, no cohesion. Do NOT pack.", color: C.red },
{ name: "Stringy Stage", desc: "Sticky, pulls to threads. Avoid packing.", color: C.orange },
{ name: "Dough Stage ✓", desc: "Non-sticky, homogenous. IDEAL for packing.", color: C.green },
{ name: "Rubbery Stage", desc: "Elastic, rebounds. Too late to pack.", color: C.teal },
{ name: "Hard Stage", desc: "Fully set. Crumbles if forced.", color: C.navy },
];
stages.forEach((st, i) => {
const y = 1.86 + i * 0.56;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 1.1, h: 0.5, fill: { color: st.color } });
s.addText(st.name, { x: 0.3, y, w: 1.1, h: 0.5, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 1.4, y, w: 3.3, h: 0.5, fill: { color: i % 2 === 0 ? C.white : C.lightGray } });
s.addText(st.desc, { x: 1.45, y, w: 3.2, h: 0.5, fontSize: 12, color: C.darkText, fontFace: "Calibri", valign: "middle" });
});
// Right — image and curing cycles
if (!addImg(s, "pmma_structure.png", 5.0, 1.45, 4.65, 2.8)) {
imagePlaceholder(s, "PMMA Molecular Structure & Curing", 5.0, 1.45, 4.65, 2.8);
}
caption(s, "Fig. PMMA polymer structure and cross-linking", 5.0, 4.25, 4.65);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.56, w: 4.4, h: 0.62, fill: { color: "EBF5FB" }, line: { color: C.teal, width: 1 } });
s.addText("Curing: Long cycle (74°C × 8 h → 100°C × 1 h) preferred over short cycle to prevent porosity and warpage.", {
x: 0.4, y: 4.58, w: 4.2, h: 0.58, fontSize: 11.5, color: C.darkText, fontFace: "Calibri", valign: "middle"
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 5 — ERRORS OVERVIEW GRAPHIC
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.1, fill: { color: C.darkBg } });
s.addText("Processing Errors — Overview", { x: 0.4, y: 0.18, w: 9.2, h: 0.72, fontSize: 28, bold: true, color: C.white, fontFace: "Calibri" });
const errs = [
{ name: "Porosity", sub: "Internal & External", color: C.red },
{ name: "Crazing", sub: "Surface micro-cracks", color: C.orange },
{ name: "Warpage", sub: "Shape distortion", color: C.gold },
{ name: "Shrinkage", sub: "Volumetric & linear", color: C.teal },
{ name: "Residual Monomer", sub: "Incomplete cure", color: C.purple },
{ name: "Tooth Movement", sub: "Displacement", color: C.green },
];
errs.forEach((e, i) => {
const col = i % 3, row = Math.floor(i / 3);
const x = 0.35 + col * 3.2;
const y = 1.2 + row * 2.1;
s.addShape(pres.ShapeType.rect, { x, y, w: 3.05, h: 1.95, fill: { color: "0A2240" }, line: { color: e.color, width: 2.5 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 3.05, h: 0.12, fill: { color: e.color } });
s.addText(e.name, { x: x + 0.1, y: y + 0.22, w: 2.85, h: 0.6, fontSize: 18, bold: true, color: e.color, fontFace: "Calibri", align: "center" });
s.addText(e.sub, { x: x + 0.1, y: y + 0.88, w: 2.85, h: 0.42, fontSize: 13, color: C.lightGray, fontFace: "Calibri", align: "center" });
// small indicator bar
s.addShape(pres.ShapeType.rect, { x: x + 0.6, y: y + 1.42, w: 1.85, h: 0.28, fill: { color: e.color } });
s.addText("See dedicated slide →", { x: x + 0.6, y: y + 1.42, w: 1.85, h: 0.28, fontSize: 9, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 6 — POROSITY: OVERVIEW + IMAGE
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Porosity", "The Most Frequent Processing Error — Definition & Clinical Significance");
sectionTag(s, "02 Porosity", C.red);
footer(s);
// Left text
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.45, w: 5.5, h: 0.6, fill: { color: "FADBD8" }, line: { color: C.red, width: 1.5 } });
s.addText("Voids, bubbles, or pores within or on the surface of the polymerized denture base resin.", {
x: 0.42, y: 1.48, w: 5.35, h: 0.55, fontSize: 12.5, color: C.darkText, fontFace: "Calibri", italic: true, valign: "middle"
});
s.addText("Clinical Consequences:", { x: 0.3, y: 2.14, w: 5.5, h: 0.32, fontSize: 14, bold: true, color: C.navy, fontFace: "Calibri" });
const impacts = [
{ icon: "✗", label: "Aesthetics", desc: "Unsightly white/grey voids visible on surface", color: C.orange },
{ icon: "✗", label: "Hygiene", desc: "Harbours Candida & bacteria — uncleanable surface", color: C.red },
{ icon: "✗", label: "Strength", desc: "Stress concentration → fracture initiation sites", color: C.teal },
{ icon: "✗", label: "Odour", desc: "Traps food debris → patient dissatisfaction", color: C.navy },
];
impacts.forEach((imp, i) => {
const y = 2.52 + i * 0.6;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.42, h: 0.52, fill: { color: imp.color } });
s.addText(imp.icon, { x: 0.3, y, w: 0.42, h: 0.52, fontSize: 16, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.74, y, w: 5.05, h: 0.52, fill: { color: i % 2 === 0 ? C.white : C.lightGray } });
s.addText(imp.label + ": ", { x: 0.82, y, w: 1.2, h: 0.52, fontSize: 12.5, bold: true, color: imp.color, fontFace: "Calibri", valign: "middle" });
s.addText(imp.desc, { x: 1.85, y, w: 3.85, h: 0.52, fontSize: 12, color: C.darkText, fontFace: "Calibri", valign: "middle" });
});
// Right image
if (!addImg(s, "porosity_diagram.jpg", 6.05, 1.45, 3.65, 3.7)) {
imagePlaceholder(s, "Porosity in denture base resin", 6.05, 1.45, 3.65, 3.7);
}
caption(s, "Fig. Porosity visible in processed denture base resin", 6.05, 5.15, 3.65);
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 7 — INTERNAL POROSITY
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Internal Porosity", "Gaseous Porosity — Monomer Vaporisation Deep Within the Resin Mass");
sectionTag(s, "02 Porosity", C.red);
footer(s);
// Image top-right
if (!addImg(s, "porosity_types.jpg", 5.65, 1.42, 4.0, 2.9)) {
imagePlaceholder(s, "Internal vs External Porosity Types", 5.65, 1.42, 4.0, 2.9);
}
caption(s, "Fig. Types of porosity in denture base resin", 5.65, 4.32, 4.0);
// Left text
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 5.2, h: 0.35, fill: { color: C.red } });
s.addText("Key Features", { x: 0.3, y: 1.42, w: 5.2, h: 0.35, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Spherical voids WITHIN the bulk — not on the surface",
"Develops preferentially in THICKER sections",
"Caused by vaporisation of MMA monomer (b.p. 100.3°C)",
"Polymerisation is exothermic — heat accumulates in thick areas",
"Local temp exceeds 100.3°C → monomer boils before polymerising",
], 0.3, 1.82, 5.2, 2.0, { fontSize: 12.5 });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 3.88, w: 5.2, h: 0.35, fill: { color: C.green } });
s.addText("Prevention", { x: 0.3, y: 3.88, w: 5.2, h: 0.35, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Use the LONG curing cycle: 74°C × 8 h → 100°C × 1 h",
"Temperature stays below MMA boiling point throughout",
"Gives exothermic heat time to dissipate safely",
], 0.3, 4.27, 5.2, 0.95, { fontSize: 12.5 });
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 8 — EXTERNAL POROSITY
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "External Porosity", "Surface Voids — Two Distinct Mechanisms");
sectionTag(s, "02 Porosity", C.red);
footer(s);
// Type 1
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 4.55, h: 3.78, fill: { color: C.white }, line: { color: C.orange, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 4.55, h: 0.48, fill: { color: C.orange } });
s.addText("TYPE 1 — Lack of Homogeneity", { x: 0.3, y: 1.42, w: 4.55, h: 0.48, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText("Mechanism:", { x: 0.45, y: 1.98, w: 4.25, h: 0.28, fontSize: 12.5, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Portions with MORE monomer shrink MORE than adjacent areas on polymerization. Localised differential shrinkage → voids on the surface.", {
x: 0.45, y: 2.28, w: 4.25, h: 0.85, fontSize: 12, color: C.darkText, fontFace: "Calibri"
});
s.addText("Appearance:", { x: 0.45, y: 3.18, w: 4.25, h: 0.28, fontSize: 12.5, bold: true, color: C.navy, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.45, y: 3.48, w: 4.25, h: 0.32, fill: { color: C.orange } });
s.addText("Resin appears WHITE / CHALKY in affected area", { x: 0.45, y: 3.48, w: 4.25, h: 0.32, fontSize: 11.5, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText("Prevention: Correct P:L ratio. Mix thoroughly. Pack ONLY in dough stage.", {
x: 0.45, y: 3.9, w: 4.25, h: 0.55, fontSize: 11.5, color: C.green, fontFace: "Calibri", bold: true
});
// Type 2
s.addShape(pres.ShapeType.rect, { x: 5.15, y: 1.42, w: 4.55, h: 3.78, fill: { color: C.white }, line: { color: C.red, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: 5.15, y: 1.42, w: 4.55, h: 0.48, fill: { color: C.red } });
s.addText("TYPE 2 — Lack of Adequate Pressure", { x: 5.15, y: 1.42, w: 4.55, h: 0.48, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText("Mechanism:", { x: 5.3, y: 1.98, w: 4.25, h: 0.28, fontSize: 12.5, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Insufficient clamp pressure OR inadequate dough prevents proper mould fill. Air becomes trapped at the resin-mould interface → non-spherical voids.", {
x: 5.3, y: 2.28, w: 4.25, h: 0.85, fontSize: 12, color: C.darkText, fontFace: "Calibri"
});
s.addText("Appearance:", { x: 5.3, y: 3.18, w: 4.25, h: 0.28, fontSize: 12.5, bold: true, color: C.navy, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 5.3, y: 3.48, w: 4.25, h: 0.32, fill: { color: C.red } });
s.addText("Resin appears LIGHTER; irregular, non-spherical voids", { x: 5.3, y: 3.48, w: 4.25, h: 0.32, fontSize: 11.5, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText("Prevention: Adequate dough quantity. Check for FLASH during trial closure. Maintain clamp pressure throughout curing.", {
x: 5.3, y: 3.9, w: 4.25, h: 0.55, fontSize: 11.5, color: C.green, fontFace: "Calibri", bold: true
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 9 — CRAZING
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Crazing", "Network of Micro-Cracks in the Denture Base Resin");
sectionTag(s, "03 Crazing", C.orange);
footer(s);
// Definition banner
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 9.3, h: 0.55, fill: { color: "FEF9E7" }, line: { color: C.gold, width: 1.5 } });
s.addText("Formation of a network of surface and subsurface cracks (crazes) running perpendicular to the direction of tensile stress. Crazes weaken the resin and reduce aesthetics.", {
x: 0.42, y: 1.45, w: 9.1, h: 0.5, fontSize: 12.5, color: C.darkText, fontFace: "Calibri", italic: true, valign: "middle"
});
s.addText("Three Causes of Crazing:", { x: 0.3, y: 2.06, w: 6, h: 0.32, fontSize: 14, bold: true, color: C.navy, fontFace: "Calibri" });
const causes = [
{ num: "1", title: "Mechanical / Tensile Stresses", detail: "Residual internal stresses from differential processing shrinkage, or external forces during use. Stresses exceed the critical craze-initiation stress of PMMA.", color: C.red },
{ num: "2", title: "Solvent Attack", detail: "Solvents (acetone, nail-polish remover, alcohol) cause localised swelling of the polymer chains → differential expansion → tensile stress → crazing.", color: C.orange },
{ num: "3", title: "Incorporation of Water", detail: "Rapid wetting after drying (or vice versa) creates cyclic expansion-contraction stresses. If magnitude exceeds threshold → craze initiation.", color: C.teal },
];
causes.forEach((c, i) => {
const y = 2.44 + i * 0.86;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.42, h: 0.76, fill: { color: c.color } });
s.addText(c.num, { x: 0.3, y, w: 0.42, h: 0.76, fontSize: 18, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.74, y, w: 5.5, h: 0.76, fill: { color: i % 2 === 0 ? C.white : C.lightGray }, line: { color: c.color, width: 1 } });
s.addText(c.title, { x: 0.85, y: y + 0.04, w: 5.3, h: 0.28, fontSize: 13, bold: true, color: c.color, fontFace: "Calibri" });
s.addText(c.detail, { x: 0.85, y: y + 0.32, w: 5.3, h: 0.4, fontSize: 11.5, color: C.darkText, fontFace: "Calibri" });
});
// Right: fracture image
if (!addImg(s, "fracture1.png", 6.5, 2.06, 3.45, 2.9)) {
imagePlaceholder(s, "Crazing / fracture in acrylic resin", 6.5, 2.06, 3.45, 2.9);
}
caption(s, "Fig. Fracture patterns in acrylic denture base", 6.5, 4.96, 3.45);
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 10 — CRAZING CLINICAL & PREVENTION
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Crazing", "Clinical Impact & Prevention");
sectionTag(s, "03 Crazing", C.orange);
footer(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 4.5, h: 0.35, fill: { color: C.orange } });
s.addText("Clinical Significance", { x: 0.3, y: 1.42, w: 4.5, h: 0.35, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Weakens the denture base — stress concentration",
"Crazes propagate → complete fracture under masticatory force",
"Reduces aesthetic quality of the prosthesis",
"Difficult to repair — usually requires remaking",
"Crazing ≠ fracture: surfaces still joined by polymer fibrils (craze bridging); when fibrils rupture → true crack",
], 0.3, 1.82, 4.5, 2.0, { fontSize: 12.5 });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 3.9, w: 4.5, h: 0.35, fill: { color: C.green } });
s.addText("Prevention", { x: 0.3, y: 3.9, w: 4.5, h: 0.35, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Correct curing cycle → minimal residual stress",
"Bench-cool the flask — never quench in cold water",
"Avoid solvents (nail polish, acetone-based cleaners)",
"Store denture in water — prevent drying-rewetting cycles",
], 0.3, 4.3, 4.5, 0.9, { fontSize: 12 });
// Right image
if (!addImg(s, "fracture2.png", 5.05, 1.42, 4.6, 3.55)) {
imagePlaceholder(s, "Acrylic resin fracture / crazing specimen", 5.05, 1.42, 4.6, 3.55);
}
caption(s, "Fig. Experimental fracture specimens of acrylic resin denture base", 5.05, 4.97, 4.6);
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 11 — WARPAGE & DISTORTION
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Warpage & Distortion", "Dimensional Inaccuracy Affecting Fit, Occlusion & Function");
sectionTag(s, "04 Warpage", C.gold);
footer(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 9.3, h: 0.52, fill: { color: "EBF5FB" }, line: { color: C.teal, width: 1.5 } });
s.addText("Warpage: Deformity or change in the shape of the denture base that adversely affects its fit to the tissues, occlusion, and function. Can occur DURING or AFTER processing.", {
x: 0.42, y: 1.45, w: 9.1, h: 0.46, fontSize: 12.5, italic: true, color: C.darkText, fontFace: "Calibri", valign: "middle"
});
s.addText("Causes of Warpage:", { x: 0.3, y: 2.03, w: 9.2, h: 0.32, fontSize: 14, bold: true, color: C.navy, fontFace: "Calibri" });
const causes = [
{
title: "1. Rapid Cooling After Curing",
detail: "Flask quenched in cold water → resin and investment contract at DIFFERENT rates → differential thermal contraction → internal warping stresses.",
remedy: "Bench-cool or slow-cool. NEVER quench.",
color: C.red
},
{
title: "2. Processing Shrinkage",
detail: "Linear shrinkage 0.53% (heat cure) creates uneven arch distortion — palatal vault and ridge-lapping areas most affected.",
remedy: "Adequate pack pressure; correct P:L ratio; injection moulding reduces this.",
color: C.orange
},
{
title: "3. Premature Deflasking",
detail: "Removing denture while flask still hot — residual stresses not yet resolved → warpage occurs as resin relaxes to lower-energy conformation.",
remedy: "Allow flask to cool to room temperature before deflasking.",
color: C.teal
},
];
causes.forEach((c, i) => {
const y = 2.42 + i * 0.86;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 9.3, h: 0.78, fill: { color: C.white }, line: { color: c.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.14, h: 0.78, fill: { color: c.color } });
s.addText(c.title, { x: 0.5, y: y + 0.04, w: 8.95, h: 0.28, fontSize: 13, bold: true, color: c.color, fontFace: "Calibri" });
s.addText(c.detail + " — Fix: " + c.remedy, { x: 0.5, y: y + 0.32, w: 8.95, h: 0.4, fontSize: 11.5, color: C.darkText, fontFace: "Calibri" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 12 — POLYMERIZATION SHRINKAGE
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Polymerization Shrinkage", "Inevitable Volume Change During PMMA Curing");
sectionTag(s, "05 Shrinkage", C.teal);
footer(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 9.3, h: 0.78, fill: { color: "EBF5FB" } });
s.addText("MMA monomer (density 0.94 g/cm³) → PMMA polymer (density 1.19 g/cm³)\nThis density increase causes volumetric contraction. The mould constrains shrinkage so net processing shrinkage is smaller than theoretical.", {
x: 0.42, y: 1.45, w: 9.1, h: 0.72, fontSize: 13, color: C.darkText, fontFace: "Calibri", valign: "middle"
});
// Table
const rows = [
["Parameter", "Heat-Cure", "Self-Cure", "Clinical Impact"],
["Theoretical volumetric shrinkage", "~21%", "~21%", "Constrained by mould"],
["Actual volumetric shrinkage", "6–7%", "6–7%", "Offset by mould walls"],
["Linear shrinkage", "0.53%", "0.26%", "Affects arch fit & occlusion"],
["Net processing shrinkage", "0.2–0.5%", "~0.26%", "After water sorption"],
["Water sorption (compensation)", "0.6 mg/cm²", "0.6 mg/cm²", "Partially reverses shrinkage"],
];
const colW = [3.2, 1.65, 1.65, 2.65];
const colX = [0.3, 3.52, 5.19, 6.86];
rows.forEach((row, ri) => {
row.forEach((cell, ci) => {
const bg = ri === 0 ? C.navy : (ri % 2 === 0 ? C.lightGray : C.white);
s.addShape(pres.ShapeType.rect, { x: colX[ci], y: 2.27 + ri * 0.44, w: colW[ci], h: 0.44, fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(cell, {
x: colX[ci] + 0.06, y: 2.27 + ri * 0.44, w: colW[ci] - 0.1, h: 0.44,
fontSize: ri === 0 ? 11 : 10.5, bold: ri === 0 || ci === 0,
color: ri === 0 ? C.white : (ci === 0 ? C.navy : C.darkText),
fontFace: "Calibri", valign: "middle"
});
});
});
s.addText("Water sorption (0.6 mg/cm²) expands the resin and PARTIALLY compensates for processing shrinkage — this is reversible. Dentures should be stored in water to maintain this compensation.", {
x: 0.3, y: 4.95, w: 9.3, h: 0.35, fontSize: 10.5, color: C.midText, fontFace: "Calibri", italic: true
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 13 — RESIDUAL MONOMER + image
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Residual Monomer", "Incomplete Polymerization & Biological Consequences");
sectionTag(s, "06 Monomer", C.purple);
footer(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 9.3, h: 0.55, fill: { color: "F4ECF7" }, line: { color: C.purple, width: 1.5 } });
s.addText("Residual monomer = unbound MMA remaining after incomplete polymerisation. Fresh PMMA ≈ 0.5% residual MMA. After water leaching: <0.2%. Detected in dentures worn for 17–30 years.", {
x: 0.42, y: 1.45, w: 9.1, h: 0.5, fontSize: 12, color: C.darkText, fontFace: "Calibri", italic: true, valign: "middle"
});
// Left columns
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 2.06, w: 4.5, h: 0.35, fill: { color: C.purple } });
s.addText("Causes", { x: 0.3, y: 2.06, w: 4.5, h: 0.35, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Incorrect powder:liquid ratio (excess monomer)",
"Inadequate curing temperature or time",
"Short curing cycle / early deflasking",
"Microwave overcrowding — uneven energy",
"Overheating followed by rapid cool (inhibition)",
], 0.3, 2.46, 4.5, 1.75, { fontSize: 12.5 });
s.addShape(pres.ShapeType.rect, { x: 5.0, y: 2.06, w: 4.6, h: 0.35, fill: { color: C.red } });
s.addText("Consequences", { x: 5.0, y: 2.06, w: 4.6, h: 0.35, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
addBullets(s, [
"Tissue irritation, burning mouth sensation",
"Allergic contact stomatitis (MMA is an allergen)",
"Hydrolysis → methacrylic acid → cytotoxic",
"Reduces mechanical properties of resin",
"Increases water sorption, reduces stability",
], 5.0, 2.46, 4.6, 1.75, { fontSize: 12.5 });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.28, w: 9.3, h: 0.32, fill: { color: C.green } });
s.addText("Management: Complete polymerisation cycle | Post-cure heat treatment | Water storage (leaching) | Correct P:L ratio", {
x: 0.3, y: 4.28, w: 9.3, h: 0.32, fontSize: 11.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 14 — TOOTH MOVEMENT
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Tooth Movement During Processing", "Displacement Affecting Occlusion & Aesthetics");
sectionTag(s, "07 Teeth", C.green);
footer(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 9.3, h: 0.5, fill: { color: "E9F7EF" }, line: { color: C.green, width: 1.5 } });
s.addText("Artificial teeth may shift from their set positions during processing, resulting in occlusal discrepancies and aesthetic problems in the finished denture.", {
x: 0.42, y: 1.45, w: 9.1, h: 0.44, fontSize: 12.5, italic: true, color: C.darkText, fontFace: "Calibri", valign: "middle"
});
const cols = [
{
title: "Causes", color: C.red,
items: ["Excess monomer — teeth float", "Packing in sandy/stringy stage", "Flask closure pressure displaces teeth", "Residual wax under teeth post-dewaxing", "Flash removal technique"]
},
{
title: "Consequences", color: C.orange,
items: ["Open contacts between teeth", "Cuspal interdigitation errors", "Premature contacts → sore spots", "Midline shift, rotation (aesthetic issue)", "Impaired phonetics"]
},
{
title: "Prevention", color: C.green,
items: ["Pack ONLY in dough stage", "Thorough and complete dewaxing", "Controlled flask closure — hydraulic press", "Check tooth positions at trial closure", "Correct P:L ratio — avoid excess monomer"]
}
];
cols.forEach((col, ci) => {
const x = 0.3 + ci * 3.18;
s.addShape(pres.ShapeType.rect, { x, y: 2.02, w: 3.08, h: 0.35, fill: { color: col.color } });
s.addText(col.title, { x, y: 2.02, w: 3.08, h: 0.35, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
col.items.forEach((item, ii) => {
const y = 2.42 + ii * 0.54;
s.addShape(pres.ShapeType.rect, { x, y, w: 0.28, h: 0.48, fill: { color: col.color } });
s.addText("▶", { x, y, w: 0.28, h: 0.48, fontSize: 10, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: x + 0.28, y, w: 2.8, h: 0.48, fill: { color: ii % 2 === 0 ? C.white : C.lightGray } });
s.addText(item, { x: x + 0.34, y, w: 2.7, h: 0.48, fontSize: 11.5, color: C.darkText, fontFace: "Calibri", valign: "middle" });
});
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 15 — OTHER ERRORS (Flask closure, Colour, Flasking)
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Other Processing Errors", "Incomplete Flask Closure, Colour Changes & Flasking Errors");
sectionTag(s, "Additional", C.midText);
footer(s);
const errors = [
{
title: "Incomplete Flask Closure (Over-packing)",
color: C.red,
points: ["Too much dough → flask cannot close fully", "Results in a denture that is TOO THICK", "Creates increased vertical dimension of occlusion (VDO)", "Prevention: adequate dough; verify flash during trial closure"],
},
{
title: "Colour Variation / Discolouration",
color: C.orange,
points: ["Overheating during cure → YELLOWING of resin", "Wax residue in mould → patchy surface colour", "Incorrect separating medium → aesthetic defect", "Prevention: controlled temperature; thorough dewaxing; correct tin foil substitute"],
},
{
title: "Flasking & Dewaxing Errors",
color: C.teal,
points: ["Air trapped in investment → defective surface reproduction", "Plaster/stone contamination → rough tissue-bearing surface", "Incomplete wax elimination → wax residue under resin", "Prevention: vibrate investment; full boil-out; inspect mould before packing"],
},
];
errors.forEach((e, i) => {
const y = 1.45 + i * 1.24;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 9.3, h: 1.15, fill: { color: C.white }, line: { color: e.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 2.75, h: 1.15, fill: { color: e.color } });
s.addText(e.title, { x: 0.38, y: y + 0.22, w: 2.58, h: 0.7, fontSize: 12.5, bold: true, color: C.white, fontFace: "Calibri", valign: "middle", align: "center" });
e.points.forEach((pt, pi) => {
s.addText("• " + pt, { x: 3.18, y: y + 0.06 + pi * 0.26, w: 6.28, h: 0.26, fontSize: 11.5, color: C.darkText, fontFace: "Calibri", valign: "middle" });
});
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 16 — PREVENTION MASTER TABLE
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
titleBar(s, "Prevention — Master Reference Table", "Quick Clinical Guide for Every Processing Error");
sectionTag(s, "08 Prevention", C.green);
footer(s);
const tableData = [
["Error", "Primary Cause", "Key Prevention"],
["Internal Porosity", "MMA boils (>100.3°C) in thick sections", "Long slow curing cycle (74°C × 8 h)"],
["External Porosity — Type 1", "Inhomogeneous dough — unequal shrinkage", "Dough stage packing; correct P:L ratio"],
["External Porosity — Type 2", "Insufficient pressure / inadequate dough", "Adequate dough; check for flash"],
["Crazing", "Tensile stress, solvents, rapid wetting/drying", "Slow cool; avoid solvents; store in water"],
["Warpage", "Rapid cooling / residual processing stress", "Bench-cool; correct cycle; no premature deflask"],
["Polymerization Shrinkage", "MMA → PMMA density change (0.94→1.19)", "Adequate pressure; correct P:L; injection mould"],
["Residual Monomer", "Incomplete polymerization", "Full cycle; correct P:L; post-cure heat treatment"],
["Tooth Movement", "Excess monomer; premature packing stage", "Dough stage packing; controlled flask closure"],
["Thick Denture", "Over-packing (excess dough)", "Check flash; hydraulic press controlled closure"],
];
const colW = [2.35, 3.55, 3.27];
const colX = [0.3, 2.67, 6.24];
tableData.forEach((row, ri) => {
row.forEach((cell, ci) => {
const bg = ri === 0 ? C.navy : (ri % 2 === 0 ? C.lightGray : C.white);
const fc = ri === 0 ? C.white : (ci === 0 ? C.navy : C.darkText);
s.addShape(pres.ShapeType.rect, { x: colX[ci], y: 1.45 + ri * 0.39, w: colW[ci], h: 0.39, fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(cell, {
x: colX[ci] + 0.06, y: 1.45 + ri * 0.39, w: colW[ci] - 0.1, h: 0.39,
fontSize: ri === 0 ? 11.5 : 10.5, bold: ri === 0 || ci === 0,
color: fc, fontFace: "Calibri", valign: "middle"
});
});
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 17 — SUMMARY & CLINICAL PEARLS
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.1, fill: { color: C.darkBg } });
s.addText("Summary & Clinical Pearls", { x: 0.4, y: 0.18, w: 9.2, h: 0.72, fontSize: 27, bold: true, color: C.white, fontFace: "Calibri" });
const pearls = [
{ num: "1", text: "TEMPERATURE CONTROL is the single most critical factor — never rush the curing cycle, especially for thick denture bases.", color: C.gold },
{ num: "2", text: "Pack ONLY in the DOUGH STAGE — prevents tooth movement, external porosity, and ensures resin homogeneity.", color: C.teal },
{ num: "3", text: "FLASH = adequate material. Always verify flash at trial closure before final press.", color: C.green },
{ num: "4", text: "BENCH-COOL the flask — never quench in cold water. Slow cooling prevents warpage from differential thermal contraction.", color: C.orange },
{ num: "5", text: "RESIDUAL MONOMER matters biologically. MMA is an allergen — complete polymerisation protects the patient.", color: C.purple },
{ num: "6", text: "Water sorption PARTIALLY reverses shrinkage — store dentures in water between appointments.", color: C.red },
];
pearls.forEach((p, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col === 0 ? 0.35 : 5.18;
const y = 1.2 + row * 1.38;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.62, h: 1.25, fill: { color: "0E2A50" }, line: { color: p.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.5, h: 1.25, fill: { color: p.color } });
s.addText(p.num, { x, y, w: 0.5, h: 1.25, fontSize: 20, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(p.text, { x: x + 0.6, y: y + 0.15, w: 3.9, h: 0.95, fontSize: 12.5, color: C.lightGray, fontFace: "Calibri", valign: "middle" });
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 18 — THANK YOU / REFERENCES
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.35, h: 5.625, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 0, w: 0.12, h: 5.625, fill: { color: C.gold } });
s.addText("Thank You", { x: 0.7, y: 0.65, w: 9, h: 0.85, fontSize: 42, bold: true, color: C.white, fontFace: "Calibri" });
s.addText("Questions & Discussion", { x: 0.7, y: 1.5, w: 9, h: 0.45, fontSize: 20, color: C.gold, fontFace: "Calibri", italic: true });
s.addShape(pres.ShapeType.rect, { x: 0.7, y: 2.05, w: 7, h: 0.06, fill: { color: C.teal } });
s.addText("Key References", { x: 0.7, y: 2.2, w: 9, h: 0.35, fontSize: 16, bold: true, color: C.lightGray, fontFace: "Calibri" });
const refs = [
"1. Anusavice KJ, Shen C, Rawls HR. Phillips' Science of Dental Materials. 12th ed. Elsevier Saunders; 2013.",
"2. McCabe JF, Walls AWG. Applied Dental Materials. 9th ed. Blackwell Publishing; 2008.",
"3. Craig RG, Powers JM. Restorative Dental Materials. 11th ed. Mosby; 2002.",
"4. Raszewski Z. Problems with working with acrylic resins. Open Access J Sci. 2020;4(4):131–133.",
"5. Kasina SP et al. Porosities in acrylic mandibular denture bases. J Int Oral Health. 2014;6(1):72–77.",
"6. Wolfaardt JF et al. Occurrence of porosity in heat-cured PMMA denture base. J Prosthet Dent. 1986;55:393–400.",
];
refs.forEach((r, i) => {
s.addText(r, { x: 0.7, y: 2.65 + i * 0.38, w: 9.0, h: 0.36, fontSize: 11, color: C.lightGray, fontFace: "Calibri" });
});
}
// ─── WRITE ────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/denture-ppt/Processing_Errors_With_Images.pptx" })
.then(() => console.log("Done."))
.catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/denture-ppt && node build_with_images.js
ls -lh /home/daytona/workspace/denture-ppt/Processing_Errors_With_Images.pptx
Processing Errors With Images
Presentation · PPTX
| Image | Placed on slide |
|---|---|
| PMMA denture base overview photo | Title slide |
| PMMA processing methods diagram | Slide 3 — Introduction |
| PMMA polymer structure & curing | Slide 4 — Processing overview |
| Porosity in processed denture base resin | Slide 6 — Porosity overview |
| Types of porosity illustration | Slide 7 — Internal porosity |
| Acrylic resin fracture specimens | Slides 9 & 10 — Crazing |
| # | Slide | Key visual |
|---|---|---|
| 1 | Title slide | Acrylic denture base photo |
| 2 | Contents at a glance | Colour-coded topic cards |
| 3 | Introduction & composition | PMMA processing methods diagram |
| 4 | Processing overview & mixing stages | PMMA structure figure |
| 5 | All 6 errors at a glance | Colour-coded overview grid |
| 6 | Porosity — overview & significance | Porosity photo with caption |
| 7 | Internal porosity — cause & prevention | Porosity types diagram |
| 8 | External porosity — 2 types | Side-by-side comparison cards |
| 9 | Crazing — 3 causes | Fracture pattern image |
| 10 | Crazing — clinical impact & prevention | Fracture specimens image |
| 11 | Warpage & distortion — 3 causes | Colour-coded cause cards |
| 12 | Polymerization shrinkage | Comparison data table |
| 13 | Residual monomer | Causes vs consequences columns |
| 14 | Tooth movement | 3-column layout |
| 15 | Other errors | Flask, colour, flasking |
| 16 | Prevention master table | Quick-reference for all errors |
| 17 | Summary & 6 clinical pearls | Dark background pearl cards |
| 18 | Thank you + 6 references | — |
Can you make me a detailed ppt with pictures attached on the topic heat activated denture base acrylic resin presenting seminar
heat activated denture base acrylic resin PMMA composition properties processing seminar
heat cured PMMA denture base flasking compression moulding injection moulding clinical photo
https://www.digital.avicennamch.com/updata/services/file_fil…
mkdir -p /home/daytona/workspace/heat-denture-ppt/images # Download all candida…
ls -lh /home/daytona/workspace/heat-denture-ppt/images/ 2>/dev/null || echo "no …
curl -s -L --max-time 12 -o "/home/daytona/workspace/heat-denture-ppt/images/po…
~/heat-denture-ppt/build.js
const pptxgen = require("pptxgenjs");
const fs = require("fs");
const path = require("path");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Heat Activated Denture Base Acrylic Resin";
const C = {
navy: "0B2545",
blue: "1565A8",
teal: "0E7490",
gold: "D4891A",
amber: "F59E0B",
light: "EFF6FF",
pale: "DBEAFE",
white: "FFFFFF",
lgray: "E2EBF5",
dtext: "0F2137",
mtext: "1E4070",
red: "BE2A2A",
green: "166534",
orange: "C2500A",
purple: "6B21A8",
darkbg: "071830",
};
const IMG = path.join(__dirname, "images");
function img(file) {
const p = path.join(IMG, file);
return (fs.existsSync(p) && fs.statSync(p).size > 500) ? p : null;
}
function addImg(s, file, x, y, w, h) {
const p = img(file);
if (p) { s.addImage({ path: p, x, y, w, h }); return true; }
s.addShape(pres.ShapeType.rect, { x, y, w, h, fill: { color: C.lgray }, line: { color: C.teal, width: 1 } });
s.addText("[Image]", { x, y, w, h, fontSize: 10, color: C.teal, align: "center", valign: "middle", fontFace: "Calibri", italic: true });
return false;
}
function cap(s, text, x, y, w) {
s.addShape(pres.ShapeType.rect, { x, y, w, h: 0.26, fill: { color: C.navy } });
s.addText(text, { x, y, w, h: 0.26, fontSize: 9, color: C.white, align: "center", valign: "middle", fontFace: "Calibri", italic: true });
}
function hdr(s, title, sub) {
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.05, fill: { color: C.navy } });
s.addText(title, { x: 0.3, y: 0.06, w: 9.3, h: 0.65, fontSize: 25, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
if (sub) {
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.05, w: 10, h: 0.3, fill: { color: C.teal } });
s.addText(sub, { x: 0.3, y: 1.05, w: 9.3, h: 0.3, fontSize: 12, color: C.white, fontFace: "Calibri", italic: true, valign: "middle" });
}
}
function tag(s, label, color) {
s.addShape(pres.ShapeType.rect, { x: 8.0, y: 0.14, w: 1.85, h: 0.36, fill: { color: color || C.gold } });
s.addText(label, { x: 8.0, y: 0.14, w: 1.85, h: 0.36, fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
}
function foot(s) {
s.addShape(pres.ShapeType.line, { x: 0.3, y: 5.38, w: 9.4, h: 0, line: { color: C.teal, width: 0.8 } });
s.addText("Heat Activated Denture Base Acrylic Resin | Prosthodontics Seminar", {
x: 0.3, y: 5.41, w: 9.4, h: 0.2, fontSize: 8.5, color: C.teal, fontFace: "Calibri", align: "center"
});
}
function bullets(s, items, x, y, w, h, sz = 13) {
const arr = items.map((it, i) => ({
text: typeof it === "string" ? it : it.t,
options: {
bullet: true, breakLine: i < items.length - 1,
bold: typeof it === "object" ? !!it.b : false,
color: typeof it === "object" ? it.c || C.dtext : C.dtext,
fontSize: typeof it === "object" ? it.sz || sz : sz,
indentLevel: typeof it === "object" ? it.indent || 0 : 0,
}
}));
s.addText(arr, { x, y, w, h, fontFace: "Calibri", paraSpaceAfter: 4, valign: "top" });
}
function secBox(s, title, color, x, y, w, h) {
s.addShape(pres.ShapeType.rect, { x, y, w, h: 0.34, fill: { color } });
s.addText(title, { x, y, w, h: 0.34, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
return y + 0.34;
}
// ════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.38, h: 5.625, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.38, y: 0, w: 0.12, h: 5.625, fill: { color: C.gold } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.5, w: 10, h: 1.125, fill: { color: C.darkbg } });
s.addText("Heat Activated", { x: 0.72, y: 0.55, w: 5.9, h: 0.72, fontSize: 36, bold: true, color: C.white, fontFace: "Calibri" });
s.addText("Denture Base", { x: 0.72, y: 1.25, w: 5.9, h: 0.72, fontSize: 36, bold: true, color: C.gold, fontFace: "Calibri" });
s.addText("Acrylic Resin", { x: 0.72, y: 1.95, w: 5.9, h: 0.72, fontSize: 36, bold: true, color: C.amber, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.72, y: 2.78, w: 5.5, h: 0.06, fill: { color: C.teal } });
s.addText("A Comprehensive Seminar Presentation", { x: 0.72, y: 2.9, w: 5.8, h: 0.4, fontSize: 17, color: C.lgray, fontFace: "Calibri", italic: true });
s.addText("Composition • Chemistry • Manipulation • Properties • Clinical Applications", { x: 0.72, y: 3.36, w: 5.8, h: 0.35, fontSize: 13, color: C.lgray, fontFace: "Calibri" });
s.addText("Department of Prosthodontics", { x: 0.72, y: 4.62, w: 5, h: 0.28, fontSize: 13, color: C.lgray, fontFace: "Calibri" });
addImg(s, "slide1_cover.jpg", 6.85, 0.5, 2.9, 3.85);
cap(s, "Heat-cured acrylic denture base resin", 6.85, 4.35, 2.9);
}
// ════════════════════════════════════════════════════════════════
// SLIDE 2 — TABLE OF CONTENTS
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Contents");
foot(s);
const toc = [
{ n: "01", t: "Introduction & Historical Background", c: C.navy },
{ n: "02", t: "Composition — Powder & Liquid", c: C.teal },
{ n: "03", t: "Chemical Basis of Polymerization", c: C.blue },
{ n: "04", t: "Manipulation Techniques", c: C.orange },
{ n: "05", t: "Curing Cycles", c: C.green },
{ n: "06", t: "Physical & Mechanical Properties", c: C.purple },
{ n: "07", t: "Heat Cure vs Self Cure", c: C.red },
{ n: "08", t: "Recent Advances", c: C.teal },
{ n: "09", t: "Clinical Implications & Summary", c: C.navy },
];
toc.forEach((t, i) => {
const col = i % 3, row = Math.floor(i / 3);
const x = 0.25 + col * 3.22;
const y = 1.42 + row * 1.28;
s.addShape(pres.ShapeType.rect, { x, y, w: 3.12, h: 1.1, fill: { color: t.c }, line: { color: t.c } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.52, h: 1.1, fill: { color: C.gold } });
s.addText(t.n, { x, y, w: 0.52, h: 1.1, fontSize: 16, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(t.t, { x: x + 0.58, y: y + 0.28, w: 2.48, h: 0.55, fontSize: 12, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 3 — INTRODUCTION
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Introduction", "Why Heat Activated PMMA? Historical Perspective & Definition");
tag(s, "01 Intro", C.navy);
foot(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 5.6, h: 0.7, fill: { color: C.pale }, line: { color: C.blue, width: 1.5 } });
s.addText("\"Denture base material: any substance of which a denture base may be made.\" — GPT-8\n\nPMMA has been the material of choice since the 1940s, replacing vulcanite rubber.", {
x: 0.42, y: 1.45, w: 5.38, h: 0.64, fontSize: 12, color: C.dtext, fontFace: "Calibri", italic: true, valign: "middle"
});
s.addText("Why PMMA Dominates:", { x: 0.3, y: 2.22, w: 5.6, h: 0.3, fontSize: 14, bold: true, color: C.navy, fontFace: "Calibri" });
bullets(s, [
"Excellent esthetics — tooth-coloured, easily pigmented",
"Simple processing — readily fabricated in dental labs",
"Good biocompatibility when fully polymerized",
"Repairability — fractured bases can be repaired",
"Low cost compared to alternatives",
"Long proven clinical track record (>80 years)",
], 0.3, 2.56, 5.6, 2.1, 13);
addImg(s, "slide2_bio.jpg", 6.15, 1.42, 3.55, 2.85);
cap(s, "Fig. Heat-cured PMMA denture base in clinical use", 6.15, 4.27, 3.55);
// Timeline bar
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.55, w: 5.6, h: 0.62, fill: { color: C.navy } });
s.addText("Historical milestones: Vulcanite (1851) → Celluloid (1870s) → PMMA first introduced to dentistry (1937, ICI UK) → Modern heat-cure resins (1940s–present)", {
x: 0.4, y: 4.57, w: 5.4, h: 0.58, fontSize: 10.5, color: C.white, fontFace: "Calibri", valign: "middle"
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 4 — COMPOSITION: POWDER
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Composition — The Powder (Polymer)", "Pre-polymerized PMMA Beads + Additives");
tag(s, "02 Composition", C.teal);
foot(s);
const powderItems = [
{ component: "Poly(methyl methacrylate) beads", role: "Main matrix component — pre-polymerized granules/beads", note: "Already polymerized; forms the backbone", color: C.blue },
{ component: "Benzoyl Peroxide (0.5%)", role: "Thermal initiator — produces free radicals on heating", note: "Decomposes at >60°C to release free radicals", color: C.red },
{ component: "Dibutyl Phthalate", role: "Plasticizer — adds flexibility to finished resin", note: "Softens polymer; improves impact resistance", color: C.orange },
{ component: "Zinc Oxide / Titanium Oxide", role: "Opacifier — makes resin radiopaque", note: "Improves opacity; aids radiographic detection", color: C.teal },
{ component: "Pigments", role: "Colourant — mimics oral mucosal shade", note: "Iron oxides for pink gingival appearance", color: C.purple },
{ component: "Synthetic Fibres (Nylon)", role: "Aesthetics — simulates blood vessels", note: "Red/pink fibres mimic mucosal vascularity", color: C.green },
];
powderItems.forEach((item, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.08;
const y = 1.42 + row * 1.26;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.65, h: 1.16, fill: { color: C.white }, line: { color: item.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 4.65, h: 0.34, fill: { color: item.color } });
s.addText(item.component, { x: x + 0.08, y, w: 4.5, h: 0.34, fontSize: 12.5, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
s.addText("Role: " + item.role, { x: x + 0.08, y: y + 0.37, w: 4.5, h: 0.3, fontSize: 11, color: C.dtext, fontFace: "Calibri" });
s.addText("Note: " + item.note, { x: x + 0.08, y: y + 0.68, w: 4.5, h: 0.3, fontSize: 10.5, color: item.color, fontFace: "Calibri", italic: true });
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 5 — COMPOSITION: LIQUID
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Composition — The Liquid (Monomer)", "Methyl Methacrylate + Additives");
tag(s, "02 Composition", C.teal);
foot(s);
const liquidItems = [
{ component: "Methyl Methacrylate (MMA)", role: "The monomer — main reactive liquid component", note: "CH₂=C(CH₃)-COOCH₃; forms PMMA on polymerization", color: C.blue },
{ component: "Cross-Linking Agent (EGDM)", role: "Ethylene glycol dimethacrylate — improves strength", note: "Reduces solubility, water sorption; improves rigidity", color: C.teal },
{ component: "Hydroquinone (Inhibitor)", role: "Prevents premature polymerization during storage", note: "~0.006%; removed/consumed before curing begins", color: C.orange },
];
liquidItems.forEach((item, i) => {
const y = 1.42 + i * 1.28;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 5.5, h: 1.18, fill: { color: C.white }, line: { color: item.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 5.5, h: 0.36, fill: { color: item.color } });
s.addText(item.component, { x: 0.38, y, w: 5.34, h: 0.36, fontSize: 13.5, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
s.addText("Function: " + item.role, { x: 0.38, y: y + 0.4, w: 5.34, h: 0.3, fontSize: 12, color: C.dtext, fontFace: "Calibri" });
s.addText("Detail: " + item.note, { x: 0.38, y: y + 0.72, w: 5.34, h: 0.3, fontSize: 11, color: item.color, fontFace: "Calibri", italic: true });
});
addImg(s, "slide3_comp.jpg", 6.05, 1.42, 3.65, 2.5);
cap(s, "Fig. PMMA powder-liquid system components", 6.05, 3.92, 3.65);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 5.05, w: 9.3, h: 0.28, fill: { color: C.navy } });
s.addText("P : L Ratio = 3 parts powder : 1 part liquid (by volume) — the recommended mixing ratio for optimal dough properties", {
x: 0.3, y: 5.05, w: 9.3, h: 0.28, fontSize: 11.5, bold: true, color: C.gold, align: "center", valign: "middle", fontFace: "Calibri"
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 6 — CHEMICAL BASIS OF POLYMERIZATION
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Chemical Basis of Polymerization", "Free Radical Addition Polymerization — Four Stages");
tag(s, "03 Chemistry", C.blue);
foot(s);
const stages = [
{ num: "1", name: "Induction / Activation", desc: "Benzoyl peroxide decomposes on heating (>60°C) into two free radicals (R•). Heat is the activator — this is what defines 'heat activated'.", color: C.blue },
{ num: "2", name: "Initiation", desc: "Free radical (R•) attacks the C=C double bond of MMA monomer, opening it and creating a reactive monomer radical (R-M•).", color: C.orange },
{ num: "3", name: "Propagation", desc: "The reactive radical R-M• repeatedly attacks additional MMA monomers, building long polymer chains. Exothermic — heat is released.", color: C.teal },
{ num: "4", name: "Termination", desc: "Polymer chain growth ends by combination of two chain radicals or disproportionation. Residual monomer remains if termination is premature.", color: C.red },
];
stages.forEach((st, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.12;
const y = 1.42 + row * 1.85;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.68, h: 1.72, fill: { color: C.white }, line: { color: st.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.52, h: 1.72, fill: { color: st.color } });
s.addText(st.num, { x, y, w: 0.52, h: 1.72, fontSize: 24, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(st.name, { x: x + 0.62, y: y + 0.1, w: 3.9, h: 0.4, fontSize: 14, bold: true, color: st.color, fontFace: "Calibri" });
s.addText(st.desc, { x: x + 0.62, y: y + 0.55, w: 3.9, h: 1.05, fontSize: 12, color: C.dtext, fontFace: "Calibri", valign: "top" });
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 7 — POLYMERIZATION CHEMISTRY (continued) + image
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Polymerization — Key Concepts", "Shrinkage, Exotherm & Residual Monomer");
tag(s, "03 Chemistry", C.blue);
foot(s);
// Left
const concepts = [
{ title: "Polymerization Shrinkage", detail: "MMA monomer (density 0.94 g/cm³) → PMMA (1.19 g/cm³). Theoretical volumetric shrinkage = 21%. Mould constraint limits net linear shrinkage to 0.2–0.53%.", color: C.red },
{ title: "Exothermic Reaction", detail: "Propagation releases heat. In thick sections, exotherm raises local temperature above 100.3°C (MMA boiling point) → porosity (internal). Controlled by long curing cycle.", color: C.orange },
{ title: "Residual Monomer", detail: "Heat-cured resin: ~0.5–1% residual MMA. Self-cured: 3–5%. Residual MMA is an allergen; post-curing and water leaching reduce it below 0.2%.", color: C.purple },
{ title: "Water Sorption", detail: "PMMA absorbs water (0.6 mg/cm²) which acts as a plasticizer. Partially compensates for processing shrinkage. Store dentures in water to maintain compensation.", color: C.teal },
];
concepts.forEach((c, i) => {
const y = 1.42 + i * 0.96;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 5.4, h: 0.88, fill: { color: C.white }, line: { color: c.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.14, h: 0.88, fill: { color: c.color } });
s.addText(c.title, { x: 0.52, y: y + 0.05, w: 5.08, h: 0.3, fontSize: 13, bold: true, color: c.color, fontFace: "Calibri" });
s.addText(c.detail, { x: 0.52, y: y + 0.36, w: 5.08, h: 0.46, fontSize: 11.5, color: C.dtext, fontFace: "Calibri" });
});
addImg(s, "polymerization.png", 5.92, 1.42, 3.78, 2.95);
cap(s, "Fig. PMMA polymer chain formation during heat-activated polymerization", 5.92, 4.37, 3.78);
}
// ════════════════════════════════════════════════════════════════
// SLIDE 8 — MANIPULATION: STAGES OF MIXING
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Manipulation Techniques", "Stages of Mixing — P:L Ratio 3:1 by Volume");
tag(s, "04 Manipulation", C.orange);
foot(s);
const stages = [
{ name: "1. Sandy Stage", time: "0–2 min", desc: "Powder and liquid coexist. No cohesion. Gritty texture.", color: C.red, pack: "❌ Do NOT pack" },
{ name: "2. Stringy Stage", time: "2–4 min", desc: "Sticky. Pulls into threads when touched. Monomer penetrating beads.", color: C.orange, pack: "❌ Avoid packing" },
{ name: "3. Dough Stage", time: "4–8 min", desc: "Non-sticky, cohesive, homogeneous mass. Optimal workability. Does not adhere to spatula.", color: C.green, pack: "✅ IDEAL — Pack now!" },
{ name: "4. Rubbery Stage", time: "8–10 min", desc: "Elastic. Springs back when compressed. Monomer largely absorbed.", color: C.blue, pack: "❌ Too late" },
{ name: "5. Hard/Set Stage", time: ">10 min", desc: "Fully hardened. Crumbles under force. No flow.", color: C.navy, pack: "❌ Cannot pack" },
];
stages.forEach((st, i) => {
const y = 1.42 + i * 0.78;
const isGood = i === 2;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 6.9, h: 0.7, fill: { color: isGood ? "#E6F4EA" : C.white }, line: { color: st.color, width: isGood ? 2.5 : 1 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 1.95, h: 0.7, fill: { color: st.color } });
s.addText(st.name, { x: 0.36, y: y + 0.04, w: 1.82, h: 0.32, fontSize: 12, bold: true, color: C.white, fontFace: "Calibri" });
s.addText(st.time, { x: 0.36, y: y + 0.38, w: 1.82, h: 0.28, fontSize: 10.5, color: C.white, fontFace: "Calibri" });
s.addText(st.desc, { x: 2.3, y: y + 0.06, w: 4.78, h: 0.42, fontSize: 12, color: C.dtext, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 7.28, y, w: 2.42, h: 0.7, fill: { color: isGood ? C.green : C.red } });
s.addText(st.pack, { x: 7.28, y, w: 2.42, h: 0.7, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
});
s.addText("Tip: Working time can be extended by refrigerating the resin in an airtight container in warm weather.", {
x: 0.3, y: 5.38, w: 7.9, h: 0.22, fontSize: 10, color: C.teal, fontFace: "Calibri", italic: true
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 9 — COMPRESSION MOULD TECHNIQUE
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Compression Mould Technique", "The Standard Method for Heat-Activated Denture Base Fabrication");
tag(s, "04 Manipulation", C.orange);
foot(s);
const steps = [
{ n: "1", t: "Flasking", d: "Master cast and wax trial denture invested in dental stone within a metal flask. Two-halves technique." },
{ n: "2", t: "Dewaxing", d: "Flask placed in boiling water (8–10 min). Wax softens and is flushed out. Mould cavity created." },
{ n: "3", t: "Separating Medium", d: "Tin-foil substitute (sodium alginate) or cold-mould seal applied to stone surfaces to prevent resin adhesion." },
{ n: "4", t: "Mixing Resin", d: "Powder and liquid combined (3:1). Placed in covered container until dough stage (4–8 min)." },
{ n: "5", t: "Packing", d: "Resin dough packed into mould. Trial closure performed. Excess (flash) removed. Flask closed with hydraulic press." },
{ n: "6", t: "Curing", d: "Flask immersed in water bath. Polymerization cycle performed under pressure to prevent porosity." },
{ n: "7", t: "Deflasking & Finishing", d: "Flask slowly cooled to room temperature. Denture removed. Excess resin trimmed. Surface polished." },
];
steps.forEach((st, i) => {
const col = i % 2 === 0 ? 0 : 1;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.08;
const y = 1.42 + row * 0.92;
if (i === 6) {
// last item spans full width
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42 + 3 * 0.92, w: 9.3, h: 0.84, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42 + 3 * 0.92, w: 0.5, h: 0.84, fill: { color: C.gold } });
s.addText(`Step ${st.n}: ${st.t}`, { x: 0.88, y: 1.42 + 3 * 0.92 + 0.04, w: 8.55, h: 0.3, fontSize: 13.5, bold: true, color: C.gold, fontFace: "Calibri" });
s.addText(st.d, { x: 0.88, y: 1.42 + 3 * 0.92 + 0.38, w: 8.55, h: 0.38, fontSize: 12, color: C.lgray, fontFace: "Calibri" });
return;
}
s.addShape(pres.ShapeType.rect, { x, y, w: 4.65, h: 0.84, fill: { color: C.white }, line: { color: C.blue, width: 1 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.45, h: 0.84, fill: { color: C.blue } });
s.addText(st.n, { x, y, w: 0.45, h: 0.84, fontSize: 16, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(st.t, { x: x + 0.52, y: y + 0.06, w: 4.04, h: 0.26, fontSize: 13, bold: true, color: C.blue, fontFace: "Calibri" });
s.addText(st.d, { x: x + 0.52, y: y + 0.34, w: 4.04, h: 0.44, fontSize: 11, color: C.dtext, fontFace: "Calibri" });
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 10 — INJECTION MOULD + IMAGE
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Injection Moulding Technique", "Alternative to Compression Moulding — Advantages & Limitations");
tag(s, "04 Manipulation", C.orange);
foot(s);
addImg(s, "dental_flask.jpg", 5.8, 1.42, 3.9, 3.1);
cap(s, "Fig. Dental flask for denture base processing", 5.8, 4.52, 3.9);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 5.3, h: 0.34, fill: { color: C.teal } });
s.addText("Injection Moulding — Concept", { x: 0.3, y: 1.42, w: 5.3, h: 0.34, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
bullets(s, [
"Resin injected into mould via sprues/ingates under pressure",
"Specially designed flask with carrier maintains pressure during processing",
"Lower resin viscosity required for injection",
"Flask placed in water bath after injection for heat curing",
], 0.3, 1.8, 5.3, 1.35, 12.5);
const advRow = [
{ label: "Advantages", items: ["Minimises tooth movement", "Better mould fill — less porosity", "Slightly improved fit accuracy", "Consistent resin distribution"], color: C.green },
{ label: "Limitations", items: ["Lower P:L ratio needed → more shrinkage", "Palatal seal area fit compromised", "More complex equipment", "Longer learning curve"], color: C.red },
];
advRow.forEach((col, ci) => {
const y = 3.22;
s.addShape(pres.ShapeType.rect, { x: 0.3 + ci * 2.68, y, w: 2.55, h: 0.34, fill: { color: col.color } });
s.addText(col.label, { x: 0.3 + ci * 2.68, y, w: 2.55, h: 0.34, fontSize: 12.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
col.items.forEach((it, ii) => {
s.addShape(pres.ShapeType.rect, { x: 0.3 + ci * 2.68, y: y + 0.38 + ii * 0.38, w: 2.55, h: 0.36, fill: { color: ii % 2 === 0 ? C.white : C.lgray } });
s.addText("• " + it, { x: 0.38 + ci * 2.68, y: y + 0.38 + ii * 0.36, w: 2.38, h: 0.36, fontSize: 11.5, color: C.dtext, fontFace: "Calibri", valign: "middle" });
});
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 11 — CURING CYCLES
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Curing Cycles", "Polymerization Cycle — The Most Critical Step in Processing");
tag(s, "05 Curing", C.green);
foot(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 9.3, h: 0.58, fill: { color: C.pale }, line: { color: C.blue, width: 1.5 } });
s.addText("The curing cycle is the controlled heating process that initiates and sustains polymerization in the denture mould. It must be carefully controlled to prevent porosity, warpage, and residual monomer.", {
x: 0.42, y: 1.45, w: 9.1, h: 0.52, fontSize: 12.5, color: C.dtext, fontFace: "Calibri", italic: true, valign: "middle"
});
// Cycle 1 — Long
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 2.1, w: 4.55, h: 2.95, fill: { color: C.white }, line: { color: C.green, width: 2.5 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 2.1, w: 4.55, h: 0.42, fill: { color: C.green } });
s.addText("✅ Long Cycle (RECOMMENDED)", { x: 0.3, y: 2.1, w: 4.55, h: 0.42, fontSize: 13.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText("Step 1:", { x: 0.45, y: 2.6, w: 4.25, h: 0.28, fontSize: 12.5, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Cure in water bath at 74°C for 8–10 hours", { x: 0.45, y: 2.9, w: 4.25, h: 0.28, fontSize: 12.5, color: C.dtext, fontFace: "Calibri" });
s.addText("Step 2:", { x: 0.45, y: 3.26, w: 4.25, h: 0.28, fontSize: 12.5, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Raise to 100°C for 1 hour (terminal boiling)", { x: 0.45, y: 3.56, w: 4.25, h: 0.28, fontSize: 12.5, color: C.dtext, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.45, y: 3.92, w: 4.1, h: 0.88, fill: { color: "#E6F4EA" } });
s.addText("Benefits: Temperature stays below MMA b.p. (100.3°C) throughout most of curing → prevents monomer boiling → no gaseous porosity. Slow exotherm dissipation → minimal warpage.", {
x: 0.52, y: 3.95, w: 3.95, h: 0.82, fontSize: 11, color: C.green, fontFace: "Calibri", valign: "top"
});
// Cycle 2 — Short
s.addShape(pres.ShapeType.rect, { x: 5.15, y: 2.1, w: 4.55, h: 2.95, fill: { color: C.white }, line: { color: C.orange, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: 5.15, y: 2.1, w: 4.55, h: 0.42, fill: { color: C.orange } });
s.addText("⚠ Short Cycle (Alternative)", { x: 5.15, y: 2.1, w: 4.55, h: 0.42, fontSize: 13.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText("Step 1:", { x: 5.3, y: 2.6, w: 4.25, h: 0.28, fontSize: 12.5, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Cure at 74°C for 2 hours", { x: 5.3, y: 2.9, w: 4.25, h: 0.28, fontSize: 12.5, color: C.dtext, fontFace: "Calibri" });
s.addText("Step 2:", { x: 5.3, y: 3.26, w: 4.25, h: 0.28, fontSize: 12.5, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Raise to 100°C for 30–60 min", { x: 5.3, y: 3.56, w: 4.25, h: 0.28, fontSize: 12.5, color: C.dtext, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 5.3, y: 3.92, w: 4.1, h: 0.88, fill: { color: "#FFF3E0" } });
s.addText("Risk: Exothermic reaction in thick sections may raise local temperature above 100.3°C → monomer vaporises → internal porosity. Adequate for thin, uniform sections only.", {
x: 5.38, y: 3.95, w: 3.95, h: 0.82, fontSize: 11, color: C.orange, fontFace: "Calibri", valign: "top"
});
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 5.08, w: 9.3, h: 0.26, fill: { color: C.red } });
s.addText("⚠ After any curing cycle: cool flask SLOWLY to room temperature (bench cool). Rapid quenching in cold water → differential thermal contraction → WARPAGE.", {
x: 0.38, y: 5.08, w: 9.15, h: 0.26, fontSize: 10.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri"
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 12 — PHYSICAL PROPERTIES
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Physical Properties", "Key Physical Characteristics of Heat-Cured PMMA");
tag(s, "06 Properties", C.purple);
foot(s);
const props = [
{ prop: "Density", val: "1.19 g/cm³", detail: "Comparable to natural tissues; lightweight prosthesis", color: C.blue },
{ prop: "Polymerisation Shrinkage", val: "0.2–0.53% (linear)", detail: "Volumetric ~6–7%; offset by mould constraint and water sorption", color: C.red },
{ prop: "Water Sorption", val: "0.6 mg/cm²", detail: "Partially compensates shrinkage; acts as plasticiser; reversible", color: C.teal },
{ prop: "Solubility", val: "0.04 mg/cm²", detail: "Insoluble in water/oral fluids; soluble in ketones, esters, chlorinated solvents", color: C.orange },
{ prop: "Thermal Conductivity", val: "Poor conductor", detail: "Cannot detect temperature changes through denture — discomfort; PMMA = 0.21 W/m·K", color: C.purple },
{ prop: "Coefficient of Thermal Expansion", val: "81 × 10⁻⁶ /°C", detail: "High CTE — risk of distortion if temperature changes rapidly", color: C.navy },
{ prop: "Heat Distortion Temp", val: "71–91°C", detail: "Denture may distort if exposed to boiling water repeatedly; repair temps must be controlled", color: C.orange },
{ prop: "Colour Stability", val: "± (slight yellowing)", detail: "Heat-cure PMMA yellows slightly over time; far superior to self-cure", color: C.gold },
{ prop: "Refractive Index", val: "1.49", detail: "Similar to enamel — contributes to natural appearance of denture teeth", color: C.teal },
];
const colW = [2.4, 1.7, 4.95];
const colX = [0.3, 2.72, 4.44];
// Header
["Property", "Value", "Clinical Significance"].forEach((h, ci) => {
s.addShape(pres.ShapeType.rect, { x: colX[ci], y: 1.42, w: colW[ci], h: 0.36, fill: { color: C.navy }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(h, { x: colX[ci] + 0.05, y: 1.42, w: colW[ci] - 0.1, h: 0.36, fontSize: 12, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
});
props.forEach((row, ri) => {
const y = 1.78 + ri * 0.38;
const bg = ri % 2 === 0 ? C.white : C.lgray;
[row.prop, row.val, row.detail].forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, { x: colX[ci], y, w: colW[ci], h: 0.38, fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(cell, {
x: colX[ci] + 0.05, y, w: colW[ci] - 0.1, h: 0.38,
fontSize: ci === 0 ? 11.5 : 11, bold: ci === 0, color: ci === 0 ? row.color : C.dtext,
fontFace: "Calibri", valign: "middle"
});
});
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 13 — MECHANICAL PROPERTIES + IMAGE
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Mechanical Properties", "Strength, Hardness, Fatigue & Fracture Behaviour of Heat-Cured PMMA");
tag(s, "06 Properties", C.purple);
foot(s);
addImg(s, "structure.png", 5.82, 1.42, 3.88, 2.65);
cap(s, "Fig. PMMA polymer microstructure (SEM)", 5.82, 4.07, 3.88);
const mechProps = [
{ prop: "Transverse/Flexural Strength", val: "~68–80 MPa", note: "Adequate for normal masticatory loads; lowest in pour type" },
{ prop: "Compressive Strength", val: "~75 MPa", note: "Higher than tensile strength" },
{ prop: "Tensile Strength", val: "~52 MPa", note: "Lower — fractures more easily under tension" },
{ prop: "Impact Strength", val: "Moderate", note: "Lowest for heat-cure; high-impact resins have rubber phase added" },
{ prop: "Hardness (Brinell)", val: "22 BHN", note: "Self-cure = 16–18 BHN; cross-linking improves hardness" },
{ prop: "Fatigue Strength", val: "Highest for heat-cure", note: "Lowest for pour type; improved by rubber reinforcement" },
{ prop: "Creep / Recovery", val: "Low creep", note: "Lowest creep values for heat-cure; improves with more cross-linking" },
{ prop: "Fracture Toughness", val: "High for rapid heat-cure", note: "Low for pour type; ANSI/ADA Spec No. 12 compliance required" },
];
const colW2 = [2.7, 1.4, 1.6];
const colX2 = [0.3, 3.02, 4.44];
["Property", "Value", "Note"].forEach((h, ci) => {
s.addShape(pres.ShapeType.rect, { x: colX2[ci], y: 1.42, w: colW2[ci], h: 0.34, fill: { color: C.purple }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(h, { x: colX2[ci] + 0.05, y: 1.42, w: colW2[ci] - 0.1, h: 0.34, fontSize: 12, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
});
mechProps.forEach((row, ri) => {
const y = 1.76 + ri * 0.42;
[row.prop, row.val, row.note].forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, { x: colX2[ci], y, w: colW2[ci], h: 0.42, fill: { color: ri % 2 === 0 ? C.white : C.lgray }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(cell, { x: colX2[ci] + 0.05, y, w: colW2[ci] - 0.1, h: 0.42, fontSize: ci === 1 ? 11.5 : 10.5, bold: ci === 0, color: ci === 0 ? C.purple : C.dtext, fontFace: "Calibri", valign: "middle" });
});
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 14 — HEAT CURE vs SELF CURE
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Heat Cure vs Self Cure Acrylic Resin", "Comparative Analysis of Clinical Properties");
tag(s, "07 Comparison", C.red);
foot(s);
const rows = [
["Property", "Heat-Cure PMMA", "Self-Cure PMMA"],
["Porosity", "Low (−−−)", "High (+++)"],
["Residual Monomer", "~0.5–1% (−−−)", "3–5% (+++)"],
["Colour Stability", "Good (+++)", "Inferior (−−−)"],
["Average Mol. Weight", "Higher (+++)", "Lower (−−−)"],
["Transverse Strength", "Higher (+++)", "Lower (−−−)"],
["Impact Strength", "Higher (+++)", "Lower (−−−)"],
["Hardness (Brinell)", "22 BHN (+++)", "16–18 BHN (−−−)"],
["Initial Deformation", "Low (−−−)", "High (+++)"],
["Distortion", "Low (−−−)", "Higher (+++)"],
["Creep", "Low (−−−)", "High (+++)"],
["Ease of Deflasking", "Harder (−−−)", "Easier (+++)"],
["Polymerisation Shrinkage", "0.53% (higher)", "0.26% (lower)"],
["Working Time", "Longer (++++)", "Shorter"],
["Processing Equipment", "Flask + water bath", "Room temp only"],
];
const colW3 = [2.85, 3.15, 3.15];
const colX3 = [0.28, 3.15, 6.32];
rows.forEach((row, ri) => {
const bg = ri === 0 ? C.navy : ri % 2 === 0 ? C.lgray : C.white;
row.forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, { x: colX3[ci], y: 1.42 + ri * 0.27, w: colW3[ci], h: 0.27, fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 } });
const fc = ri === 0 ? C.white : ci === 0 ? C.navy : ci === 1 ? C.green : C.red;
s.addText(cell, { x: colX3[ci] + 0.05, y: 1.42 + ri * 0.27, w: colW3[ci] - 0.1, h: 0.27, fontSize: ri === 0 ? 11.5 : 10.5, bold: ri === 0 || ci === 0, color: fc, fontFace: "Calibri", valign: "middle" });
});
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 15 — IDEAL REQUIREMENTS VS CLINICAL PERFORMANCE
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Ideal Requirements vs Clinical Performance", "ANSI/ADA Specification No. 12 & Real-World Performance");
tag(s, "06 Properties", C.purple);
foot(s);
const items = [
{ prop: "Dimensional stability", rating: "+++", desc: "Good — minimal dimensional change in service", met: true },
{ prop: "Resistance to weak acids/bases", rating: "+++", desc: "Good — stable in oral environment (pH 5–8)", met: true },
{ prop: "Effect of organic solvents", rating: "−−−", desc: "Soluble in ketones, esters, aromatic/chlorinated solvents", met: false },
{ prop: "Processing ease", rating: "+++", desc: "Good — straightforward with standard lab equipment", met: true },
{ prop: "Adhesion to metal/porcelain", rating: "−−−", desc: "Poor — requires mechanical retention (no chemical bond)", met: false },
{ prop: "Adhesion to acrylic teeth", rating: "+++", desc: "Good — chemical adhesion between resin components", met: true },
{ prop: "Colorability / Aesthetics", rating: "+++", desc: "Excellent — easily pigmented to match oral tissues", met: true },
{ prop: "Colour stability", rating: "±", desc: "Slight yellowing over time — superior to self-cure", met: true },
{ prop: "Taste and odour", rating: "+++", desc: "Tasteless and odourless when fully polymerized", met: true },
{ prop: "Thermal conductivity", rating: "−−−", desc: "Poor — patient cannot feel temperature through denture", met: false },
{ prop: "Tissue compatibility", rating: "+++", desc: "Biocompatible when fully cured; residual MMA is concern", met: true },
];
const colW4 = [2.55, 0.7, 5.7];
const colX4 = [0.28, 2.85, 3.57];
["Property", "Rating", "Clinical Comment"].forEach((h, ci) => {
s.addShape(pres.ShapeType.rect, { x: colX4[ci], y: 1.42, w: colW4[ci], h: 0.34, fill: { color: C.navy }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(h, { x: colX4[ci] + 0.05, y: 1.42, w: colW4[ci] - 0.1, h: 0.34, fontSize: 12, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
});
items.forEach((row, ri) => {
const y = 1.76 + ri * 0.34;
const bg = ri % 2 === 0 ? C.white : C.lgray;
[row.prop, row.rating, row.desc].forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, { x: colX4[ci], y, w: colW4[ci], h: 0.34, fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 } });
const fc = ci === 1 ? (row.met ? C.green : C.red) : ci === 0 ? C.navy : C.dtext;
s.addText(cell, { x: colX4[ci] + 0.05, y, w: colW4[ci] - 0.1, h: 0.34, fontSize: 10.5, bold: ci === 0, color: fc, fontFace: "Calibri", valign: "middle" });
});
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 16 — PROCESSING ERRORS + image
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Processing Errors & Defects", "Common Errors During Heat-Activated Denture Base Fabrication");
tag(s, "Defects", C.red);
foot(s);
addImg(s, "porosity_img.jpg", 6.0, 1.42, 3.7, 2.4);
cap(s, "Fig. Porosity defects in processed acrylic denture base", 6.0, 3.82, 3.7);
addImg(s, "fracture_img.png", 6.0, 4.12, 3.7, 1.15);
cap(s, "Fig. Fracture specimen", 6.0, 5.27, 3.7);
const errs = [
{ e: "Internal Porosity", c: "Monomer boils (>100.3°C) in thick sections", p: "Long slow curing cycle; avoid thick sections", col: C.red },
{ e: "External Porosity", c: "Inhomogeneous dough OR insufficient pressure", p: "Dough stage packing; check flash; adequate dough", col: C.orange },
{ e: "Crazing", c: "Tensile stress, solvent attack, water cycling", p: "Slow cool; avoid solvents; store in water", col: C.teal },
{ e: "Warpage", c: "Rapid cooling; premature deflasking", p: "Bench cool; deflask only at room temperature", col: C.blue },
{ e: "Tooth Movement", c: "Excess monomer; packing in wrong stage", p: "Dough stage; controlled hydraulic closure", col: C.purple },
{ e: "Residual Monomer", c: "Incomplete curing; wrong P:L ratio", p: "Full cycle; correct P:L; post-cure treatment", col: C.green },
];
errs.forEach((e, i) => {
const y = 1.42 + i * 0.65;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 5.56, h: 0.58, fill: { color: C.white }, line: { color: e.col, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.14, h: 0.58, fill: { color: e.col } });
s.addText(e.e, { x: 0.52, y: y + 0.02, w: 5.22, h: 0.26, fontSize: 12.5, bold: true, color: e.col, fontFace: "Calibri" });
s.addText("Cause: " + e.c + " | Fix: " + e.p, { x: 0.52, y: y + 0.28, w: 5.22, h: 0.26, fontSize: 10.5, color: C.dtext, fontFace: "Calibri" });
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 17 — RECENT ADVANCES
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Recent Advances", "Innovations in Heat-Activated Denture Base Acrylic Resins");
tag(s, "08 Advances", C.teal);
foot(s);
const advances = [
{
title: "High Impact Strength Resins",
desc: "Microdispersed rubber phase (butadiene-styrene copolymer) incorporated into PMMA polymer. Significantly improves impact and fatigue strength. Reduces rigidity slightly. Ideal for patients who drop dentures (elderly, Parkinson's).",
color: C.blue
},
{
title: "Rapid Heat Polymerising Resins",
desc: "Modified initiator system allows complete polymerization in boiling water within 20 minutes. No compromise in mechanical properties vs conventional long cycle when used correctly.",
color: C.teal
},
{
title: "Microwave-Activated Curing",
desc: "Microwave energy heats the resin from within uniformly. Requires non-metallic flask. Curing completed in 3–7 minutes. Properties comparable to water-bath cured resins; less porosity in controlled settings.",
color: C.purple
},
{
title: "Radiopaque Acrylics",
desc: "Copolymer containing 30–40% poly(2,3-dibromopropyl methacrylate). Allows radiographic detection of fractured/aspirated denture fragments. Clinically important for patients with swallowing disorders.",
color: C.orange
},
{
title: "Nanoparticle-Reinforced PMMA",
desc: "Silver nanoparticles (AgNPs 0.2% wt), ZrO₂, TiO₂, silica nanoparticles added to improve flexural strength, antimicrobial properties, and reduce Candida colonisation on denture surface.",
color: C.red
},
{
title: "CAD/CAM Milled & 3D-Printed PMMA",
desc: "Pre-polymerized PMMA discs milled by CNC or photopolymer resin 3D-printed. Minimal processing errors; superior dimensional accuracy; reduced residual monomer. Growing adoption in modern prosthodontics.",
color: C.green
},
];
advances.forEach((a, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.15;
const y = 1.42 + row * 1.3;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.68, h: 1.2, fill: { color: C.white }, line: { color: a.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 4.68, h: 0.34, fill: { color: a.color } });
s.addText(a.title, { x: x + 0.08, y, w: 4.52, h: 0.34, fontSize: 12.5, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
s.addText(a.desc, { x: x + 0.08, y: y + 0.38, w: 4.52, h: 0.75, fontSize: 10.5, color: C.dtext, fontFace: "Calibri", valign: "top" });
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 18 — CLINICAL IMPLICATIONS
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Clinical Implications", "Relevance to Patient Care & Prosthetic Outcomes");
tag(s, "09 Clinical", C.navy);
foot(s);
const implications = [
{ icon: "⚕", title: "Biocompatibility", detail: "Fully polymerized PMMA is biocompatible. Residual MMA (>0.2%) can cause contact stomatitis, burning mouth, and tissue irritation. Ensure complete curing.", color: C.green },
{ icon: "🦷", title: "Denture Fit & Occlusion", detail: "Polymerisation shrinkage (0.2–0.53%) directly affects tissue adaptation. Poor fit → sore spots, poor retention. Injection moulding slightly improves fit over compression moulding.", color: C.blue },
{ icon: "🔬", title: "Candida & Oral Hygiene", detail: "Porous PMMA surface harbours Candida albicans → denture stomatitis. Patients must clean dentures daily. Antifungal liners or nanoparticle-reinforced resins help.", color: C.orange },
{ icon: "💊", title: "Allergy Management", detail: "MMA allergy: prevalence ~1–2% in dental staff and patients. Suspect if persistent stomatitis unrelated to infection. Replace with alternative materials (e.g. thermoplastics).", color: C.red },
{ icon: "🔧", title: "Repair & Reline", detail: "Heat-cured PMMA can be repaired with self-cure resin. Relining with heat-cure preferred for durability. Repair temperatures must stay below 71°C to prevent distortion of existing base.", color: C.teal },
{ icon: "📦", title: "Storage & Maintenance", detail: "Store dentures in water when not worn to prevent dehydration. Avoid chemical disinfectants that contain solvents. Do not place in boiling water — heat distortion temperature is 71–91°C.", color: C.purple },
];
implications.forEach((imp, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.15;
const y = 1.42 + row * 1.28;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.68, h: 1.18, fill: { color: C.white }, line: { color: imp.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.52, h: 1.18, fill: { color: imp.color } });
s.addText(imp.icon, { x, y, w: 0.52, h: 1.18, fontSize: 22, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(imp.title, { x: x + 0.6, y: y + 0.06, w: 3.98, h: 0.3, fontSize: 13, bold: true, color: imp.color, fontFace: "Calibri" });
s.addText(imp.detail, { x: x + 0.6, y: y + 0.4, w: 3.98, h: 0.7, fontSize: 11, color: C.dtext, fontFace: "Calibri", valign: "top" });
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 19 — SUMMARY & TAKE-HOME POINTS
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.08, fill: { color: C.darkbg } });
s.addText("Summary — Take-Home Points", { x: 0.4, y: 0.16, w: 9.2, h: 0.7, fontSize: 27, bold: true, color: C.white, fontFace: "Calibri" });
const points = [
{ n: "1", t: "Heat = Activator", d: "Benzoyl peroxide requires >60°C to decompose into free radicals, initiating addition polymerization of MMA.", c: C.gold },
{ n: "2", t: "Composition is key", d: "Powder: PMMA, benzoyl peroxide, plasticiser, opacifiers, pigments, fibres. Liquid: MMA, cross-linking agent, inhibitor.", c: C.teal },
{ n: "3", t: "Dough stage is mandatory", d: "Packing must occur in the dough stage (4–8 min). Avoid sandy, stringy, rubbery and hard stages.", c: C.green },
{ n: "4", t: "Long cycle = fewer defects", d: "74°C × 8h prevents monomer boiling. Always bench-cool — never quench. Deflask only at room temp.", c: C.amber },
{ n: "5", t: "Heat-cure > self-cure", d: "Higher strength, lower porosity, less residual monomer, better colour stability, higher molecular weight.", c: C.blue },
{ n: "6", t: "Future is CAD/CAM", d: "Milled and 3D-printed PMMA eliminate most processing errors, reduce residual monomer, and improve accuracy.", c: C.purple },
];
points.forEach((p, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col === 0 ? 0.35 : 5.18;
const y = 1.18 + row * 1.38;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.62, h: 1.28, fill: { color: "0E2A50" }, line: { color: p.c, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.52, h: 1.28, fill: { color: p.c } });
s.addText(p.n, { x, y, w: 0.52, h: 1.28, fontSize: 22, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(p.t, { x: x + 0.62, y: y + 0.1, w: 3.9, h: 0.3, fontSize: 14, bold: true, color: p.c, fontFace: "Calibri" });
s.addText(p.d, { x: x + 0.62, y: y + 0.44, w: 3.9, h: 0.72, fontSize: 11.5, color: "#C8D8EE", fontFace: "Calibri", valign: "top" });
});
}
// ════════════════════════════════════════════════════════════════
// SLIDE 20 — THANK YOU / REFERENCES
// ════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.38, h: 5.625, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.38, y: 0, w: 0.12, h: 5.625, fill: { color: C.gold } });
s.addText("Thank You", { x: 0.72, y: 0.6, w: 9, h: 0.8, fontSize: 42, bold: true, color: C.white, fontFace: "Calibri" });
s.addText("Questions & Discussion", { x: 0.72, y: 1.42, w: 9, h: 0.42, fontSize: 20, color: C.gold, fontFace: "Calibri", italic: true });
s.addShape(pres.ShapeType.rect, { x: 0.72, y: 1.92, w: 7, h: 0.06, fill: { color: C.teal } });
s.addText("References", { x: 0.72, y: 2.08, w: 9, h: 0.34, fontSize: 16, bold: true, color: C.lgray, fontFace: "Calibri" });
const refs = [
"1. Anusavice KJ, Shen C, Rawls HR. Phillips' Science of Dental Materials. 12th ed. Elsevier Saunders; 2013.",
"2. McCabe JF, Walls AWG. Applied Dental Materials. 9th ed. Blackwell; 2008.",
"3. Craig RG, Powers JM. Restorative Dental Materials. 11th ed. Mosby; 2002.",
"4. Alkafaji A. Denture Base Resin Material. Lecture Notes, Univ of Baghdad College of Dentistry; 2021.",
"5. ANSI/ADA Specification No. 12 for Denture Base Polymers.",
"6. Godil A. Heat Cure Acrylic Denture Base Resin. Dept of Prosthodontics, M.A.R.D.C.",
"7. Raszewski Z. Problems with working with acrylic resins. Open Access J Sci. 2020;4(4):131–133.",
];
refs.forEach((r, i) => {
s.addText(r, { x: 0.72, y: 2.52 + i * 0.38, w: 9.0, h: 0.36, fontSize: 11, color: C.lgray, fontFace: "Calibri" });
});
}
// ── Write ──
pres.writeFile({ fileName: "/home/daytona/workspace/heat-denture-ppt/Heat_Activated_Denture_Base_Acrylic_Resin.pptx" })
.then(() => console.log("PPT written successfully."))
.catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/heat-denture-ppt && node build.js
ls -lh /home/daytona/workspace/heat-denture-ppt/Heat_Activated_Denture_Base_Acry…
Heat Activated Denture Base Acrylic Resin
Presentation · PPTX
| # | Slide | Key images/visuals |
|---|---|---|
| 1 | Title Slide | Heat-cured PMMA denture base photo |
| 2 | Table of Contents | 9 colour-coded topic tiles |
| 3 | Introduction & History | Clinical denture photo; historical milestones bar |
| 4 | Powder Composition | 6 component cards (PMMA beads, BPO, plasticiser, opacifier, pigments, fibres) |
| 5 | Liquid Composition | MMA, cross-linker, inhibitor + powder-liquid photo; P:L ratio banner |
| 6 | Polymerization Chemistry | 4-stage addition polymerization cards (Induction → Initiation → Propagation → Termination) |
| 7 | Polymerization Key Concepts | Shrinkage, exotherm, residual monomer, water sorption + PMMA chain image |
| 8 | Mixing Stages | Full 5-stage table with colour-coded PACK/DON'T PACK indicators |
| 9 | Compression Mould Technique | 7-step numbered workflow |
| 10 | Injection Moulding | Advantages vs limitations + dental flask photo |
| 11 | Curing Cycles | Long cycle vs short cycle side-by-side; red warning banner |
| 12 | Physical Properties | 9-row reference table with clinical significance |
| 13 | Mechanical Properties | Strength, hardness, fatigue, fracture data table + SEM image |
| 14 | Heat Cure vs Self Cure | 15-row comparative analysis table |
| 15 | Ideal Requirements vs Clinical Performance | ANSI/ADA Spec No. 12 compliance table |
| 16 | Processing Errors & Defects | 6 error cards + porosity photo + fracture specimen |
| 17 | Recent Advances | High-impact resins, microwave curing, radiopaque, AgNP, CAD/CAM |
| 18 | Clinical Implications | 6 clinical relevance panels (biocompatibility, fit, Candida, allergy, repair, storage) |
| 19 | Summary & Take-Home Points | 6 dark-background pearl cards |
| 20 | Thank You + 7 References | — |
Can you make me a detailed ppt with pictures attached on the topic denture recliners presenting seminar
Can you make me a detailed ppt with pictures attached on the topic denture reliners presenting seminar
denture reliners relining types hard soft tissue conditioner clinical procedure prosthodontics seminar
hard reline soft reline tissue conditioner chairside laboratory denture reliner materials composition
https://wjarr.com/sites/default/files/fulltext_pdf/WJARR-202…
mkdir -p /home/daytona/workspace/reliners-ppt/images curl -s -L --max-time 12 -…
~/reliners-ppt/build.js
const pptxgen = require("pptxgenjs");
const fs = require("fs");
const path = require("path");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Denture Reliners";
const C = {
navy: "0C2340",
blue: "1255A4",
teal: "0E7490",
green: "166534",
red: "B91C1C",
orange: "C2500A",
purple: "6B21A8",
gold: "D4891A",
amber: "F59E0B",
light: "EFF6FF",
pale: "DBEAFE",
lgray: "E2EBF5",
white: "FFFFFF",
dtext: "0F2137",
mtext: "1E4070",
darkbg: "071830",
warm: "FFF7ED",
softpink: "FDF2F8",
};
const IMG = path.join(__dirname, "images");
function imgOk(f) {
const p = path.join(IMG, f);
return fs.existsSync(p) && fs.statSync(p).size > 500 ? p : null;
}
function addImg(s, f, x, y, w, h) {
const p = imgOk(f);
if (p) { s.addImage({ path: p, x, y, w, h }); return true; }
s.addShape(pres.ShapeType.rect, { x, y, w, h, fill: { color: C.lgray }, line: { color: C.teal, width: 1 } });
s.addText("[Image]", { x, y, w, h, fontSize: 10, color: C.teal, align: "center", valign: "middle", fontFace: "Calibri", italic: true });
return false;
}
function cap(s, t, x, y, w) {
s.addShape(pres.ShapeType.rect, { x, y, w, h: 0.25, fill: { color: C.navy } });
s.addText(t, { x, y, w, h: 0.25, fontSize: 9, color: C.white, align: "center", valign: "middle", fontFace: "Calibri", italic: true });
}
function hdr(s, title, sub) {
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.05, fill: { color: C.navy } });
s.addText(title, { x: 0.3, y: 0.06, w: 9.3, h: 0.65, fontSize: 25, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
if (sub) {
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.05, w: 10, h: 0.3, fill: { color: C.teal } });
s.addText(sub, { x: 0.3, y: 1.05, w: 9.3, h: 0.3, fontSize: 12, color: C.white, fontFace: "Calibri", italic: true, valign: "middle" });
}
}
function tag(s, label, color) {
s.addShape(pres.ShapeType.rect, { x: 8.0, y: 0.14, w: 1.85, h: 0.36, fill: { color: color || C.gold } });
s.addText(label, { x: 8.0, y: 0.14, w: 1.85, h: 0.36, fontSize: 9.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
}
function foot(s) {
s.addShape(pres.ShapeType.line, { x: 0.3, y: 5.38, w: 9.4, h: 0, line: { color: C.teal, width: 0.8 } });
s.addText("Denture Reliners | Prosthodontics Seminar", { x: 0.3, y: 5.4, w: 9.4, h: 0.2, fontSize: 8.5, color: C.teal, fontFace: "Calibri", align: "center" });
}
function bullets(s, items, x, y, w, h, sz) {
sz = sz || 13;
const arr = items.map((it, i) => ({
text: typeof it === "string" ? it : it.t,
options: {
bullet: true, breakLine: i < items.length - 1,
bold: typeof it === "object" ? !!it.b : false,
color: typeof it === "object" ? it.c || C.dtext : C.dtext,
fontSize: typeof it === "object" ? it.sz || sz : sz,
indentLevel: typeof it === "object" ? it.indent || 0 : 0,
}
}));
s.addText(arr, { x, y, w, h, fontFace: "Calibri", paraSpaceAfter: 4, valign: "top" });
}
// ═══════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.38, h: 5.625, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.38, y: 0, w: 0.12, h: 5.625, fill: { color: C.gold } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.52, w: 10, h: 1.1, fill: { color: C.darkbg } });
s.addText("Denture", { x: 0.72, y: 0.55, w: 5.8, h: 0.8, fontSize: 42, bold: true, color: C.white, fontFace: "Calibri" });
s.addText("Reliners", { x: 0.72, y: 1.32, w: 5.8, h: 0.8, fontSize: 42, bold: true, color: C.gold, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.72, y: 2.22, w: 5.5, h: 0.06, fill: { color: C.teal } });
s.addText("A Comprehensive Seminar Presentation", { x: 0.72, y: 2.36, w: 5.8, h: 0.38, fontSize: 17, color: C.lgray, fontFace: "Calibri", italic: true });
s.addText("Definition • Classification • Materials • Techniques • Clinical Applications", { x: 0.72, y: 2.8, w: 5.8, h: 0.35, fontSize: 13, color: C.lgray, fontFace: "Calibri" });
s.addText("Department of Prosthodontics", { x: 0.72, y: 4.65, w: 5, h: 0.28, fontSize: 13, color: C.lgray, fontFace: "Calibri" });
addImg(s, "cover.jpg", 6.82, 0.45, 2.95, 3.9);
cap(s, "Denture relining — restoring fit and function", 6.82, 4.35, 2.95);
}
// ═══════════════════════════════════════════════
// SLIDE 2 — TABLE OF CONTENTS
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Contents at a Glance");
foot(s);
const toc = [
{ n: "01", t: "Introduction & Definitions", c: C.navy },
{ n: "02", t: "Indications & Contraindications", c: C.red },
{ n: "03", t: "Classification of Reliners", c: C.teal },
{ n: "04", t: "Hard Reline Materials", c: C.blue },
{ n: "05", t: "Soft Reline Materials", c: C.green },
{ n: "06", t: "Tissue Conditioners", c: C.orange },
{ n: "07", t: "Chairside Procedure", c: C.purple },
{ n: "08", t: "Laboratory Procedure", c: C.teal },
{ n: "09", t: "Rebasing", c: C.navy },
{ n: "10", t: "Comparison & Summary", c: C.red },
];
toc.forEach((t, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col === 0 ? 0.28 : 5.1;
const y = 1.42 + row * 0.85;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.68, h: 0.75, fill: { color: t.c } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.52, h: 0.75, fill: { color: C.gold } });
s.addText(t.n, { x, y, w: 0.52, h: 0.75, fontSize: 16, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(t.t, { x: x + 0.6, y: y + 0.19, w: 3.98, h: 0.38, fontSize: 13, bold: true, color: C.white, fontFace: "Calibri", valign: "middle" });
});
}
// ═══════════════════════════════════════════════
// SLIDE 3 — INTRODUCTION & DEFINITIONS
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Introduction & Definitions", "Relining, Rebasing & Conditioning — Why Dentures Fail to Fit");
tag(s, "01 Intro", C.navy);
foot(s);
// Definitions in cards
const defs = [
{
term: "Relining",
def: "The procedure used to resurface the tissue-side (intaglio surface) of a denture with new base material, producing an accurate adaptation to the denture foundation area. The original teeth and base form are retained.",
color: C.blue
},
{
term: "Rebasing",
def: "Replacing the entire denture base (without disturbing the teeth arrangement) with a fresh polymerized resin. More extensive than relining. All pink acrylic is replaced.",
color: C.teal
},
{
term: "Tissue Conditioning",
def: "Application of a very soft, flow-capable temporary liner to allow traumatized soft tissues to recover before definitive relining. The liner adapts in function, recording the tissue in its healed shape.",
color: C.orange
},
];
defs.forEach((d, i) => {
const y = 1.42 + i * 1.2;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 5.6, h: 1.1, fill: { color: C.white }, line: { color: d.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.14, h: 1.1, fill: { color: d.color } });
s.addShape(pres.ShapeType.rect, { x: 0.44, y, w: 1.35, h: 1.1, fill: { color: d.color } });
s.addText(d.term, { x: 0.44, y, w: 1.35, h: 1.1, fontSize: 14, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
s.addText(d.def, { x: 1.88, y: y + 0.1, w: 3.94, h: 0.9, fontSize: 12, color: C.dtext, fontFace: "Calibri", valign: "top" });
});
addImg(s, "clinical.jpg", 6.15, 1.42, 3.55, 2.55);
cap(s, "Fig. Ill-fitting denture with residual ridge resorption", 6.15, 3.97, 3.55);
s.addShape(pres.ShapeType.rect, { x: 6.15, y: 4.3, w: 3.55, h: 0.9, fill: { color: C.pale }, line: { color: C.blue, width: 1 } });
bullets(s, [
{ t: "Why dentures become ill-fitting:", b: true, c: C.navy, sz: 11.5 },
{ t: "Residual ridge resorption (physiological)", sz: 11, indent: 1 },
{ t: "Systemic disease (diabetes, osteoporosis)", sz: 11, indent: 1 },
{ t: "Excessive occlusal loading", sz: 11, indent: 1 },
], 6.2, 4.32, 3.45, 0.85, 11);
}
// ═══════════════════════════════════════════════
// SLIDE 4 — INDICATIONS
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Indications for Relining", "When to Reline — Clinical Decision Making");
tag(s, "02 Indications", C.red);
foot(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 4.55, h: 0.34, fill: { color: C.green } });
s.addText("Indications", { x: 0.3, y: 1.42, w: 4.55, h: 0.34, fontSize: 13.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const indics = [
"Loss of retention and/or stability of the denture",
"Poor adaptation to underlying tissues",
"Food collection under the denture",
"Soreness and discomfort due to ill-fit",
"Residual ridge resorption — progressive bone loss",
"Immediate/transitional dentures after healing",
"Post-surgical healing — after extractions or implant placement",
"Treatment of abused denture-bearing soft tissues",
"As functional impression for indirect relining",
"Cleft palate speech aid relining",
"During implant healing period",
];
indics.forEach((ind, i) => {
const y = 1.82 + i * 0.32;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.3, h: 0.28, fill: { color: C.green } });
s.addText("✓", { x: 0.3, y, w: 0.3, h: 0.28, fontSize: 10, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.62, y, w: 4.23, h: 0.28, fill: { color: i % 2 === 0 ? C.white : C.lgray } });
s.addText(ind, { x: 0.68, y, w: 4.12, h: 0.28, fontSize: 11.5, color: C.dtext, fontFace: "Calibri", valign: "middle" });
});
s.addShape(pres.ShapeType.rect, { x: 5.1, y: 1.42, w: 4.6, h: 0.34, fill: { color: C.red } });
s.addText("Contraindications", { x: 5.1, y: 1.42, w: 4.6, h: 0.34, fontSize: 13.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const contras = [
"Increased vertical dimension (insufficient inter-arch space)",
"Poor esthetics or incorrect tooth position",
"Unsatisfactory jaw relationship in existing denture",
"Excessive residual ridge resorption (insufficient bone)",
"Severe osseous undercuts",
"Major speech problems caused by the denture",
"Temporomandibular joint (TMJ) problems",
"When a new denture is the better clinical choice",
];
contras.forEach((c, i) => {
const y = 1.82 + i * 0.38;
s.addShape(pres.ShapeType.rect, { x: 5.1, y, w: 0.3, h: 0.34, fill: { color: C.red } });
s.addText("✗", { x: 5.1, y, w: 0.3, h: 0.34, fontSize: 10, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 5.42, y, w: 4.28, h: 0.34, fill: { color: i % 2 === 0 ? C.white : C.lgray } });
s.addText(c, { x: 5.48, y, w: 4.18, h: 0.34, fontSize: 11.5, color: C.dtext, fontFace: "Calibri", valign: "middle" });
});
}
// ═══════════════════════════════════════════════
// SLIDE 5 — CLASSIFICATION
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Classification of Denture Reliners", "Classified by Hardness, Duration & Method");
tag(s, "03 Classification", C.teal);
foot(s);
// Main classification tree
s.addShape(pres.ShapeType.rect, { x: 4.1, y: 1.42, w: 1.8, h: 0.48, fill: { color: C.navy } });
s.addText("RELINERS", { x: 4.1, y: 1.42, w: 1.8, h: 0.48, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
// Branches
const branches = [
{ label: "By Material / Hardness", x: 0.28, y: 2.1, w: 2.9, color: C.blue,
children: ["Hard Reliners", "Soft Reliners", "Tissue Conditioners"] },
{ label: "By Method", x: 3.55, y: 2.1, w: 2.9, color: C.teal,
children: ["Chairside (Direct)", "Laboratory (Indirect)"] },
{ label: "By Duration", x: 6.82, y: 2.1, w: 2.9, color: C.orange,
children: ["Short-term (Temporary)", "Long-term (Permanent)"] },
];
branches.forEach(b => {
s.addShape(pres.ShapeType.line, { x: 5.0, y: 1.9, w: 0, h: 0.2, line: { color: C.navy, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x: b.x, y: b.y, w: b.w, h: 0.36, fill: { color: b.color } });
s.addText(b.label, { x: b.x, y: b.y, w: b.w, h: 0.36, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
b.children.forEach((ch, ci) => {
const cy = b.y + 0.42 + ci * 0.55;
s.addShape(pres.ShapeType.rect, { x: b.x, y: cy, w: b.w, h: 0.48, fill: { color: ci % 2 === 0 ? C.white : C.lgray }, line: { color: b.color, width: 1 } });
s.addText(ch, { x: b.x + 0.08, y: cy, w: b.w - 0.16, h: 0.48, fontSize: 13, color: C.dtext, fontFace: "Calibri", valign: "middle", align: "center" });
});
});
// Bottom summary
addImg(s, "reliner_types.jpg", 0.3, 4.1, 4.5, 1.1);
cap(s, "Fig. Classification overview of denture reline materials", 0.3, 5.2, 4.5);
s.addShape(pres.ShapeType.rect, { x: 5.0, y: 4.1, w: 4.7, h: 1.1, fill: { color: C.pale }, line: { color: C.blue, width: 1 } });
s.addText("Quick Guide:", { x: 5.1, y: 4.14, w: 4.5, h: 0.28, fontSize: 12, bold: true, color: C.navy, fontFace: "Calibri" });
s.addText("Abused tissue → Tissue conditioner → Resilient liner → Hard liner (definitive)\nChairside = immediate; Laboratory = better quality, accuracy", {
x: 5.1, y: 4.44, w: 4.5, h: 0.68, fontSize: 11.5, color: C.dtext, fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════
// SLIDE 6 — HARD RELINE MATERIALS COMPOSITION
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Hard Reline Materials", "Composition & Types — Chairside vs Laboratory");
tag(s, "04 Hard Reline", C.blue);
foot(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 9.3, h: 0.54, fill: { color: C.pale }, line: { color: C.blue, width: 1.5 } });
s.addText("Hard reliners are made of acrylic resins — the same class of material as the original denture base. Two types exist: Chairside (cold-cure) and Laboratory (heat-cure). Identical powder component; the monomer differs.", {
x: 0.42, y: 1.45, w: 9.1, h: 0.48, fontSize: 12.5, color: C.dtext, fontFace: "Calibri", italic: true, valign: "middle"
});
// Composition table
const compRows = [
["Component", "Type 1 — Chairside (MMA)", "Type 2 — Chairside (Higher methacrylate)", "Laboratory"],
["Polymer (Powder)", "PMMA beads", "PEMA beads", "PMMA beads"],
["Initiator", "Benzoyl peroxide", "Benzoyl peroxide", "Benzoyl peroxide"],
["Monomer (Liquid)", "Methylmethacrylate (MMA)", "Butyl / isobutyl methacrylate", "Methylmethacrylate (MMA)"],
["Plasticizer", "Di-n-butylphthalate", "—", "Di-n-butylphthalate"],
["Chemical activator", "Tertiary amine", "Tertiary amine", "None (heat activated)"],
["Cross-linking agent", "—", "Dimethacrylate", "Optional"],
["Pigments", "Present", "Present", "Present"],
];
const cw = [2.1, 2.2, 2.55, 2.15];
const cx = [0.3, 2.42, 4.64, 7.21];
compRows.forEach((row, ri) => {
const bg = ri === 0 ? C.navy : ri % 2 === 0 ? C.lgray : C.white;
row.forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, { x: cx[ci], y: 2.04 + ri * 0.38, w: cw[ci], h: 0.38, fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(cell, { x: cx[ci] + 0.05, y: 2.04 + ri * 0.38, w: cw[ci] - 0.1, h: 0.38, fontSize: ri === 0 ? 10.5 : 10, bold: ri === 0 || ci === 0, color: ri === 0 ? C.white : ci === 0 ? C.blue : C.dtext, fontFace: "Calibri", valign: "middle" });
});
});
// Note at bottom
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 5.05, w: 9.3, h: 0.28, fill: { color: C.orange } });
s.addText("Key difference: Chairside uses chemical activation (tertiary amine). Lab relining uses heat activation. Lab relining involves HEAT-CURED PMMA — better properties, lower residual monomer.", {
x: 0.38, y: 5.05, w: 9.15, h: 0.28, fontSize: 10.5, color: C.white, align: "center", valign: "middle", fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════
// SLIDE 7 — SOFT RELINERS: TYPES & COMPOSITION
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Soft Reline Materials (Long-Term Soft Liners)", "Plasticized Acrylics & Silicone-Based Liners");
tag(s, "05 Soft Reline", C.green);
foot(s);
addImg(s, "soft_liner.jpg", 5.85, 1.42, 3.85, 2.65);
cap(s, "Fig. Soft liner material — clinical chairside application", 5.85, 4.07, 3.85);
s.addText("Two Main Types of Long-Term Soft Liners:", { x: 0.3, y: 1.42, w: 5.35, h: 0.32, fontSize: 14, bold: true, color: C.navy, fontFace: "Calibri" });
// Type 1 — Plasticized acrylic
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.82, w: 5.35, h: 0.34, fill: { color: C.green } });
s.addText("Type A — Plasticized Acrylic (PMMA/PEMA)", { x: 0.3, y: 1.82, w: 5.35, h: 0.34, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const acrylicComp = [
["Component", "Detail"],
["Powder", "PMMA or PEMA copolymer"],
["Liquid monomer", "Ethyl or butyl methacrylate"],
["Plasticizer", "Dibutyl phthalate, dioctyl phthalate"],
["Initiator", "Benzoyl peroxide"],
["Cross-linker", "Dimethacrylate"],
];
acrylicComp.forEach((row, ri) => {
row.forEach((cell, ci) => {
const bg = ri === 0 ? C.teal : ri % 2 === 0 ? C.lgray : C.white;
s.addShape(pres.ShapeType.rect, { x: 0.3 + ci * 2.7, y: 2.18 + ri * 0.3, w: 2.65, h: 0.3, fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(cell, { x: 0.36 + ci * 2.7, y: 2.18 + ri * 0.3, w: 2.52, h: 0.3, fontSize: ri === 0 ? 11 : 10.5, bold: ri === 0, color: ri === 0 ? C.white : C.dtext, fontFace: "Calibri", valign: "middle" });
});
});
// Type 2 — Silicone
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.08, w: 5.35, h: 0.34, fill: { color: C.blue } });
s.addText("Type B — Silicone-Based Soft Liners", { x: 0.3, y: 4.08, w: 5.35, h: 0.34, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const siliconeData = [
["Cold-cure silicone", "Paste: hydroxy-terminated polydimethylsiloxane + fillers. Liquid: tetraethyl silicate + dibutyltindilaurate (catalyst). Condensation cross-linking at room temperature."],
["Hot-cure silicone", "One-component system. Polydimethylsiloxane. Heat-cured. Superior dimensional stability and elasticity. Longer service life."],
];
siliconeData.forEach((row, ri) => {
const y = 4.46 + ri * 0.42;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 1.35, h: 0.38, fill: { color: C.blue } });
s.addText(row[0], { x: 0.3, y, w: 1.35, h: 0.38, fontSize: 10.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 1.67, y, w: 3.98, h: 0.38, fill: { color: ri === 0 ? C.white : C.lgray } });
s.addText(row[1], { x: 1.72, y, w: 3.88, h: 0.38, fontSize: 10.5, color: C.dtext, fontFace: "Calibri", valign: "middle" });
});
}
// ═══════════════════════════════════════════════
// SLIDE 8 — SOFT LINERS: PROPERTIES & COMPARISON
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Soft Liners — Properties & Clinical Comparison", "Plasticized Acrylic vs Silicone");
tag(s, "05 Soft Reline", C.green);
foot(s);
addImg(s, "gc_reline.jpg", 6.2, 1.42, 3.5, 2.3);
cap(s, "Fig. GC Reline soft liner system — commercial product", 6.2, 3.72, 3.5);
const compTable = [
["Property", "Plasticized Acrylic", "Silicone"],
["Elasticity", "Initially good; decreases over time", "Superior; maintained long-term"],
["Dimensional stability", "Moderate", "Excellent"],
["Bond to denture base", "Chemical bond (acrylic-acrylic)", "Requires adhesive/primer"],
["Water sorption", "Higher; swells over time", "Very low"],
["Plasticizer leaching", "Yes — hardens and loses softness", "Negligible"],
["Candida growth", "Prone to colonization", "Resistant"],
["Biocompatibility", "Good when cured", "Excellent"],
["Service life", "6–12 months", "1–5 years (heat-cure type)"],
["Cost", "Lower", "Higher"],
["Repair / Replace", "Easy — add fresh material", "Difficult — poor bond to itself"],
];
const cw2 = [2.2, 2.3, 1.65];
const cx2 = [0.3, 2.52, 4.84];
compTable.forEach((row, ri) => {
const bg = ri === 0 ? C.navy : ri % 2 === 0 ? C.lgray : C.white;
row.forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, { x: cx2[ci], y: 1.42 + ri * 0.38, w: cw2[ci], h: 0.38, fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(cell, { x: cx2[ci] + 0.05, y: 1.42 + ri * 0.38, w: cw2[ci] - 0.1, h: 0.38, fontSize: ri === 0 ? 11 : 10, bold: ri === 0 || ci === 0, color: ri === 0 ? C.white : ci === 0 ? C.green : C.dtext, fontFace: "Calibri", valign: "middle" });
});
});
s.addShape(pres.ShapeType.rect, { x: 6.2, y: 3.85, w: 3.5, h: 1.4, fill: { color: "#E6F4EA" }, line: { color: C.green, width: 1 } });
s.addText("Clinical preference:", { x: 6.3, y: 3.9, w: 3.3, h: 0.28, fontSize: 12, bold: true, color: C.green, fontFace: "Calibri" });
s.addText("Silicone-based soft liners (especially autopolymerising) are now preferred due to superior long-term elasticity, dimensional stability, and lower Candida susceptibility.", {
x: 6.3, y: 4.2, w: 3.3, h: 0.95, fontSize: 11, color: C.dtext, fontFace: "Calibri"
});
}
// ═══════════════════════════════════════════════
// SLIDE 9 — TISSUE CONDITIONERS
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Tissue Conditioners", "Short-Term Soft Liners — Healing Before Definitive Relining");
tag(s, "06 Tissue Cond.", C.orange);
foot(s);
addImg(s, "tissue_cond.jpg", 5.85, 1.42, 3.85, 2.65);
cap(s, "Fig. Tissue conditioner material (GC Fit Checker/conditioner)", 5.85, 4.07, 3.85);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 5.35, h: 0.5, fill: { color: C.pale }, line: { color: C.orange, width: 1.5 } });
s.addText("Viscoelastic temporary materials that flow under load for 24–36 hours, recording tissue in functional position. Must be replaced every 2–4 days to maintain effectiveness.", {
x: 0.42, y: 1.45, w: 5.12, h: 0.44, fontSize: 12, color: C.dtext, fontFace: "Calibri", italic: true, valign: "middle"
});
// Composition
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 2.02, w: 5.35, h: 0.34, fill: { color: C.orange } });
s.addText("Composition (Powder / Liquid system)", { x: 0.3, y: 2.02, w: 5.35, h: 0.34, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const tcComp = [
["Powder", "PMMA or PEMA copolymer (already polymerized)"],
["Liquid (solvent)", "Ethyl alcohol (~25–35%)"],
["Plasticizer", "Aromatic ester — dibutyl phthalate (main component)"],
["Initiator", "None — no polymerization occurs"],
["Setting", "Physical (not chemical) — solvent penetrates polymer beads → gel"],
];
tcComp.forEach((row, ri) => {
const y = 2.4 + ri * 0.34;
const bg = ri % 2 === 0 ? C.white : C.lgray;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 1.45, h: 0.34, fill: { color: C.orange } });
s.addText(row[0], { x: 0.3, y, w: 1.45, h: 0.34, fontSize: 11.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 1.77, y, w: 3.88, h: 0.34, fill: { color: bg } });
s.addText(row[1], { x: 1.82, y, w: 3.78, h: 0.34, fontSize: 11, color: C.dtext, fontFace: "Calibri", valign: "middle" });
});
// Indications
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.12, w: 5.35, h: 0.34, fill: { color: C.navy } });
s.addText("Key Indications", { x: 0.3, y: 4.12, w: 5.35, h: 0.34, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
bullets(s, [
"Treat traumatised/abused denture-supporting tissue",
"Functional impression for indirect relining",
"Immediate denture base cushion post-extraction",
"Cleft palate speech aid; implant healing period",
], 0.3, 4.5, 5.35, 0.82, 12);
}
// ═══════════════════════════════════════════════
// SLIDE 10 — TISSUE CONDITIONERS: PROPERTIES & LIMITATIONS
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Tissue Conditioners — Properties & Limitations", "Mechanism of Action & Why They Must Be Replaced");
tag(s, "06 Tissue Cond.", C.orange);
foot(s);
const props = [
{ title: "Viscoelastic Behaviour", detail: "Behaves as a fluid under sustained low loads and as an elastic solid under dynamic/cyclic loads. This allows it to flow and adapt to tissue changes after swelling/trauma resolves.", color: C.teal },
{ title: "Setting Mechanism (Physical)", detail: "No chemical polymerization occurs. Ethyl alcohol (solvent) diffuses into PEMA beads → beads swell and form a gel. Setting takes 5–10 min. No exotherm.", color: C.blue },
{ title: "Plasticizer Leaching (Major limitation)", detail: "Dibutyl phthalate leaches into saliva progressively. As plasticizer is lost, the material stiffens and loses its cushioning effect. Replacement every 2–4 days is mandatory.", color: C.red },
{ title: "Microbiological Concerns", detail: "Porous, absorptive nature promotes Candida albicans colonisation. Must not be retained beyond 3–4 days without replacement. Can serve as reservoir for denture stomatitis.", color: C.orange },
{ title: "Role as Functional Impression", detail: "When placed in denture, patient closes in correct occlusion and functional movements shape the material over 24–36 h. Captures tissue in healed, functional position — invaluable before indirect relining.", color: C.green },
];
props.forEach((p, i) => {
const y = 1.42 + i * 0.78;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 9.3, h: 0.7, fill: { color: C.white }, line: { color: p.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.14, h: 0.7, fill: { color: p.color } });
s.addText(p.title, { x: 0.5, y: y + 0.04, w: 9.0, h: 0.26, fontSize: 13, bold: true, color: p.color, fontFace: "Calibri" });
s.addText(p.detail, { x: 0.5, y: y + 0.32, w: 9.0, h: 0.34, fontSize: 11.5, color: C.dtext, fontFace: "Calibri" });
});
}
// ═══════════════════════════════════════════════
// SLIDE 11 — CHAIRSIDE (DIRECT) PROCEDURE
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Chairside (Direct) Relining Procedure", "Step-by-Step Clinical Protocol — Hard & Soft Reline");
tag(s, "07 Chairside", C.purple);
foot(s);
addImg(s, "reline2.jpg", 5.98, 1.42, 3.72, 2.55);
cap(s, "Fig. Chairside relining — clinical steps", 5.98, 3.97, 3.72);
const steps = [
{ n: "1", t: "Evaluation & Preparation", d: "Examine denture fit, occlusion, VDO. Ensure tissues are healthy (or condition if not). Assess available inter-arch space. Obtain informed consent.", col: C.navy },
{ n: "2", t: "Relief Holes", d: "Drill 2–3 relief holes in posterior palate of the denture base to allow excess material to escape and prevent pressure buildup.", col: C.blue },
{ n: "3", t: "Border Reduction", d: "Reduce borders by 1–2 mm all around. Apply separating medium to teeth. Protect visible tooth surfaces with Vaseline/wax.", col: C.teal },
{ n: "4", t: "Apply Adhesive / Primer", d: "Apply chemical adhesive/primer to tissue surface (monomer wetting for hard reline; silicone adhesive for soft/silicone reline). Allow to dry.", col: C.orange },
{ n: "5", t: "Mix & Apply Reline Material", d: "Mix powder and liquid per manufacturer instructions. Load into tissue surface of denture. Insert in mouth while in viscous/flowing stage.", col: C.purple },
{ n: "6", t: "Border Moulding", d: "Guide patient through functional movements (border moulding). Have patient close in centric occlusion. Hold in place until material sets.", col: C.green },
{ n: "7", t: "Remove & Finish", d: "Remove denture after setting. Trim excess material with acrylic bur. Polish borders. Check occlusion. Deliver to patient.", col: C.red },
];
steps.forEach((st, i) => {
const y = 1.42 + i * 0.54;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 5.5, h: 0.48, fill: { color: C.white }, line: { color: st.col, width: 1 } });
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.38, h: 0.48, fill: { color: st.col } });
s.addText(st.n, { x: 0.3, y, w: 0.38, h: 0.48, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(st.t, { x: 0.72, y: y + 0.03, w: 5.02, h: 0.2, fontSize: 12, bold: true, color: st.col, fontFace: "Calibri" });
s.addText(st.d, { x: 0.72, y: y + 0.24, w: 5.02, h: 0.2, fontSize: 10.5, color: C.dtext, fontFace: "Calibri" });
});
s.addShape(pres.ShapeType.rect, { x: 5.98, y: 4.1, w: 3.72, h: 1.12, fill: { color: "#FFF3E0" }, line: { color: C.orange, width: 1 } });
s.addText("Advantages of Chairside:", { x: 6.08, y: 4.14, w: 3.52, h: 0.28, fontSize: 12, bold: true, color: C.orange, fontFace: "Calibri" });
bullets(s, ["Single appointment", "No lab fee", "Patient keeps denture"], 6.08, 4.44, 3.52, 0.68, 11.5);
}
// ═══════════════════════════════════════════════
// SLIDE 12 — LABORATORY (INDIRECT) PROCEDURE
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Laboratory (Indirect) Relining Procedure", "The Gold Standard for Definitive Hard Relining");
tag(s, "08 Laboratory", C.teal);
foot(s);
// Left — clinical steps
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 5.55, h: 0.34, fill: { color: C.teal } });
s.addText("Clinical Steps (Dentist)", { x: 0.3, y: 1.42, w: 5.55, h: 0.34, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const clinSteps = [
"Apply tissue conditioner as functional impression material",
"Allow 24–48 hours for tissue conditioning",
"Make final impression using ZOE or wash impression through the TC",
"Box and pour impression with dental stone",
"Send denture + cast to laboratory",
];
clinSteps.forEach((st, i) => {
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.8 + i * 0.52, w: 0.3, h: 0.46, fill: { color: C.teal } });
s.addText(`${i + 1}`, { x: 0.3, y: 1.8 + i * 0.52, w: 0.3, h: 0.46, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.62, y: 1.8 + i * 0.52, w: 5.23, h: 0.46, fill: { color: i % 2 === 0 ? C.white : C.lgray } });
s.addText(st, { x: 0.68, y: 1.8 + i * 0.52, w: 5.12, h: 0.46, fontSize: 12, color: C.dtext, fontFace: "Calibri", valign: "middle" });
});
// Right — lab steps
s.addShape(pres.ShapeType.rect, { x: 6.05, y: 1.42, w: 3.65, h: 0.34, fill: { color: C.navy } });
s.addText("Laboratory Steps (Technician)", { x: 6.05, y: 1.42, w: 3.65, h: 0.34, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const labSteps = [
"Beading & boxing of impression",
"Pour boxed impression with dental stone",
"Eliminate impression material (ZOE in hot water 5 min)",
"Paint cast with separating medium",
"Wet denture surface with monomer (chemical bonding)",
"Mix heat-cure acrylic & pack into flask",
"Flask under hydraulic press",
"Heat-cure cycle (74°C × 8 h or short cycle)",
"Deflask, trim, polish, return to dentist",
];
labSteps.forEach((st, i) => {
s.addShape(pres.ShapeType.rect, { x: 6.05, y: 1.8 + i * 0.36, w: 0.25, h: 0.32, fill: { color: C.navy } });
s.addText(`${i + 1}`, { x: 6.05, y: 1.8 + i * 0.36, w: 0.25, h: 0.32, fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 6.32, y: 1.8 + i * 0.36, w: 3.38, h: 0.32, fill: { color: i % 2 === 0 ? C.white : C.lgray } });
s.addText(st, { x: 6.36, y: 1.8 + i * 0.36, w: 3.3, h: 0.32, fontSize: 11, color: C.dtext, fontFace: "Calibri", valign: "middle" });
});
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 4.5, w: 9.3, h: 0.72, fill: { color: C.pale }, line: { color: C.blue, width: 1 } });
s.addText("Lab reline advantages: Heat-cure resin is used → stronger, lower residual monomer, better fit accuracy, greater dimensional stability, longer service life. Superior to chairside reline in all mechanical properties.", {
x: 0.4, y: 4.54, w: 9.1, h: 0.64, fontSize: 12, color: C.dtext, fontFace: "Calibri", valign: "middle"
});
}
// ═══════════════════════════════════════════════
// SLIDE 13 — REBASING
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Rebasing", "Complete Replacement of the Denture Base — When Relining is Insufficient");
tag(s, "09 Rebasing", C.navy);
foot(s);
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 9.3, h: 0.55, fill: { color: C.pale }, line: { color: C.navy, width: 1.5 } });
s.addText("Rebasing: Replacing all of the acrylic denture base material (the pink part) while retaining the existing artificial teeth in their original arrangement. More extensive than relining.", {
x: 0.42, y: 1.45, w: 9.1, h: 0.48, fontSize: 12.5, italic: true, color: C.dtext, fontFace: "Calibri", valign: "middle"
});
const twoCol = [
{
title: "Indications for Rebasing",
color: C.blue,
items: [
"Old denture base is cracked, stained, or porous beyond repair",
"Multiple repairs have been performed",
"Extensive base porosity affecting strength",
"Base has inadequate thickness",
"Patient wants improved esthetics of the base",
"Teeth are in correct position but entire base has deteriorated",
]
},
{
title: "Rebasing vs Relining",
color: C.teal,
items: [
"Reline: Add new material to existing base → base retained",
"Rebase: Remove all base material → entirely new base",
"Both preserve the original tooth arrangement",
"Rebasing requires full flasking in the laboratory",
"New heat-cure PMMA used → best mechanical properties",
"Better fit and strength compared to multiple relines",
]
}
];
twoCol.forEach((col, ci) => {
const x = ci === 0 ? 0.3 : 5.1;
s.addShape(pres.ShapeType.rect, { x, y: 2.08, w: 4.6, h: 0.34, fill: { color: col.color } });
s.addText(col.title, { x, y: 2.08, w: 4.6, h: 0.34, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
col.items.forEach((item, ii) => {
s.addShape(pres.ShapeType.rect, { x, y: 2.46 + ii * 0.46, w: 4.6, h: 0.42, fill: { color: ii % 2 === 0 ? C.white : C.lgray } });
s.addText("• " + item, { x: x + 0.1, y: 2.46 + ii * 0.46, w: 4.4, h: 0.42, fontSize: 12, color: C.dtext, fontFace: "Calibri", valign: "middle" });
});
});
}
// ═══════════════════════════════════════════════
// SLIDE 14 — COMPARISON TABLE
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Comparison of Reline Materials & Methods", "Quick Reference Guide for Clinical Decision Making");
tag(s, "10 Comparison", C.red);
foot(s);
const rows = [
["Feature", "Tissue Conditioner", "Soft Liner (Chairside)", "Soft Liner (Lab)", "Hard Reline (Chairside)", "Hard Reline (Lab)"],
["Material", "PEMA + plasticizer", "Plasticized acrylic / silicone", "Silicone / acrylic", "Cold-cure PMMA", "Heat-cure PMMA"],
["Duration", "2–4 days", "3–6 months", "1–5 years", "6–12 months", "2–5 years"],
["Setting", "Physical (gel)", "Chemical", "Chemical / heat", "Chemical", "Heat"],
["Hardness", "Very soft (viscous)", "Soft / resilient", "Soft / resilient", "Hard acrylic", "Hard acrylic"],
["Bond to base", "Weak (temporary)", "Moderate (adhesive)", "Good (adhesive)", "Good (chemical)", "Excellent (chemical)"],
["Residual monomer", "Low", "Moderate", "Low", "Higher (~3–5%)", "Low (<1%)"],
["Best use", "Abused tissue / functional imp.", "Mild ridge resorption", "Chronic soft tissue issues", "Quick fit restoration", "Definitive relining"],
["Patient off time", "None", "None", "1–2 days", "None / few hours", "1–2 days"],
["Cost", "Lowest", "Low-Moderate", "Moderate-High", "Low", "Moderate"],
];
const colW = [1.5, 1.6, 1.6, 1.55, 1.6, 1.65];
const colX = [0.28, 1.8, 3.42, 5.04, 6.61, 8.18];
rows.forEach((row, ri) => {
const bg = ri === 0 ? C.navy : ri % 2 === 0 ? C.lgray : C.white;
row.forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, { x: colX[ci], y: 1.42 + ri * 0.38, w: colW[ci], h: 0.38, fill: { color: bg }, line: { color: "BBBEC3", width: 0.5 } });
s.addText(cell, { x: colX[ci] + 0.04, y: 1.42 + ri * 0.38, w: colW[ci] - 0.08, h: 0.38, fontSize: ri === 0 ? 9.5 : 9, bold: ri === 0 || ci === 0, color: ri === 0 ? C.white : ci === 0 ? C.navy : C.dtext, fontFace: "Calibri", valign: "middle" });
});
});
}
// ═══════════════════════════════════════════════
// SLIDE 15 — CLINICAL DECISION TREE + COMPLICATIONS
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.light };
hdr(s, "Clinical Decision Tree & Complications", "Selecting the Right Reliner — Managing Complications");
tag(s, "10 Comparison", C.red);
foot(s);
// Decision tree (text-based)
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.42, w: 9.3, h: 0.36, fill: { color: C.navy } });
s.addText("Patient Presents with Ill-Fitting Denture", { x: 0.3, y: 1.42, w: 9.3, h: 0.36, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
const decTree = [
{ q: "Tissue abused/inflamed?", yes: "→ Tissue Conditioner (replace q2–4 days until healed)", yc: C.orange, no: "↓ Proceed to reline selection", nc: C.teal },
{ q: "Soft tissue sensitivity / severe ridge resorption?", yes: "→ Soft liner (chairside short-term OR lab long-term)", yc: C.green, no: "↓ Healthy, non-tender tissues", nc: C.teal },
{ q: "Single appointment needed? Can patient leave without denture?", yes: "→ Chairside hard reline (immediate)", yc: C.blue, no: "→ Laboratory hard reline (definitive, best quality)", nc: C.navy },
];
decTree.forEach((d, i) => {
const y = 1.86 + i * 1.1;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 9.3, h: 0.36, fill: { color: C.pale }, line: { color: C.blue, width: 1 } });
s.addText(`Q${i + 1}: ${d.q}`, { x: 0.4, y, w: 9.1, h: 0.36, fontSize: 12.5, bold: true, color: C.navy, fontFace: "Calibri", valign: "middle" });
s.addShape(pres.ShapeType.rect, { x: 0.3, y: y + 0.4, w: 4.52, h: 0.32, fill: { color: d.yc } });
s.addText("YES: " + d.yes, { x: 0.38, y: y + 0.4, w: 4.36, h: 0.32, fontSize: 11, color: C.white, fontFace: "Calibri", valign: "middle" });
s.addShape(pres.ShapeType.rect, { x: 4.95, y: y + 0.4, w: 4.65, h: 0.32, fill: { color: d.nc } });
s.addText("NO: " + d.no, { x: 5.03, y: y + 0.4, w: 4.5, h: 0.32, fontSize: 11, color: C.white, fontFace: "Calibri", valign: "middle" });
});
// Complications box
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 5.08, w: 9.3, h: 0.28, fill: { color: C.red } });
s.addText("Complications: Increased VDO • Burning sensation (residual monomer) • Candida stomatitis • Poor bond — delamination • Occlusal errors • Continued tissue irritation", {
x: 0.38, y: 5.08, w: 9.15, h: 0.28, fontSize: 10.5, color: C.white, fontFace: "Calibri", align: "center", valign: "middle"
});
}
// ═══════════════════════════════════════════════
// SLIDE 16 — SUMMARY & TAKE-HOME POINTS
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.1, fill: { color: C.darkbg } });
s.addText("Summary — Take-Home Points", { x: 0.4, y: 0.18, w: 9.2, h: 0.7, fontSize: 27, bold: true, color: C.white, fontFace: "Calibri" });
const pts = [
{ n: "1", t: "Always condition before relining", d: "If tissue is abused/inflamed, use a tissue conditioner first. Definitive relining on unhealthy tissue gives poor results.", c: C.gold },
{ n: "2", t: "Lab reline > Chairside reline", d: "Heat-cure PMMA (laboratory) gives better fit, strength, lower residual monomer, and longer service life than chairside.", c: C.teal },
{ n: "3", t: "Tissue conditioners are temporary", d: "Must be replaced every 2–4 days. Maximum 3 months. Porous structure promotes Candida if retained too long.", c: C.orange },
{ n: "4", t: "Silicone soft liners are preferred", d: "Superior elasticity and stability vs plasticized acrylics. Less Candida colonisation. Require adhesive for bonding.", c: C.green },
{ n: "5", t: "Rebasing = entire base replacement", d: "More extensive than relining. Indicated when base is degraded. Teeth are retained. Heat-cure PMMA used.", c: C.blue },
{ n: "6", t: "Know the contraindications", d: "Poor VDO, bad jaw relations, excessive bone loss, TMJ problems → do not reline; make a new denture.", c: C.red },
];
pts.forEach((p, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col === 0 ? 0.35 : 5.18;
const y = 1.18 + row * 1.4;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.62, h: 1.3, fill: { color: "0E2A50" }, line: { color: p.c, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.52, h: 1.3, fill: { color: p.c } });
s.addText(p.n, { x, y, w: 0.52, h: 1.3, fontSize: 22, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(p.t, { x: x + 0.62, y: y + 0.1, w: 3.9, h: 0.3, fontSize: 13.5, bold: true, color: p.c, fontFace: "Calibri" });
s.addText(p.d, { x: x + 0.62, y: y + 0.44, w: 3.9, h: 0.74, fontSize: 11.5, color: "#C8D8EE", fontFace: "Calibri", valign: "top" });
});
}
// ═══════════════════════════════════════════════
// SLIDE 17 — THANK YOU / REFERENCES
// ═══════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.38, h: 5.625, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0.38, y: 0, w: 0.12, h: 5.625, fill: { color: C.gold } });
s.addText("Thank You", { x: 0.72, y: 0.6, w: 9, h: 0.8, fontSize: 42, bold: true, color: C.white, fontFace: "Calibri" });
s.addText("Questions & Discussion", { x: 0.72, y: 1.42, w: 9, h: 0.42, fontSize: 20, color: C.gold, fontFace: "Calibri", italic: true });
s.addShape(pres.ShapeType.rect, { x: 0.72, y: 1.92, w: 7, h: 0.06, fill: { color: C.teal } });
s.addText("References", { x: 0.72, y: 2.08, w: 9, h: 0.34, fontSize: 16, bold: true, color: C.lgray, fontFace: "Calibri" });
const refs = [
"1. Anusavice KJ, Shen C, Rawls HR. Phillips' Science of Dental Materials. 12th ed. Elsevier Saunders; 2013.",
"2. McCabe JF, Walls AWG. Applied Dental Materials. 9th ed. Blackwell Publishing; 2008.",
"3. Kamal A. Dental Material — Relining and Rebasing. Lecture 20, Prosthodontic 2, Univ of Mustansiriyah.",
"4. Alkafaji A. Relining Materials. Dental Materials Lecture 19-20, Univ Baghdad; 2021.",
"5. Wajid N et al. Soft lining materials in denture relining. World J Adv Res Rev. 2025;25.",
"6. Decisions in Dentistry. Clinical Considerations for Relining a Complete Denture. 2022.",
"7. Pocket Dentistry. Chapter 14: Denture Lining Materials. (McCabe & Walls based).",
];
refs.forEach((r, i) => {
s.addText(r, { x: 0.72, y: 2.55 + i * 0.38, w: 9.0, h: 0.35, fontSize: 11, color: C.lgray, fontFace: "Calibri" });
});
}
// Write file
pres.writeFile({ fileName: "/home/daytona/workspace/reliners-ppt/Denture_Reliners.pptx" })
.then(() => console.log("Done."))
.catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/reliners-ppt && node build.js
ls -lh /home/daytona/workspace/reliners-ppt/Denture_Reliners.pptx
Denture Reliners
Presentation · PPTX
| # | Slide | Key images/visuals |
|---|---|---|
| 1 | Title Slide | Denture relining cover image |
| 2 | Table of Contents | 10 colour-coded topic tiles |
| 3 | Introduction & Definitions | Relining / Rebasing / Tissue conditioning defined + clinical photo of ill-fitting denture |
| 4 | Indications & Contraindications | Side-by-side green tick / red cross columns |
| 5 | Classification | Visual decision tree by hardness, method & duration + classification overview image |
| 6 | Hard Reline Materials | 4-column composition table (Type 1, Type 2, Lab) |
| 7 | Soft Reline — Types & Composition | Plasticized acrylic vs Silicone tables + clinical soft liner photo |
| 8 | Soft Liners — Properties & Comparison | 11-row comparison table (acrylic vs silicone) + GC Reline product image |
| 9 | Tissue Conditioners | Full composition table + indications + tissue conditioner photo |
| 10 | Tissue Conditioners — Properties & Limitations | Viscoelastic behaviour, setting, plasticizer leaching, microbiology, functional impression |
| 11 | Chairside (Direct) Procedure | 7-step numbered clinical protocol + procedure photo |
| 12 | Laboratory (Indirect) Procedure | Clinical steps (dentist) + lab steps (technician) side-by-side |
| 13 | Rebasing | Indications + Relining vs Rebasing comparison |
| 14 | Comparison Master Table | 5 reline types across 10 clinical parameters |
| 15 | Clinical Decision Tree + Complications | 3-question decision flow + complications bar |
| 16 | Summary — 6 Take-Home Points | Dark background pearl cards |
| 17 | Thank You + 7 References | — |