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。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗English · Русский
A browser-based 3D building editor for OpenStreetMap, following the Simple 3D Buildings tagging scheme. It also works with OpenHistoricalMap and OpenGeofiction.
OpenGeofiction's API may return 403 to Chrome, Safari, or Edge requests from this editor. Its server currently exempts IPs recognized as having edited OGF; if access is refused, try Firefox or contact the OGF administrators. The editor shows the server's response when this happens.
Open the editor: https://felispimeja.github.io/osm-simple3d-editor/
Usage statistics (changesets, users, edited keys; updated daily): https://felispimeja.github.io/osm-simple3d-stats/
height, min_height, building:levels, building:min_level, roof:* and colours, with undo/redo and a before/after diff.type=building relations: create them and manage their members.The osm-open-simple3d.user.js userscript adds Simple3D Editor to the top menu on openstreetmap.org, immediately after About. Install it in Tampermonkey or another userscript manager. It opens a new tab with the current map position and zoom, or links directly to the object on way and relation pages (?edit=w123 / ?edit=r456). Node pages use the current map view. The menu also works when navigating without a full page reload.
The osmcha-open-simple3d.user.js userscript adds Simple3D Editor to the Open with menu on an OSMCha changeset page. Install it in Tampermonkey or another userscript manager and allow requests to api.openstreetmap.org. The script reads the changeset bounds from the OSM API and opens the editor with a #zoom/lat/lon link. If the changeset has no bounds, the item says the location is unavailable. On OpenHistoricalMap's OSMCha it reads the bounds from the OHM API (allow requests to www.openhistoricalmap.org) and opens the editor with OHM as the server (?server=ohm) at the date when most of the changed features exist (by start_date/end_date, buildings first; &date=), so the edits are visible.
Russian and English. The language is chosen in the settings panel; on first launch it follows the browser and system language
(Russian for ru, English otherwise).
UI strings are written in Russian in the code via tr('…') / trn(n, '…') (see src/i18n/index.ts) and serve as
translation keys. Dictionaries are flat JSON files in src/i18n/locales/: ru.json is generated from the code
with npm run i18n:extract, while en.json contains the English text. npm run i18n:check verifies that the English text is
complete, has no extra strings, and that {…} placeholders match. Strings with a number contain plural forms separated by |
(Russian: forms for 1, 2, 5; English: forms for 1 and other).
The Transifex project configured in .tx/config uses English as its source language and Russian, German, and French as target languages. Russian phrases remain the JSON keys; their English values in en.json are the Transifex source text. .tx/config maps the Editor interface resource to these files. Install the Transifex CLI and load TX_TOKEN from the ignored .env.local into your shell (set -a; . ./.env.local; set +a). After changing UI strings, run npm run i18n:extract, add the English text for any new keys to en.json, and check with npm run i18n:check. Then run tx push -s to upload English source text and tx push -t -l ru to upload the generated Russian translations. To review community translations, run tx pull -t -l de,fr, inspect the changed JSON files, and run npm run i18n:check. Never commit the token. To offer German or French in the app, also add the downloaded dictionary to src/i18n/index.ts and update its language list and locale handling.
npm install
npm run dev # local dev server (Vite)
npm run build # type check and production build
This project is developed with AI assistance. Most of the code, documentation and translations were written with Claude (Anthropic) via Claude Code, under the direction of the project maintainer, who designs the features, reviews and tests the changes, and is responsible for every commit. Commits made with AI help carry a Co-authored-by: Claude <[email protected]> trailer.
Edits uploaded to OpenStreetMap and other map projects with this editor are made by human mappers; the editor does not generate map data on its own.
The code is distributed under the ISC license. Map data is licensed by the respective projects (ODbL for OpenStreetMap and OpenHistoricalMap, its own license for OpenGeofiction).