Materializr
Open-source parametric 3D CAD for makers — constraint sketches, solid modeling, threads, SVG & text engraving, STL/STEP export. Android, iPad, Linux, Mac, Windows. Vibe coded.
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Keyboard-driven diagrams, directly in your terminal.
Build with a few keystrokes. Save as .dre . Export crisp SVG.
Visitors get their own canvas, remembered between sessions.
dre is a keyboard-driven diagram editor that runs in your terminal. Build
a tree of boxes, style it as you work, and keep it in a compact .dre file—or
export it to a crisp SVG when it is ready to share.
• macOS (Apple Silicon or Intel) or Linux (x86_64 or arm64)
• a terminal with Kitty graphics support — WezTerm works, Terminal.app doesn't查看完整 README ↗ssh dre.elaich.com
Visitors get their own canvas, remembered between sessions.
dre is a keyboard-driven diagram editor that runs in your terminal. Build
a tree of boxes, style it as you work, and keep it in a compact .dre file—or
export it to a crisp SVG when it is ready to share.
curl -fsSL https://dre.elaich.com/install.sh | bash
Run dre to open an empty canvas. dre plans.dre opens plans.dre, or
starts a new diagram under that name if the file doesn't exist.
dre has three modes: command mode (the default), insert mode, and a save
prompt. In command mode, every key runs a command (see the table below);
i edits the selected box's label and I renames it, which enters insert
mode.
To quit, press q. With a filename, q saves to that file and quits. Without
a filename, q asks for one, and Enter saves and quits, Esc quits
without saving. Ctrl-C quits without saving.
| Mode | Key | Description |
|---|---|---|
| Command | u | Undo the last change |
| Command | b | Add a child box |
| Command | s | Add a sibling box |
| Command | d | Delete the selected box and its descendants |
| Command | p | Paste the cut box and its descendants as the last child of the selected box |
| Command | h | Select the parent box |
| Command | l | Select the first child box |
| Command | j | Select the next sibling |
| Command | k | Select the previous sibling |
| Command | i | Edit the selected box's label |
| Command | I | Rename the selected box's label |
| Command | c | Cycle the box's colour |
| Command | C | Cycle the colour of every sibling |
| Command | F | Toggle the fill of every sibling |
| Command | f | Toggle the box's fill |
| Command | r | Toggle rounded corners |
| Command | R | Toggle rounded corners of every sibling |
| Command | q | Save and quit (or choose where to save) |
| Command | n | Name the diagram |
| Command | 0–9 | Build a count prefix |
| Command | Ctrl-C | Quit without saving |
| Insert | Enter | Finish the box and add a child box |
| Insert | Esc | Switch to command mode |
| Insert | Backspace | Remove the last character |
| Insert | ← | Move the cursor left |
| Insert | → | Move the cursor right |
| Insert | Printable | Append a printable character |
| Name prompt | Enter | Save the name |
| Name prompt | Esc | Cancel naming |
| Name prompt | Backspace | Remove a character from the name |
| Name prompt | Printable | Append a character to the name |
Any printable character appends to the label.
Save prompt: Enter saves and quits, Esc quits without saving, Backspace
removes a character from the name.
Ctrl-C quits without saving.
A diagram is saved as a .dre file, plain XML that nests boxes the way the
diagram does. docs/example.dre shows off rounded corners, border colours,
translucent fills, and arrows:
<dre>
<box label="API gateway" colour="2" fill="1" rounded="true">
<box label="Auth" colour="1" fill="1"/>
<box label="Orders" colour="1" fill="1">
<box label="Postgres" colour="4" fill="1">
<box label="Replica" colour="4" fill="1"/>
<box label="Archive" colour="4" fill="1"/>
</box>
</box>
<box label="Payments" colour="1" fill="1"/>
</box>
</dre>
Each colour names a layer — pink the edge, orange the services, blue the data — and the rounded corners mark the single entry point.
dre --svg docs/example.dre writes docs/example.svg next to it and exits — a
crisp, vector copy with no cursor or selection:
An arrow means the box on its left feeds the box on its right. The figure is
itself a dre diagram — docs/architecture.dre:
<dre>
<box label="editor" colour="0" rounded="true">
<box label="store" colour="7"/>
<box label="state" colour="1">
<box label="layout" colour="1">
<box label="render" colour="1">
<box label="tui" colour="2"/>
<box label="svg" colour="2"/>
</box>
</box>
</box>
</box>
<box label="serve" colour="0" rounded="true"/>
<box label="web" colour="0" rounded="true"/>
</dre>
Three entry points share one core: editor is the terminal app, serve hosts
it over SSH and web runs it in the browser as wasm. A tree of boxes only has
arrows from parent to child, so the figure draws the core under editor;
serve and web sit beside it and drive the same core. store reads and
writes the .dre files for editor. In the core, state holds the tree of
boxes, layout turns it into placements and render hands those placements to
two renderers: tui (src/render/terminal.rs) paints sprites in the terminal
and svg (src/render/svg.rs) writes <rect>s and <text>s. Colour marks
the layers: lime for entry points, mint for the core, violet for the renderers.
store is grey.
See CONTRIBUTING.md to contribute.