Portable SVG-Symbole
Statische SVG-Symbole mit sicheren Ganter-Verknüpfungen und typisierten Anschlusspunkten bauen und weitergeben.
Ganter-Symbole halten Grafik und Live-Daten getrennt. Die Grafik ist gewöhnliches, statisches SVG. Jede Zuordnung von Werten und jede Bewegung gehört Ganter Lab, eine importierte Datei kann also keine Skripte, Ereignisbehandlungen, eingebetteten Bewegungscode oder Netzwerkanfragen ausführen. Diese Seite ist die vollständige Referenz des Autorenmodells: was ein Symbol erklärt, was der Import annimmt und ablehnt und wie Symbole zwischen Stationen reisen.
Ein Symbol erklärt über seine Grafik hinaus drei Dinge:
- Slots: benannte Eingaben (Füllung, Linie, Bewegung, Text, Sichtbarkeit), die eine platzierte Instanz im Dashboard später aus einer Adresse in Logic oder aus einem festen Wert speist.
- Anschlusspunkte: typisierte Verbindungspunkte am Rand, damit das Dashboard Rohre, Kanäle, Leitungen und Wellen zwischen Symbolen führen kann.
- Vorschläge: wahlweise hinterlegte Kompositionen mit anderen Symbolen, in genau gesetzter Lage.
Systemsymbole und Meine Symbole
Der Katalog hat zwei Herkünfte, überall filterbar, wo Symbole aufgelistet werden:
| Herkunft | Verweis | Was es ist |
|---|---|---|
| System | system:<stable-key> |
Die eingebauten Bibliotheken, die mit der Anwendung kommen. Untersuchbar und exportierbar, nie an Ort und Stelle änderbar. |
| Eigene | user:<guid> |
Symbole, die Sie erzeugt, importiert oder dupliziert haben. Änderbar und löschbar. |
Jedes Systemsymbol bietet In Meine Symbole duplizieren: Die Kopie ist ein eingefrorenes, eigenes Asset (Grafik, View-Box, Einpassung, Grundfläche, Slots, Typkonfigurationen, Anschlusspunkte und Vorschläge werden zusammen kopiert), sie verhält sich also weiter wie ausgewählt, auch wenn eine spätere Aktualisierung der Anwendung das Original ändert. Das Löschen eines eigenen Symbols wird bestätigt; Dashboards, die es noch verwenden, zeigen einen Platzhalter, statt kaputtzugehen.
Wege, ein Symbol anzulegen
- Eine Datei importieren: Logic > Assets > Symbole > Symbol importieren nimmt ein einfaches
.svgoder ein vollständiges Paket.ganter-symbol.jsonan. Jeder Import erzeugt ein neues Asset mit eigener Identität; er überschreibt nie ein vorhandenes Symbol, und ein Namenskonflikt wird durch einen Zusatz gelöst (" 2", " 3", …), statt fehlzuschlagen. Die Dateiauswahl lehnt Dateien über 1 MB ab, bevor ein Byte gelesen wird. Nach dem Import eines einfachen SVG meldet die Anwendung, wie viele unsichere Bestandteile sie entfernt hat, wenn es welche gab. - In der Anwendung schreiben: Neues eigenes Symbol öffnet einen Editor für den Namen, das SVG-Markup, das Layout im Dashboard (Einpassung und anfängliche Grundfläche) und die Slots; sobald das Symbol existiert, werden gültige Änderungen automatisch gespeichert. Die Geometrie der Anschlusspunkte ist in der Anwendung bewusst nicht änderbar: Typisierte Anschlusspunkte kann nur ein Paket mitbringen, und im Paket hinterlegte Anschlusspunkte bleiben über spätere Änderungen hinweg schreibgeschützt erhalten.
- Eine KI fragen: Zwei Wege teilen sich genau denselben Vertrag. Über den eingebetteten
MCP-Endpunkt führt das Werkzeug
symbol_validateden Import als Trockenlauf aus, undsymbol_importspeichert ein neues Asset; beide tragen den vollständigen Vertrag in ihrer Beschreibung. Aus einem externen Chat ohne Zugriff auf die Anwendung kopiert Chat-Anweisung kopieren im Bereich Symbole eine in sich geschlossene Aufforderung; speichern Sie das zurückgegebene SVG oder Paket als Datei und importieren Sie es hier.
Der Arbeitsbereich rings um die Assets steht unter Logic.
Ein einfaches SVG vorbereiten
Geben Sie jedem Teil, das Sie verknüpfen wollen, eine feste SVG-id. Nach dem Import erscheinen
diese IDs in der Auswahl des Slot-Ziels. IDs und Slot-Namen teilen eine Grammatik: Sie beginnen mit
einem Buchstaben oder _, fahren mit Buchstaben, Ziffern, _, ., : oder - fort und sind
höchstens 128 Zeichen lang.
Die wahlweisen Attribute data-ganter-* sind das einzige Ganter-eigene Markup, das ein Symbol
tragen darf:
| Attribut | An | Was es erklärt |
|---|---|---|
data-ganter-pivot="x y" |
jedem verknüpfbaren Element | Der genaue Drehpunkt (Koordinaten der View-Box) für Slots der Arten rotate, scale und spin. An deren Zielelement erforderlich. |
data-ganter-spin-ratio |
einem Kind eines sich drehenden Elements | Die relative Geschwindigkeit eines sichtbaren Rotors darunter. Endlich, ungleich null, Betrag höchstens 100; negativ dreht in die andere Richtung. Wird entfernt, wenn das Element nicht auch einen eigenen Drehpunkt erklärt. |
data-ganter-role |
jedem Element | Eine feste inhaltliche Rolle für Autorenwerkzeuge. Nur zur Information. |
data-ganter-fit-width |
<text> / <tspan> |
Freiwillig begrenzte Anzeige für einen Text-Slot: Ist der verknüpfte Text breiter als diese Anzahl Einheiten der View-Box, verkleinert sich die Schrift, bis er passt. |
data-ganter-fit-min-font-size |
<text> / <tspan> |
Die kleinste Schriftgröße, bis zu der verkleinert werden darf. Darunter zeigt das Element den Ersatztext, während der vollständige Wert im zugänglichen Namen und im Tooltip bleibt. |
data-ganter-fit-fallback |
<text> / <tspan> |
Der Text, der gezeigt wird, wenn selbst die kleinste Schriftgröße den Wert nicht fassen kann. |
Anschlusspunkte für Verbindungen leben nicht im SVG und zielen nicht auf IDs von SVG-Elementen.
Attribute namens data-ganter-port oder data-ganter-port-* gehören nicht zum Format: Der Import
eines einfachen SVG entfernt sie; ein strenges Paket, das sie enthält, wird abgelehnt.
Der Import eines einfachen SVG ergibt immer ein gültiges, nur visuelles Symbol: null Anschlusspunkte, null Slots. Der Inspektor meldet, dass es keinen verbindbaren Anschlusspunkt gibt, weil Rolle, Typ, äußere Richtung und innerer Pfad nicht erklärt wurden. Ganter leitet diese Felder nicht aus Dateiname, Kategorie oder Grafik ab und öffnet keinen Editor für innere Anschlusspunkte oder Pfade.
Was die Bereinigung annimmt
Dieselbe SVG-Regel gilt für jeden Weg (Dateiimport, Editor in der Anwendung, MCP, Paket). Sie ist bewusst kleiner als SVG:
- Behalten: unbewegte Geometrie und Struktur:
svg,g,defs,symbol,use,path,rect,circle,ellipse,line,polyline,polygon,text,tspan,title,desc,clipPath,mask,linearGradient,radialGradient,stop,pattern,marker, mit den Attributen der Darstellung (Füllung, Linie, Deckkraft, Transformation, Gestaltung) und ARIA-Beschriftungen. - Entfernt oder abgelehnt:
<script>,<style>,<foreignObject>, Ereignisbehandlungen, eingebettete Bewegung und jede externe URL sowiedata:/file:/http(s). Nur interne Verweiseurl(#id)undhref="#id"überleben. - Grenzen: Das Markup darf höchstens 512 KB und 4096 Elemente groß sein.
Sichere Farbangaben sind Hexwerte, die benannten CSS-Farben, rgb()/rgba()/hsl()/hsla() und
die Design-Tokens der Anwendung var(--color-<name>) (zum Beispiel var(--color-success),
var(--color-symbol-off)). Design-Tokens sind der Weg, auf dem eine Grafik sich an hell und dunkel
anpasst: Liefern Sie eine Zeichnung, die Tokens verwendet, nie zwei Varianten je Design.
Wie ein Verstoß behandelt wird, hängt vom Weg ab: Ein einfaches SVG wird repariert (unsichere Bestandteile werden entfernt, und jede Entfernung wird als Warnung gemeldet); ein Paket ist streng und wird abgelehnt, wobei die ersten Verstöße benannt werden, statt stillschweigend repariert zu werden.
Portables Paket v2
Der Export eines Symbols erzeugt eine Datei .ganter-symbol.json. Jedes Feld des Umschlags ist
erforderlich; die drei Vertragslisten dürfen leer sein, müssen aber vorhanden sein:
| Feld | Anforderung |
|---|---|
$schema |
Genau https://ganterlab.com/schemas/ganter-symbol-v2.schema.json. |
format |
Genau ganter-symbol. |
version |
Genau 2. Pakete der Version 1 werden abgelehnt, statt durch einen Leser für Altformate zu laufen. |
name |
Der angezeigte Name. Ein Import darf ihn überschreiben, und ein Konflikt bekommt automatisch einen Zusatz. |
svg |
Bereinigtes, statisches SVG, dessen Wurzelelement eine viewBox trägt, die dem Feld viewBox gleicht. |
viewBox |
minX minY width height: vier endliche Zahlen mit positiver Breite und Höhe. |
fit |
contain, stretch, stretch-x oder stretch-y. |
footprint |
{ "width": 1..24, "height": 1..12 }, die vorgeschlagenen Zellen im Dashboard. |
slots |
Liste der Slot-Erklärungen (unten). |
typeConfigurations |
Liste der gemeinsamen Typwahlen für Anschlusspunkte (unten). |
terminals |
Liste von bis zu 16 vollständigen Anschlusspunkten (unten). |
suggestions |
Liste der geordneten hinterlegten Kompositionen (unten). |
Das öffentliche JSON-Schema für Ganter Symbol v2 prüft den
Umschlag für den Transport. Der Import führt danach die inhaltlichen Prüfungen aus, die ein
JSON-Schema nicht ausdrücken kann: Existenz des SVG-Ziels, Geometrie des inneren Pfads,
Verträglichkeit der Vorschläge. Ein Paket ist in jeder Hinsicht streng: unsicheres Markup,
unbekannte Felder, leere Listeneinträge und die früheren Verträge ports[], anchors[], profile
und connectionStyle werden abgelehnt statt repariert.
Das Paket enthält nie eine Adresse der Station, eine Verknüpfung eines Dashboards, eine Typwahl einer Instanz, eine GUID aus der Datenbank oder die Identität eines Benutzers. Ein Slot, der eine Adresse in Logic trägt, lässt sich gar nicht erst exportieren: Die Adresse gehört zur platzierten Instanz, nicht zum wiederverwendbaren Symbol.
Größe, View-Box und Einpassung
Die View-Box ist der natürliche Koordinatenraum des Symbols. Anschlusspunkte und innere Pfade
werden darin erklärt, und sie muss der viewBox der SVG-Wurzel genau gleichen; ein Paket, dessen
beide View-Boxen sich unterscheiden, wird abgelehnt. Nicht quadratische View-Boxen werden voll
unterstützt, ein langer Förderer muss also nicht in einem Quadrat wohnen.
Die Einpassung sagt, wie die Grafik das Rechteck nutzt, das der Bediener im Dashboard aufzieht:
| Einpassung | Verhalten |
|---|---|
contain |
Behält das Seitenverhältnis; die Grafik steht mit Rändern im Rechteck der Zellen. Der Standard. |
stretch |
Füllt das Rechteck in beiden Achsen und verzerrt dabei, wenn nötig. |
stretch-x |
Dehnt waagerecht und behält das natürliche senkrechte Verhältnis. |
stretch-y |
Dehnt senkrecht und behält das natürliche waagerechte Verhältnis. |
Die Grundfläche ist die anfängliche Größe in Rasterzellen des Dashboards, wenn das Symbol zum ersten Mal platziert wird: Breite 1 bis 24, Höhe 1 bis 12 (der Editor verwendet standardmäßig 4 × 4). Sie ist ein Vorschlag, keine Vorgabe; der Bediener ändert die Größe danach frei.
Zwei getrennte Tore begrenzen die Größe eines Imports: Die Dateiauswahl lehnt alles über 1 MB ab, bevor sie es liest, und die Bereinigung lehnt Markup über 512 KB oder 4096 Elemente ab.
Slots: die Fläche der Verknüpfung
Ein Slot erklärt eine Eingabe: welches Element er steuert, was er damit tut und wie Eingabewerte auf die Ausgabe abgebildet werden. Die platzierte Instanz im Dashboard wählt später die Quelle jedes Slots (eine Adresse in Logic oder einen festen Wert); das Symbol selbst speichert nie eine Quelle.
Jeder Slot trägt:
| Feld | Bedeutung |
|---|---|
name |
Der Name des Parameters, den der Autor des Dashboards sieht. Grammatik der Bezeichner wie oben; innerhalb der Slots des Symbols eindeutig. |
elementId |
Die id eines vorhandenen SVG-Elements. Ein Element nimmt höchstens einen Slot je Kanal an, zwei Slots können sich also nicht um die Füllung desselben Elements streiten. |
kind |
Eine der dreizehn Arten unten. |
inMin, inMax |
Der Eingabebereich: die beiden Werte, die auf outMin/outMax abgebildet werden. Endliche Zahlen; von den stetigen Arten verwendet und von fill/stroke als Mitte der Schwelle. |
outMin, outMax |
Der Ausgabebereich in der Einheit der Art (Grad, Einheiten der View-Box, 0..1, Grad je Sekunde). Endliche Zahlen. |
outMinSecondary, outMaxSecondary |
Wahlweise zweite Ausgabeachse, nur bei translate und scale: Die erste Ausgabe ist X, die zweite ist Y. Beide angeben oder keine. |
onColor, offColor |
Sichere Farbangaben für fill/stroke (die beiden Zustände an der Schwelle). Bei fillColor/strokeColor ist onColor die Vorschaufarbe des Inspektors. |
Die dreizehn Slot-Arten:
| Art | Was sie steuert | Hinweise |
|---|---|---|
rotate |
Dreht das Element; die Eingabe wird linear auf Grad abgebildet. | Das Ziel muss data-ganter-pivot erklären. |
opacity |
Die Deckkraft des Elements; die Eingabe wird auf 0..1 abgebildet. | |
fill |
Färbt die Füllung unterhalb der Mitte des Eingabebereichs mit offColor und ab der Mitte mit onColor. Eine Eingabe vom Typ Bool schaltet unmittelbar. |
Zielt auf füllbare Formen (nicht auf <line>). |
visible |
Zeigt oder verbirgt das Element danach, ob der Wert wahr ist. | |
text |
Ersetzt den Textinhalt des Elements durch den formatierten Wert. | Zielt nur auf <text>/<tspan>; für eine begrenzte Anzeige mit den Attributen data-ganter-fit-* kombinieren. |
translate |
Verschiebt das Element in Einheiten der View-Box; die erste Ausgabe ist X, die wahlweise zweite ist Y. | |
scale |
Skaliert das Element; die erste Ausgabe ist X, die zweite ist Y (weggelassen bedeutet gleichmäßig). | Das Ziel muss data-ganter-pivot erklären. |
stroke |
Färbt die Linie nach derselben Schwellenregel wie fill. |
|
spin |
Fortlaufende Drehung über die Zeit; die Eingabe wird auf eine Winkelgeschwindigkeit in Grad je Sekunde abgebildet. Kinder mit data-ganter-spin-ratio drehen im erklärten Verhältnis mit. |
Das Ziel muss data-ganter-pivot erklären. Die Bewegung wird vom Wirt getaktet und ist von den Bewegungseinstellungen des Betriebssystems unabhängig. |
spinEnabled |
Hält den Slot spin am selben Element an oder setzt ihn fort, ohne es zu verbergen. |
Verlangt einen Slot spin auf dasselbe Element. |
fillColor |
Setzt die Füllung unmittelbar aus dem verknüpften Farbwert (einem Farb-Asset, einer Variablen mit Ausgabe Farbe oder einer sicheren CSS-Farbe). | |
strokeColor |
Setzt die Linie unmittelbar aus dem verknüpften Farbwert. | |
strokeWidth |
Setzt die Linienbreite unmittelbar, in SVG-Einheiten von 0.5 bis 32; ein Einheitenzusatz oder CSS wird nicht angenommen. | Eine ungültige, unauflösbare oder qualitativ schlechte Eingabe stellt die hinterlegte stroke-width wieder her; ebenso Zurücksetzen, erneutes Einhängen und Verwerfen. |
Diese Slots gestalten die Grafik; sie gestalten nie die Verbindungsleitungen des Dashboards, deren Farbe und Breite global je Verbindungstyp gelten.
Wem eine Verknüpfung gehört
Das Symbol erklärt Parameter und erlaubte Typwahlen, nicht laufende Quellen und nicht die Wahl einer Instanz. Nach dem Platzieren einer Symbol-Komponente ordnet der Bediener jeden Slot einer Adresse in Logic oder einem festen Wert zu und wählt an dieser Instanz jeden konfigurierbaren Verbindungstyp. Diese Wahlen bleiben in der Station und werden nie mit dem wiederverwendbaren Symbol exportiert. Nicht zugeordnete Slots bleiben neutral: Das Element behält sein hinterlegtes Aussehen.
Globale Positionen und Verbindungstypen
Jeder Anschlusspunkt verweist auf eine Position aus dem festen Katalog der sechzehn Ankerpunkte am
Rand. Ein Paket speichert nur anchorId; es wiederholt oder überschreibt nie Koordinaten. Die
Positionen, als auf die View-Box normierte Anteile:
- oben:
top-left(0, 0),top-25(0.25, 0),top-50(0.5, 0),top-75(0.75, 0),top-right(1, 0); - rechts:
right-25(1, 0.25),right-50(1, 0.5),right-75(1, 0.75); - unten, im Uhrzeigersinn:
bottom-right(1, 1),bottom-75(0.75, 1),bottom-50(0.5, 1),bottom-25(0.25, 1),bottom-left(0, 1); - links, im Uhrzeigersinn weiter:
left-75(0, 0.75),left-50(0, 0.5),left-25(0, 0.25).
Das sind Positionen am Rand, kein Raster von 5×5. Ein Symbol kann keine weitere Position hinzufügen und keine eigenen Ankerkoordinaten speichern.
Die acht globalen Verbindungstypen sind liquid, gas, air-duct, electrical, signal,
network, material und mechanical-shaft. Unter Logic > Assets > Verbindungstypen stellen
Sie die Farbe und die sichtbare Linienbreite ein, die zu jedem Typ gehören. Symbole und
Verbindungen halten die feste Kennung des Typs, eine globale Änderung gestaltet also jede Leitung
neu, die ihn verwendet. Ein Paket kopiert nie Farbe oder Breite und kennt keine kleinen, normalen
oder großen Leitungsvarianten.
Zwei Enden bilden eine bestimmte Verbindung, wenn sie zum selben Typ auflösen. Die Rolle eines Anschlusspunkts hilft beim Schreiben und beim Prüfen, verbietet aber für sich genommen keine Anordnung eines Netzes.
Gemeinsame Typwahlen
Ein Symbol, das mit mehr als einem Medium arbeiten kann, erklärt eine gemeinsame Typkonfiguration, statt seine Grafik zu verdoppeln:
{
"id": "process-type",
"name": "Process type",
"allowedTypes": ["liquid", "gas"],
"defaultType": "liquid"
}
Die id ist ein fester Schlüssel: Kleinbuchstaben und Ziffern mit einzelnen Bindestrichen, am
Anfang und am Ende alphanumerisch (Großbuchstaben werden abgelehnt). allowedTypes ist nicht leer
und enthält eindeutige globale Typkennungen; defaultType muss dazugehören; name ist
erforderlich. Jeder Anschlusspunkt, der auf process-type verweist, folgt der einen Wahl, die an
der platzierten Instanz im Dashboard getroffen wird. Eine Definition darf mehrere unabhängige
Konfigurationen tragen, etwa für Prozess- und Entlüftungsmedium, während andere Anschlusspunkte
fest bleiben.
Vollständige Anschlusspunkte
Jeder verbindbare Anschlusspunkt erklärt eine globale Position, eine Rolle, genau einen festen Typ oder eine gemeinsame Konfiguration, eine nach außen gerichtete Richtung in der ursprünglichen Ausrichtung und einen inneren Ankunftspfad:
{
"anchorId": "left-50",
"role": "input",
"typeConfiguration": "process-type",
"direction": "west",
"internalPath": [
{ "x": 18, "y": 50 },
{ "x": 36, "y": 50 },
{ "x": 48, "y": 62 }
]
}
Die Regeln, alle beim Import erzwungen:
- Höchstens 16 Anschlusspunkte, und jede Ankerkennung höchstens einmal verwendet.
roleistinput,outputoderbidirectional;directionistnorth,east,southoderwest.- Genau eines von
type(ein globaler Verbindungstyp) odertypeConfiguration(die Kennung einer erklärten Konfiguration), nie beides, nie keines. - Der in die natürliche View-Box des SVG umgerechnete globale Anker ist der stillschweigende
Anfang von
internalPath; wiederholen Sie ihn nicht als ersten Punkt. Die Koordinaten sind absolute Werte der View-Box, keine normierten Anteile, und der Pfad hat mindestens einen Punkt. - Jeder Abschnitt bleibt innerhalb der View-Box, hat eine Länge ungleich null und verläuft waagerecht, senkrecht oder genau in 45°; aufeinanderfolgende Abschnitte knicken um höchstens 90°.
- Anschlusspunkte verlangen, dass das SVG überhaupt eine View-Box trägt.
Das Dashboard zeichnet den inneren Pfad unter der Grafik der Ausrüstung, wandelt ihn beim Ändern der Größe, beim Drehen um eine Vierteldrehung und beim Spiegeln mit und behält die sichtbare Breite des globalen Verbindungstyps, statt sie mit dem Symbol zu skalieren, sodass ein durchgehender Strich vom Inneren des einen Körpers ins Innere des anderen läuft.
Ein Anschlusspunkt gilt ganz oder gar nicht. Ein strenges Paket mit einem unvollständigen
Anschlusspunkt ist ungültig; ein nur visuelles Paket verwendet stattdessen eine leere Liste
terminals. Nichts wird je abgeleitet, um eine Lücke zu füllen.
Geordnete Vorschläge
Ein Vorschlag hält eine gewollte Komposition fest, samt der genauen Lage des Ziels:
{
"sourceAnchorId": "right-75",
"targetSymbol": "system:capping-station",
"targetAnchorId": "left-75",
"targetRotationDegrees": 0,
"targetFlipHorizontal": false,
"targetFlipVertical": false,
"connectionType": "material"
}
Prüfung: sourceAnchorId muss einer der eigenen Anschlusspunkte dieses Symbols sein; targetSymbol
muss ein Verweis mit Herkunft sein und darf in einem portablen Paket nur system:<stable-key> sein
(eine GUID eines Benutzers ist nur innerhalb ihrer eigenen Station sinnvoll) und ein Symbol nennen,
das es im Systemkatalog gibt und das einen Anschlusspunkt an targetAnchorId hat; die Drehung ist
0, 90, 180 oder 270, und beide Spiegelungsangaben sind erforderlich; jeder Vorschlag muss
eindeutig sein. connectionType darf nur entfallen, wenn die gleichen festen Typen an beiden Enden
den Fall eindeutig auflösen; es ist erforderlich, sobald eines der Enden konfigurierbar ist, und
muss dann an beiden Enden erlaubt sein.
Vorschläge sind gerichtet, und die Reihenfolge in der Liste setzt die Priorität, aber sie sind nie
eine Erlaubnisliste für gewöhnliche Verbindungen im Dashboard. Bei einer leeren Liste suggestions
meldet der Inspektor, dass es keine vorgeschlagene Komposition gibt, statt einen Partner aus dem
Katalog zu erfinden.
Was der Import ablehnt
Eine kurze Liste der Ablehnungen, damit ein fehlgeschlagener Import gelesen statt geraten werden
kann. Bei einem einfachen SVG gilt nur die erste Gruppe, und darin lehnen nur die Größengrenzen,
fehlerhaftes XML und eine fehlende <svg>-Wurzel den Import ab: Nicht erlaubtes Markup wird
stattdessen mit einer Warnung repariert. Bei einem Paket ist alles Folgende eine harte Ablehnung.
Grafik
- Eine Datei über 1 MB, Markup über 512 KB oder mehr als 4096 Elemente.
- Fehlerhaftes XML oder eine Wurzel, die kein bereinigtes
<svg>ist. - In einem Paket: jedes Markup, das die Positivliste hätte entfernen müssen (Skripte, Ereignisbehandlungen, externe Verweise, nicht erlaubte Elemente oder Attribute).
- Eine
viewBox, die nicht aus vier endlichen Zahlen mit positiver Breite und Höhe besteht oder die von der der SVG-Wurzel abweicht; ein Paket ganz ohne View-Box an der Wurzel.
Umschlag
- Ein anderes Schema, Format oder eine andere Version als der Vertrag v2; unbekannte Felder an
beliebiger Stelle; ein fehlendes
name,fit,footprintoder eine der drei Listen; ein leerer Eintrag innerhalb einer Liste. - Eine
fitaußerhalb der vier Formen; eine Grundfläche außerhalb von 1–24 × 1–12.
Slots
- Ein Name oder eine Element-ID außerhalb der Grammatik der Bezeichner; ein doppelter Slot-Name;
eine Ziel-ID, die das SVG nicht enthält; eine Art, die das Zielelement nicht annehmen kann (Text
an einem Element ohne Text, Füllung an einem
<line>). - Ein Slot
rotate,spinoderscale, dessen Ziel kein endlichesdata-ganter-pivothat; ein SlotspinEnabledohne einen Slotspinam selben Element. - Zwei Slots auf demselben Kanal eines Elements. Jede Art ist ihr eigener Kanal, außer dass
fillundfillColorsich den Kanal der Füllung teilen undstrokeundstrokeColorden der Linie, ein Element kann also so wenig zwei Drehungen annehmen wie zwei Füllungen. - Nicht endliche Bereichszahlen; eine zweite Ausgabe mit nur einem Ende oder an einer anderen Art
als
translate/scale; eine unsichere Farbangabe; ein Slot, der eine Adresse in Logic trägt.
Verbindungen
- Mehr als 16 Anschlusspunkte; eine wiederholte oder unbekannte Ankerkennung; ein Anschlusspunkt
mit beidem oder keinem von
type/typeConfiguration; eine unbekannte Typ- oder Konfigurationskennung; ein ungültiger innerer Pfad (außerhalb der View-Box, Abschnitte der Länge null oder im falschen Winkel, ein Knick über 90°). - Eine Typkonfiguration mit ungültiger Kennung, fehlendem Namen, doppelten oder unbekannten erlaubten Typen oder einem Standard außerhalb der eigenen Liste.
- Ein Vorschlag, dessen Quell-Anschlusspunkt es nicht gibt, dessen Ziel kein Systemsymbol mit dem genannten Anschlusspunkt ist, dessen Lage keine Vierteldrehung ist oder dessen Verbindungstyp nicht an beiden Enden angenommen wird.
symbol_validate am MCP-Endpunkt führt genau diesen Import als Trockenlauf aus und meldet
jeden Fehler, jede Warnung und jeden Hinweis, ohne etwas zu speichern.
Verpacken und weitergeben
Paket exportieren (für Systemsymbole wie für eigene verfügbar) lädt
<name>.ganter-symbol.json mit der bereinigten Grafik und dem vollständigen Vertrag herunter:
$schema, format, version, name, svg, viewBox, fit, footprint, slots[],
typeConfigurations[], terminals[] und suggestions[], die drei Verbindungslisten auch dann
vorhanden, wenn sie leer sind. Was nie mitreist: Adressen der Station, Typwahlen einzelner
Instanzen, die Identität in der Datenbank, die Identität eines Benutzers sowie die Farben und
Breiten der Verbindungstypen dieser Station.
Auf der empfangenden Station geht dieselbe Datei durch Symbol importieren (oder über MCP durch
symbol_import) und landet als neues eigenes Symbol, mit allen Anschlusspunkten. Weil die Identität
eines Typs eine feste Kennung ist und das Aussehen global gilt, folgen die Leitungen eines
importierten Symbols sofort der Gestaltung der Verbindungstypen auf der empfangenden Station.