v3.2.0
v3.2.0 (2026-08-29)
Space Engineers Block Exchanger (Tactical Command) for Windows. Convert and analyse .sbc blueprints. In the GUI, Convert writes a new copy; the original ship is not overwritten.
A Meraby Labs product. Free for personal, non-commercial use. Commercial use requires a license. See LICENSE. Not affiliated with or endorsed by Keen Software House.
Desktop converter
- Converter window is a product flow: pick a ship, see a live before/after, then convert a copy. Sentence-case labels, readable 15–17pt type, grouped category names, and a Convert button that states how many blocks will change.
- Selecting a blueprint opens the live preview automatically.
- Armor before/after counts only use armor conversions. Enabling thrusters, DLC substitution, or other categories no longer inflates or goes negative on the armor totals.
- Convert stays disabled and the “Will convert” chip clears as soon as you change categories or direction, then comes back from a fresh dry-run so you cannot convert against stale scanner counts.
- Clearing the selection no longer leaves Convert stuck on “Updating conversion counts…”.
- Empty toast overlay no longer paints a solid box over Profiles, Changelog, Rescan, and the control panel. The overlay shows only while a toast is visible.
- Stays on CustomTkinter 5.x.
Subgrids map
- Subgrids tab lists CubeGrid hierarchy as a clickable tree and draws a 2D voxel map from
Mincoordinates, includingTopGridIdparent/child links. - Clicking a rotor, turret, or other subgrid isolates that grid; redraw and Fit use that grid’s bounds so it is not left off-center and tiny.
- The map refreshes after the tab is shown, including single-grid ships (no empty black panel). Reopening the tab does not rebuild the map if the ship has not changed.
- The main hull is chosen by block count, not XML order.
- Hierarchy painting no longer collides with CustomTkinter’s internal redraw (the Subgrids tab crashed on startup when that happened).
Window, tabs, and Windows desktop
- XML, analytics, SE2, and map painting wait until those tabs are shown so switching ships stays responsive.
- Preview work runs on a worker thread; results are applied on the UI thread through a queue (no Tk calls from background threads).
- Each inspect parses the blueprint XML once and reuses it for dry-run conversion, analytics, and the subgrid map.
- Failed XML loads set the XML tab status to the error instead of a normal “Source:” label.
- File → Exit. The Windows title-bar close button quits (drag-and-drop no longer swallows
WM_CLOSE). The process exits after destroy sopython.exedoes not hang around. - File → Create desktop shortcut (shortcut targets
launch.bat). Launchers:launch.bat/main.pyandlaunch_gui.bat/gui_standalone.py. - Native Windows drag-and-drop: Explorer still gets a successful ack if a drop callback fails; the traceback is printed to stderr.
Import and tools
- File → Import Workshop / Mod.io blueprint — paste a Steam Workshop URL or ID, or a Mod.io URL, and copy the ship into
%APPDATA%\SpaceEngineers\Blueprints\local. - Workshop folders that only have a fallback
*.sbc(nobp.sbc) still import: the chosen file is copied tobp.sbcso the GUI scanner lists the ship. If several.sbcfiles exist, the first name in sorted order is used. - Import refuses symlink/junction item roots, nested reparse points, and zip members with
C:/, UNC, or absolute paths. An existing local folder is replaced only when it is a real directory inside the local blueprints root (rmtreewill not follow a junction out of that folder). - Tools → Selective block exchange — pick individual subtype swaps instead of a whole category.
- Tools → PB Doctor — inspect and fix programmable-block C# against the Space Engineers whitelist. Allowed
usingdirectives (System, VRage, and similar) are kept. Forbidden namespaces are stripped, includingusing static, aliases (using IO = System.IO), andglobal::. Brace/#regionbalance and forbidden-token scans ignore comments and string literals. - Tools → Split into projector subgrids — writes projector-friendly copies of connected subgrids. Generated SBC uses a real
xsi:typeXML namespace. A successful single-grid skip is not reported as an error. - Tools → Survival Sanity — Prototech → vanilla copy for survival crafting.
- Tools → Upgrade to Prototech — vanilla → Prototech copy.
- Tools → Harden armor around cores and Lightweight outer hull.
- Tools → Export Space Engineers 2 JSON.
- Armor skin / HSV palette engine: primary hex paints armor (or every matching block if secondary is omitted); secondary hex paints non-armor accents, or heavy armor when both colors are set with armor-only.
Mappings and CLI
- Built-in categories: armor (70 light ↔ heavy pairs), thrusters, weapons, functional, DLC substitution (96 premium DLC → base-game pairs).
- Opt-in Prototech (23 vanilla ↔ Factorum Prototech pairs). Off by default; not included in
--all-categories(it overlaps thrusters/functional/weapons). --all-categoriesenables built-in mappings only. Bundled WeaponCore and Assertive Armaments profiles stay opt-in so they cannot crash the CLI with duplicate sources.- CLI accepts any
.sbcpath (not only a folder named withbp.sbc). Nested search prefersbp.sbc, then a sorted*.sbc. - Binary cache cleanup looks for
bp.sbcB5. - Scanner tracks reverse-mode convertible blocks so Convert matches
--reverse. - Grid rescale (large ↔ small) multiplies/divides
Mincoordinates by the 5:1 ratio. Small → large truncates toward zero so negative coordinates are not shifted by floor division. - Profile export can write to an existing extensionless file path instead of treating it as a directory.
- Bundled profiles: WeaponCore, Assertive Armaments, Build Vision.
Reliability
- Production blueprint writes go through
safe_xml.safe_write(unique temp names, replace). An interrupted conversion cannot leave a truncatedbp.sbc. - XML parse path uses
defusedxml(XXE / entity expansion). - Pillow >= 12.3.0 for the header logo. Tagged Windows builds embed
logo.png,app_icon.ico,README.md,LICENSE,RELEASE_NOTES.md,profiles/, anddata/. - Official README is the 3.2.0 user guide. The public GitHub tree is the runtime app (test suite and internal planning notes are not published). GitHub Releases use this version’s notes as the release body and publish
SHA256SUMS.txt.