docs/site/Rockwell/Optix/DotNet/tpdDiangosticGenerator/index.html

638 lines
28 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
<link rel="canonical" href="/Rockwell/Optix/DotNet/tpdDiangosticGenerator/">
<meta property="og:title" content="tpdDiangosticGenerator | docmd">
<meta property="og:description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
<meta property="og:url" content="/Rockwell/Optix/DotNet/tpdDiangosticGenerator/">
<meta property="og:site_name" content="docmd">
<meta property="og:image" content="/assets/images/docmd-preview.png">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="tpdDiangosticGenerator | docmd">
<meta name="twitter:description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
<meta name="twitter:image" content="/assets/images/docmd-preview.png">
<title>tpdDiangosticGenerator : docmd</title>
<link rel="shortcut icon" href="../../../assets/favicon.ico" type="image/x-icon">
<script>// Source file from the docmd project — https://github.com/mgks/docmd
/*
* Initialize the theme from localStorage
*/
(function() {
try {
const storedTheme = localStorage.getItem('docmd-theme');
if (storedTheme) {
document.documentElement.setAttribute('data-theme', storedTheme);
// Also update highlight CSS link to match the stored theme
const highlightThemeLink = document.getElementById('highlight-theme');
if (highlightThemeLink) {
const baseHref = highlightThemeLink.getAttribute('data-base-href');
if (baseHref) {
const newHref = baseHref + `docmd-highlight-${storedTheme}.css`;
highlightThemeLink.setAttribute('href', newHref);
}
}
}
} catch (e) {
console.error('Error applying theme from localStorage', e);
}
})();</script>
<link rel="stylesheet" href="../../../assets/css/docmd-main.css">
<link rel="stylesheet" id="highlight-theme" href="../../../assets/css/docmd-highlight-light.css" data-base-href="../../../assets/css/">
<link rel="stylesheet" href="../../../assets/css/docmd-theme-sky.css">
<!-- Google Analytics GA4 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8QVBDQ4KM1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8QVBDQ4KM1');
</script>
</head>
<body class="sidebar-collapsible"
data-theme="light" data-default-collapsed="false"
data-copy-code-enabled="true">
<aside class="sidebar">
<div class="sidebar-header">
<a href="/" class="logo-link">
<img src="../../../assets/images/docmd-logo-light.png" alt="docmd logo" class="logo-light" >
<img src="../../../assets/images/docmd-logo-dark.png" alt="docmd logo" class="logo-dark" >
</a>
</div>
<nav class="sidebar-nav" aria-label="Main navigation">
<ul>
<li class="" >
<a href="../../../" class="" >
<svg class="lucide-icon icon-home" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" />
<path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
</svg>
<span class="nav-item-title">Welcome</span>
</a>
</li>
<li class="collapsible" data-nav-id="#">
<a href="#" class="" >
<svg class="lucide-icon icon-rocket" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z" />
<path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z" />
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" />
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" />
</svg>
<span class="nav-item-title">Getting Started</span>
<svg class="lucide-icon icon-chevron-right collapse-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="m9 18 6-6-6-6" />
</svg>
</a>
<ul class="submenu">
<li class="" >
<a href="https://docmd.mgks.dev" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-scroll" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M19 17V5a2 2 0 0 0-2-2H4" />
<path d="M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3" />
</svg>
<span class="nav-item-title">Documentation</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://docmd.mgks.dev/getting-started/installation" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-download" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 15V3" />
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
<path d="m7 10 5 5 5-5" />
</svg>
<span class="nav-item-title">Installation</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://docmd.mgks.dev/getting-started/basic-usage" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-play" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z" />
</svg>
<span class="nav-item-title">Basic Usage</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://docmd.mgks.dev/content" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-layout-template" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect width="18" height="7" x="3" y="3" rx="1" />
<rect width="9" height="7" x="3" y="14" rx="1" />
<rect width="5" height="7" x="16" y="14" rx="1" />
</svg>
<span class="nav-item-title">Content</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
</ul>
</li>
<li class="" >
<a href="https://github.com/mgks/docmd" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-github" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4" />
<path d="M9 18c-4.51 2-5-2-7-2" />
</svg>
<span class="nav-item-title">GitHub</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://github.com/sponsors/mgks" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-heart" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5" />
</svg>
<span class="nav-item-title">Support the Project</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
</ul>
</nav>
</aside>
<div class="main-content-wrapper">
<div class="page-header">
<div class="header-left">
<button id="sidebar-toggle-button" class="sidebar-toggle-button" aria-label="Toggle Sidebar">
<svg class="lucide-icon icon-panel-left-close" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect width="18" height="18" x="3" y="3" rx="2" />
<path d="M9 3v18" />
<path d="m16 15-3-3 3-3" />
</svg>
</button>
<h1>tpdDiangosticGenerator</h1>
</div>
<div class="header-right">
<button id="theme-toggle-button" aria-label="Toggle theme" class="theme-toggle-button theme-toggle-header">
<svg class="lucide-icon icon-sun icon-sun" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="4" />
<path d="M12 2v2" />
<path d="M12 20v2" />
<path d="m4.93 4.93 1.41 1.41" />
<path d="m17.66 17.66 1.41 1.41" />
<path d="M2 12h2" />
<path d="M20 12h2" />
<path d="m6.34 17.66-1.41 1.41" />
<path d="m19.07 4.93-1.41 1.41" />
</svg>
<svg class="lucide-icon icon-moon icon-moon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" />
</svg>
</button>
</div>
</div>
<main class="content-area">
<div class="content-layout">
<div class="main-content">
<h1 id="tpddiangosticgenerator">⚙️ tpdDiangosticGenerator</h1>
<p>La classe <strong>tpdDiangosticGenerator</strong> è il cuore pulsante del sistema diagnostico. Si occupa di <strong>generare automaticamente</strong> i modelli diagnostici e i pulsanti di navigazione per diverse componenti hardware e di sicurezza del progetto.</p>
<p>Con questa classe, la configurazione e la gestione della diagnostica diventano semplici, rapide e centralizzate.</p>
<hr>
<h2 id="panoramica-generale">🚦 Panoramica generale</h2>
<p>Il generatore lavora su due fronti principali:</p>
<ul>
<li><strong>Modelli diagnostici</strong>: rappresentazioni strutturate di assi, alimentatori, sicurezza, ecc.</li>
<li><strong>Pulsanti di navigazione</strong>: bottoni che permettono di accedere rapidamente alle schermate diagnostiche relative ai modelli.</li>
</ul>
<hr>
<h2 id="metodi-principali">🛠️ Metodi principali</h2>
<table>
<thead>
<tr>
<th>Metodo</th>
<th>Descrizione</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>GenerateALL()</code></td>
<td>Genera <strong>tutti</strong> i modelli e i pulsanti, invocando i metodi specifici sottostanti.</td>
<td>Metodo “one-shot”</td>
</tr>
<tr>
<td><code>GenerateAllModels()</code></td>
<td>Invoca la generazione di tutti i modelli specifici (assi, PSU, sicurezza, ecc.)</td>
<td></td>
</tr>
<tr>
<td><code>GenerateAllButtons()</code></td>
<td>Invoca la generazione di tutti i pulsanti specifici per ogni modello diagnostico</td>
<td></td>
</tr>
<tr>
<td><code>GenerateAxisModel()</code></td>
<td>Genera i modelli degli assi sulla base dei tag <code>stStandardAxis</code>.</td>
<td>Usa <code>AxisType</code></td>
</tr>
<tr>
<td><code>GenerateAxisButtons()</code></td>
<td>Crea i pulsanti di navigazione collegati agli assi, puntando alla pagina diagnostica asse <code>_810_DiagAxis</code></td>
<td></td>
</tr>
<tr>
<td><code>GeneratePSUModel()</code></td>
<td>Genera i modelli per le unità di alimentazione (<code>PSUType</code>).</td>
<td></td>
</tr>
<tr>
<td><code>GeneratePSUButtons()</code></td>
<td>Pulsanti per le PSU, con link alla pagina <code>_814_DiagPSU</code>.</td>
<td></td>
</tr>
<tr>
<td><code>GenerateDCSModel()</code></td>
<td>Genera modelli per i componenti di sicurezza <code>SafetyDCSType</code> basati su tag <code>DCI_STOP</code>.</td>
<td></td>
</tr>
<tr>
<td><code>GenerateCROUTModel()</code></td>
<td>Modelli sicurezza <code>SafetyCROUTType</code> basati su tag <code>CONFIGURABLE_ROUT</code>.</td>
<td></td>
</tr>
<tr>
<td><code>GenerateFPMSModel()</code></td>
<td>Modelli sicurezza <code>SafetyFPMSType</code> basati su tag <code>FIVE_POS_MODE_SELECTOR</code>.</td>
<td></td>
</tr>
<tr>
<td><code>GenerateSafetyButtons()</code></td>
<td>Pulsanti per la sicurezza, puntano a <code>_830_DiagSafety</code>.</td>
<td></td>
</tr>
</tbody>
</table>
<hr>
<h2 id="come-funziona-sotto-il-cofano">🧰 Come funziona “sotto il cofano”</h2>
<p>Il fulcro del generatore è il metodo privato <code>GenerateModels</code>, che:</p>
<ol><li>Cerca nelle cartelle di comunicazione i <strong>tag</strong> corrispondenti al tipo specificato (es. <code>stStandardAxis</code>).</li>
<li>Per ogni tag, crea (o trova) un <strong>modello</strong> corrispondente nella cartella modelli.</li>
<li>Imposta un nome leggibile e associa un puntatore al tag originale.</li>
</ol>
<p>Analogamente, <code>GenerateButtons</code> crea per ogni modello un pulsante di navigazione nella pagina diagnostica dedicata, utilizzando un template di pulsante personalizzato.</p>
<hr>
<h2 id="funzioni-di-supporto-utili">💡 Funzioni di supporto utili</h2>
<ul>
<li><code>ExtractReadableName(string variableName)</code>: estrae un nome utente-friendly da un nome di variabile tecnica, inserendo spazi e capitalizzando correttamente.<br>
<em>Es.:</em> <code>&quot;Axis_X1&quot;</code><code>&quot;X 1&quot;</code></li>
</ul>
<hr>
<h1 id="in-depth-funzioni-di-tpddiangosticgenerator">🔍 In Depth: Funzioni di tpdDiangosticGenerator</h1>
<hr>
<h3 id="generateall"><code>GenerateALL()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Metodo principale “one-shot” che rigenera <strong>tutti i modelli diagnostici</strong> e <strong>tutti i pulsanti di navigazione</strong> in un solo colpo.<br>
È pensato per un uso “a caldo” dopo modifiche estese ai tag o alla struttura del progetto.</p>
</blockquote>
<blockquote>
<p><strong>Dettagli tecnici:</strong><br>
Invoca internamente <code>GenerateAllModels()</code> e <code>GenerateAllButtons()</code>, orchestrando così la generazione completa della diagnostica.</p>
</blockquote>
<blockquote>
<p><strong>Esempio duso:</strong></p>
<pre class="hljs"><code>diagnosticGenerator.GenerateALL();
</code></pre>
</blockquote>
<blockquote>
<p><strong>Nota da interfaccia Optix:</strong><br>
È possibile eseguire questo metodo cliccando con il tasto destro sulloggetto <strong>design time NetLogic</strong> o sul suo genitore e selezionando <strong>Execute GenerateALL</strong>.</p>
</blockquote>
<hr>
<h3 id="generateallmodels"><code>GenerateAllModels()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Chiama i generatori specifici per ogni categoria di modello diagnostico (assi, PSU, sicurezza), in modo ordinato e modulare.</p>
</blockquote>
<blockquote>
<p><strong>Modelli generati:</strong></p>
<ul>
<li>Assi (Axis)</li>
<li>Alimentatori (PSU)</li>
<li>Componenti di sicurezza (DCS, CROUT, FPMS)</li>
</ul>
</blockquote>
<hr>
<h3 id="generateallbuttons"><code>GenerateAllButtons()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Genera i pulsanti di navigazione associati ai modelli diagnostici appena creati, suddivisi per categoria (assi, PSU, sicurezza).</p>
</blockquote>
<hr>
<h3 id="generateaxismodel"><code>GenerateAxisModel()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Scansiona i tag di tipo <code>stStandardAxis</code> presenti nei driver di comunicazione e genera i modelli <code>AxisType</code> corrispondenti.</p>
</blockquote>
<blockquote>
<p><strong>Dettagli:</strong><br>
Imposta la proprietà <code>AxisPointer</code> del modello con il riferimento al tag originale.</p>
</blockquote>
<hr>
<h3 id="generateaxisbuttons"><code>GenerateAxisButtons()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Per ogni modello asse generato, crea un pulsante di navigazione che punta alla schermata diagnostica asse <code>_810_DiagAxis</code>.</p>
</blockquote>
<hr>
<h3 id="generatepsumodel"><code>GeneratePSUModel()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Genera i modelli <code>PSUType</code> per tutti i tag di tipo <code>stPowerSupply</code> trovati, collegandoli opportunamente.</p>
</blockquote>
<hr>
<h3 id="generatepsubuttons"><code>GeneratePSUButtons()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Crea i pulsanti di navigazione per ogni modello PSU, collegati alla pagina <code>_814_DiagPSU</code>.</p>
</blockquote>
<hr>
<h3 id="generatedcsmodel"><code>GenerateDCSModel()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Genera modelli diagnostici per i componenti di sicurezza <code>SafetyDCSType</code> basandosi sui tag <code>DCI_STOP</code>.</p>
</blockquote>
<hr>
<h3 id="generatecroutmodel"><code>GenerateCROUTModel()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Genera modelli <code>SafetyCROUTType</code> per tag <code>CONFIGURABLE_ROUT</code> correlati ai sistemi di sicurezza configurabili.</p>
</blockquote>
<hr>
<h3 id="generatefpmsmodel"><code>GenerateFPMSModel()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Genera modelli <code>SafetyFPMSType</code> basati sui tag <code>FIVE_POS_MODE_SELECTOR</code>, tipici di selettori modalità a 5 posizioni.</p>
</blockquote>
<hr>
<h3 id="generatesafetybuttons"><code>GenerateSafetyButtons()</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Crea i pulsanti di navigazione per tutti i modelli di sicurezza, puntando alla schermata <code>_830_DiagSafety</code>.</p>
</blockquote>
<hr>
<h3 id="extractreadablenamestring-variablename"><code>ExtractReadableName(string variableName)</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Estrae un nome leggibile e “user-friendly” da un nome tecnico di variabile.<br>
Ad esempio: <code>&quot;Axis_X1&quot;</code> diventa <code>&quot;X 1&quot;</code>.</p>
</blockquote>
<blockquote>
<p><strong>Come funziona:</strong></p>
<ul>
<li>Prende lultima parte dopo lultimo underscore</li>
<li>Inserisce spazi prima di lettere maiuscole o cifre</li>
<li>Formattta la stringa con la prima lettera maiuscola, il resto minuscolo</li>
</ul>
</blockquote>
<hr>
<h3 id="generatemodelsstring-modelfolderpath-string-tagtypename-type-modeltype-string-pointervariablename"><code>GenerateModels(string modelFolderPath, string tagTypeName, Type modelType, string pointerVariableName)</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Metodo generico interno per creare i modelli diagnostici.</p>
<ul>
<li>Cerca nelle cartelle di comunicazione i tag con il tipo specificato.</li>
<li>Per ciascun tag, crea o recupera un modello corrispondente nella cartella modelli.</li>
<li>Imposta il nome leggibile e il puntatore al tag originale.</li>
</ul>
</blockquote>
<hr>
<h3 id="generatebuttonsstring-modelfolderpath-string-diagnosticpagepath"><code>GenerateButtons(string modelFolderPath, string diagnosticPagePath)</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Per ogni modello nella cartella indicata, crea (o riusa) un pulsante di navigazione nella pagina diagnostica specificata.<br>
Usa un template di pulsante predefinito per mantenere luniformità grafica e funzionale.</p>
</blockquote>
<hr>
<h3 id="createmodeltagstructure-tag-type-modeltype-folder-modelsfolder"><code>CreateModel(TagStructure tag, Type modelType, Folder modelsFolder)</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Crea un nuovo oggetto modello con il nome del tag e del tipo specificato, e lo inserisce nella cartella dei modelli.</p>
</blockquote>
<hr>
<h3 id="populatemodeliuaobject-model-tagstructure-tag-string-pointervariablename"><code>PopulateModel(IUAObject model, TagStructure tag, string pointerVariableName)</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Riempie il modello con un nome leggibile e imposta la variabile puntatore con il NodeId del tag originale.</p>
</blockquote>
<hr>
<h3 id="createbuttonstring-browsename-screentype-diagnosticscreen"><code>CreateButton(string browseName, ScreenType diagnosticScreen)</code></h3>
<blockquote>
<p><strong>Descrizione:</strong><br>
Crea un nuovo pulsante di navigazione utilizzando il template <code>tpButtNavigationDiagnostic</code>, lo aggiunge al layout della schermata diagnostica e lo restituisce per ulteriori configurazioni.</p>
</blockquote>
<hr>
</div>
<!-- DEBUG: {"headingsLength":23} -->
<!-- TOC sidebar -->
<div class="toc-sidebar">
<div class="toc-container">
<h2 class="toc-title">On This Page</h2>
<ul class="toc-list">
<li class="toc-item toc-level-2">
<a href="#panoramica-generale" class="toc-link">🚦 Panoramica generale</a>
</li>
<li class="toc-item toc-level-2">
<a href="#metodi-principali" class="toc-link">🛠️ Metodi principali</a>
</li>
<li class="toc-item toc-level-2">
<a href="#come-funziona-sotto-il-cofano" class="toc-link">🧰 Come funziona “sotto il cofano”</a>
</li>
<li class="toc-item toc-level-2">
<a href="#funzioni-di-supporto-utili" class="toc-link">💡 Funzioni di supporto utili</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generateall" class="toc-link">GenerateALL()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generateallmodels" class="toc-link">GenerateAllModels()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generateallbuttons" class="toc-link">GenerateAllButtons()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generateaxismodel" class="toc-link">GenerateAxisModel()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generateaxisbuttons" class="toc-link">GenerateAxisButtons()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generatepsumodel" class="toc-link">GeneratePSUModel()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generatepsubuttons" class="toc-link">GeneratePSUButtons()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generatedcsmodel" class="toc-link">GenerateDCSModel()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generatecroutmodel" class="toc-link">GenerateCROUTModel()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generatefpmsmodel" class="toc-link">GenerateFPMSModel()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generatesafetybuttons" class="toc-link">GenerateSafetyButtons()</a>
</li>
<li class="toc-item toc-level-3">
<a href="#extractreadablenamestring-variablename" class="toc-link">ExtractReadableName(string variableName)</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generatemodelsstring-modelfolderpath-string-tagtypename-type-modeltype-string-pointervariablename" class="toc-link">GenerateModels(string modelFolderPath, string tagTypeName, Type modelType, string pointerVariableName)</a>
</li>
<li class="toc-item toc-level-3">
<a href="#generatebuttonsstring-modelfolderpath-string-diagnosticpagepath" class="toc-link">GenerateButtons(string modelFolderPath, string diagnosticPagePath)</a>
</li>
<li class="toc-item toc-level-3">
<a href="#createmodeltagstructure-tag-type-modeltype-folder-modelsfolder" class="toc-link">CreateModel(TagStructure tag, Type modelType, Folder modelsFolder)</a>
</li>
<li class="toc-item toc-level-3">
<a href="#populatemodeliuaobject-model-tagstructure-tag-string-pointervariablename" class="toc-link">PopulateModel(IUAObject model, TagStructure tag, string pointerVariableName)</a>
</li>
<li class="toc-item toc-level-3">
<a href="#createbuttonstring-browsename-screentype-diagnosticscreen" class="toc-link">CreateButton(string browseName, ScreenType diagnosticScreen)</a>
</li>
</ul>
</div>
</div>
</div>
</main>
<footer class="page-footer">
<div class="footer-content">
<div class="user-footer">
© 2025 Project.
</div>
<div class="branding-footer">
Build with <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"></path><path d="M12 5 9.04 7.96a2.17 2.17 0 0 0 0 3.08c.82.82 2.13.85 3 .07l2.07-1.9a2.82 2.82 0 0 1 3.79 0l2.96 2.66"></path><path d="m18 15-2-2"></path><path d="m15 18-2-2"></path></svg> <a href="https://docmd.mgks.dev" target="_blank" rel="noopener">docmd.</a>
</div>
</div>
</footer>
</div>
<script src="../../../assets/js/docmd-main.js"></script>
<script src="../../../assets/js/docmd-image-lightbox.js"></script>
</body>
</html>