Gå til indhold

AI-tegning

Denne side er en reference for, hvordan en AI-klient (ChatGPT, Claude, Gemini, Cursor, …) tegner professionelle diagrammer i LetDraw over API og MCP. Modellen behøver ikke at gætte letdraws skema: alt nedenfor præsenteres også for modellen på kaldstidspunktet, så en tilsluttet model kan læse det og tegne korrekt ved første forsøg.

Du gentræner ikke modellen; du giver den kontekst på kaldstidspunktet. LetDraw eksponerer al sin tegneviden gennem MCP-serveren og REST API:

HvadMCPREST
Hvordan man tegner (denne guide, maskinlæsbar)resource letdraw://capabilitiesGET /capabilities
Hvert ikonbibliotek + alle elementetiketterresource letdraw://librariesGET /libraries?items=1
Biblioteks-id’er + antaltool list_shape_librariesGET /libraries
Find et ikon til en komponenttool search_iconsGET /icons?query=…
Opret / opdater et diagramtools create_diagram / update_diagramPOST / PATCH /documents

En velfungerende klient læser resurserne letdraw://capabilities og letdraw://libraries én gang og tegner derefter. Peg din AI mod MCP- endpointet (se API og MCP); den opdager resten på egen hånd.

  1. Brug rigtige ikoner, tegn dem ikke. Kald search_icons (f.eks. "postgres", "redis", "kubernetes pod", "load balancer") og læg den returnerede ref- værdi ind i kassens iconRef-felt (f.eks. "databases/PostgreSQL"). Serveren stempler præcis det ikon og lader etiketten flyde nedenunder det.
  2. Hold containere rene. Store grupperingskasser (en Kubernetes Cluster, en VPC, et subnet-bånd) bør være brede (> 420px) eller en frame. Ikoner stemples kun på node-store kasser (60-420px brede, 40-260px høje). Placér en containers titel som standalone tekst over den, ikke som en bunden etiket.
  3. Indlejr bevidst. Ydre farvet container til node-store kasser indeni, hver med sit eget ikon. To eller tre niveauer læses bedst (Cluster til Worker Node til Pod).
  4. Rut pile rent. Til retvinklede / flerbøjede forbindelser skal du sende en pil med 3+ points; bind enderne til figurer, så de forbliver knyttet.
  5. Farvekod efter rolle og hold afstanden konsistent.

create_diagram / update_diagram accepterer elements som enten letdraw-native elementer eller standard Excalidraw JSON (auto-detekteret og konverteret på serveren). At producere Excalidraw JSON er den nemmeste vej til høj kvalitet; native LetDraw giver dig de letdraw-specifikke funktioner nedenfor.

id, type, x, y, width, height plus stil: strokeColor (hex), fillColor (hex eller "transparent"), fillStyle (hachure | cross-hatch | solid | dots | zigzag | dashed | zigzag-line), strokeWidth (1-8), strokeStyle (solid | dashed | dotted), roughness (clean | sketch | scribble), bowing (straight | curved | wavy), corner (sharp | rounded | beveled), opacity (0-100), seed. Valgfri: text, fontSize, fontFamily (hand | normal | code), textAlign, groupIds, angle (radianer), link, shadow (none | soft | hard) og letdraw-udvidelsen iconRef.

rectangle, ellipse, diamond, triangle, right-triangle, parallelogram, trapezoid, star, hexagon, heptagon, octagon, cross, cloud, cylinder, speech-bubble, document, manual-input, display, terminator, data-storage, preparation, blok- pile (arrow-right/left/up/down), plus text, image (dataURL), frame (mærket stiplet sektion; sæt name), embed (url), math (LaTeX i text), code (kildekode i text, language). En figur bærer sin etiket med text indeni (i Excalidraw-format via et tekstelement med containerId).

type: "arrow" og:

  • arrowShape: straight | curved | elbow | s-curve | smart | multipoint | multipoint-curved. smart ruter automatisk uden om andre figurer. multipoint er en skarp polylinje med flere segmenter; multipoint-curved er dens udglattede version; begge læser deres hjørner fra points.
  • points: {x, y}[] i absolutte verdenskoordinater (første til sidste). 2 punkter = lige, 3 = elbow (enkelt bøjning), 4+ = rutet polylinje. Retvinklet forbindelse: points: [{x1,y1},{x2,y1},{x2,y2}].
  • controlPoint / controlPoint2: bezier-håndtag til curved / s-curve / elbow.
  • startArrowhead / endArrowhead: none | arrow | triangle | triangle-outline | circle | diamond | diamond-outline | bar | crows-foot | crows-foot-bar | double-bar | circle-bar | circle-crows-foot. Brug UML-hoveder (triangle-outline = generalisering, diamond = komposition) og ER crow’s-foot- hoveder til kardinalitet.
  • startBinding / endBinding: {elementId, focus:{x,y}}: bind en ende til en figur (focus er et 0..1-punkt i figurens bbox), så pilen følger den.

I Excalidraw-format skal du sende pilen med points + startArrowhead/endArrowhead; konverteren mapper 2 / 3 / 4+ punkter til straight / elbow / s-curve og genberegner bindingerne.

type: "line" og lineShape: straight | multipoint | multipoint-curved. Multipoint-linjer bærer points (samme som pile, uden et pilehoved). Også freedraw (points[]) og highlight (halvgennemsigtig markør).

  1. search_icons({ query }) producerer en rangeret [{ library, label, ref }].
  2. Sæt iconRef: "<library>/<Item Label>" (eller { library, label }) på den ønskede kasse.
  3. create_diagram stempler det ikon øverst i midten og flytter etiketten nedenunder det.

En eksplicit iconRef vinder altid; derefter får enhver resterende mærket node uden et ikon automatisk et bedste-gæt-nøgleordsikon. I en cloud-scene skal du angive udbyderen (kubernetes / aws / azure / gcp), så udbyderens ikonsæt foretrækkes. Gennemse id’er med list_shape_libraries; det fulde etiketkatalog er i letdraw://libraries (eller GET /libraries?items=1).

Databaseprodukter opløses til Databases-biblioteket: rigtige logoer hvor brand- politik tillader det (PostgreSQL, MariaDB, Cassandra, DynamoDB, …), ellers DB-passende generiske ikoner (MySQL, Redis, MongoDB, …).

[
{ "id": "db", "type": "rectangle", "x": 0, "y": 0, "width": 200, "height": 90,
"backgroundColor": "#eef2ff", "strokeColor": "#334155", "roundness": { "type": 3 },
"iconRef": "databases/PostgreSQL", "boundElements": [{ "type": "text", "id": "dbt" }] },
{ "id": "dbt", "type": "text", "x": 10, "y": 30, "text": "Orders DB", "containerId": "db" },
{ "id": "a1", "type": "arrow", "x": 200, "y": 45, "points": [[0, 0], [80, 0], [80, 120]],
"endArrowhead": "triangle", "startBinding": { "elementId": "db" } }
]
  • diagram_from_code: send docker-compose / Kubernetes-manifest / Graphviz DOT / PlantUML / Terraform / Helm values / SQL DDL; LetDraw auto-detekterer formatet og lægger det ud.
  • export_to_code: et diagram til Mermaid eller D2.
  • generate_from_prompt: naturligt sprog til diagram ved hjælp af din kontos egen AI-nøgle.

For autentificering, endpoints, scopes og klientopsætning, se API og MCP.