Documentformaat en agent-API
Een Wallgraph-plattegrond is één JSON-bestand waarin geen afgeleide meetkunde is opgeslagen. Hieronder het model, het JSON Schema, en de twee manieren waarop een programma de editor aanstuurt.
Het model
Een plattegrond is een vlak netwerk van muurhartlijnen: knopen, met muren als verbindingen daartussen. Opgeslagen worden die knopen, de muren (hartlijnen met een dikte en eventueel een boog), openingen die op hun muur geparametriseerd zijn, geplaatste symbolen, trappen, vides en constructie-elementen. Niets afgeleids staat in het bestand: muurvlakken, verstekken, ruimtepolygonen, oppervlaktes en maatlijnen worden bij het tekenen opnieuw berekend.
Hierdoor kan een opening uit de bijbehorende muur worden afgeleid en blijft het bestand compact. Een generator hoeft alleen het netwerk te schrijven.
- Alle coördinaten en maten zijn hele millimeters. Geen komma's, geen meters.
- y wijst naar beneden, net als op het canvas.
bulgeis de DXF-conventietan(θ/4):0is recht. Hij is verplicht — weglaten betekent niet “recht”, het betekent dat de boogberekening NaN ziet.- Een opening zit op
tmillimeter vanaf knoopa, gemeten over de hartlijn. - Een trap draagt zijn eigen maten —
width,going,treadsenrise— omdat dezelfde trapsoort per plattegrond anders uitvalt. De treden zelf staan er niet in. Een trap metntreden heeftn+1optreden, dus de optrede en de loopvergelijking volgen uitrise, net als de trede waar het snijvlak valt.
JSON Schema
Het formaat staat als JSON Schema (draft 2020-12) op
/wallgraph.schema.json. Elk veld is beschreven en onbekende
velden worden afgekeurd. Zo leidt een onjuiste sleutel tot een validatiefout in plaats van ontbrekende
inhoud in een geladen plattegrond.
Een compleet voorbeeld
Eén kamer van 4 × 3 meter met een deur, een draairaam en een stopcontact. Dit is een geldig bestand; plak het in de editor via het menu, of laad het via een link.
{
"version": 1,
"unit": "mm",
"gridMm": 100,
"areaMode": "net",
"floors": [
{
"id": "f1",
"name": "Begane grond",
"nodes": [
{
"id": "n1",
"x": 0,
"y": 0
},
{
"id": "n2",
"x": 4000,
"y": 0
},
{
"id": "n3",
"x": 4000,
"y": 3000
},
{
"id": "n4",
"x": 0,
"y": 3000
}
],
"walls": [
{
"id": "w1",
"a": "n1",
"b": "n2",
"thickness": 300,
"bulge": 0,
"openings": []
},
{
"id": "w2",
"a": "n2",
"b": "n3",
"thickness": 300,
"bulge": 0,
"openings": [
{
"id": "o1",
"kind": "window",
"t": 1500,
"width": 1200,
"sashes": [
{
"action": "turn",
"hinge": "a"
}
]
}
]
},
{
"id": "w3",
"a": "n3",
"b": "n4",
"thickness": 300,
"bulge": 0,
"openings": [
{
"id": "o2",
"kind": "door",
"t": 2000,
"width": 900,
"sashes": [
{
"action": "turn",
"hinge": "a"
}
]
}
]
},
{
"id": "w4",
"a": "n4",
"b": "n1",
"thickness": 300,
"bulge": 0,
"openings": []
}
],
"symbols": [
{
"id": "s1",
"type": "socket",
"x": 800,
"y": 150,
"rotation": 3.141592653589793,
"wallId": "w1"
}
]
}
]
}
Voor AI-agents
De editor biedt twee client-side automatiseringskanalen. Geen van beide vereist een account of API-sleutel.
1. Een plattegrond in een link
Het document kan als JSON in een base64url-string achter #plan= worden geplaatst.
De URL-fragmentwaarde wordt niet in een HTTP-verzoek naar de server opgenomen. Iedereen met de link
kan de ingesloten plattegrond openen.
https://plattegrond.crocode.nl/#plan=<base64url van het JSON-document>
# en optioneel de taal erbij:
https://plattegrond.crocode.nl/#plan=<…>&lang=en
Het laden vervangt de huidige plattegrond en wordt als ongedaan te maken documentstap geregistreerd.
2. window.wallgraph
De gehoste pagina biedt een automatiseringsinterface op window. De methoden kunnen via
page.evaluate worden aangeroepen om een plattegrond te laden, tekenen en uitlezen.
// Load a plan into the running editor. Returns false if it is not a plan.
window.wallgraph.load(doc)
// The current plan, as a deep copy.
const doc = window.wallgraph.save()
// A shareable link to this page carrying the current plan.
window.wallgraph.link()
// Read or switch the interface language ("nl" | "en").
window.wallgraph.language("en")
// Which build is running, and where the schema for the document lives.
window.wallgraph.version
window.wallgraph.schema
3. De code zelf
Wallgraph is vrije software (AGPL-3.0) en heeft nul runtime-afhankelijkheden.
npm run build produceert één zelfstandige dist/index.html die zonder netwerk
kan worden geopend. Zie de broncode en llms.txt.
Automatiseringsgrenzen: de canvasinhoud is niet beschikbaar als interactieve
DOM-elementen. Automatisering gebruikt daarom het documentformaat, plan-links of
window.wallgraph. Er is geen server-API; verwerking vindt plaats in de browser.