ConfigTools Industrial Automation Configurator Overview¶
đ GitLab repository: Utilities/ConfigTools
ConfigTools is a high-performance industrial graphical configuration application written in Qt/C++ (C++17). It is designed for the physical and logical deployment of modular automation systems, such as Siemens TIA Portal scenarios. The project includes a high-fidelity 42U cabinet simulation, intelligent hardware assembly collision detection, an undo/redo command stack, and a one-click engineering report generation engine.
đ Core Features¶
- High-fidelity 42U cabinet simulation
- Built on a precise 1U = 50px grid coordinate system, rendering a virtual cabinet with rulers and physical rails.
- Supports drag interaction and Magnetic Snapping, with built-in real-time collision detection and physical rebound animation when a placement is invalid.
- Strict MVC data and graphics architecture
- Uses a highly decoupled hierarchical tree structure: "cabinet -> device -> slot -> module".
- Supports runtime slot count changes and adaptive layout recalculation.
- Undo/redo command system based on QUndoStack
- Implements the Command Pattern. Add, delete, drag-move, property changes, and slot adjustment actions are all captured by command objects, enabling seamless
Undo/Redo. - One-click "four-in-one" automated Excel report
- Deeply integrates the open source
QXlsxlibrary and converts configuration results into expressive professional Excel reports with four worksheets:- Topology: intuitive graphical cabinet topology with intelligent cell merging.
- BOM: lists each device type, physical slot position, quantity, and calculated unit price.
- I/O Mapping: automatically derives and assigns logical I/O addresses for each signal channel.
- Cost Analysis: calculates purchase costs for a single cabinet and the overall system, with support for multiple tax rates.
- Project lifecycle and packaging protection
- Supports save validation, unsaved-exit prompts, and shortcut keys such as
Ctrl+S/Ctrl+Shift+S. - Exports
.ctprojcompressed project packages with built-in ZIP serialization for collaboration and project archiving. - Polished industrial theme and multilingual support
- Uses a custom Catppuccin Mocha modern dark industrial QSS stylesheet to reduce eye strain during long configuration sessions.
- Natively supports seamless runtime switching between Chinese and English.
đ Project Structure¶
ConfigTools/ (project root)
âââ config/ # Default hardware library and system templates
âââ docs/ # 11-phase development roadmap and detailed design docs
âââ i18n/ # Translation source files (.ts / .qm)
âââ src/ # Core business logic and UI code
â âââ commands/ # Interaction command classes based on QUndoCommand
â âââ core/ # Tree data model, configuration management, and ZIP serialization
â âââ export/ # QXlsx report export and .ctproj read/write logic
â âââ graphics/ # Cabinet, module, and wiring scene renderers (QGraphicsScene)
â âââ widgets/ # Property editor, device tree, and main window components
âââ templates/ # Preset Excel templates for report export
âââ tests/ # Unit test suite based on QtTest
âââ third_party/ # Bundled dependencies, including QXlsx and miniz
REF¶
[1]. about/index.md
[2]. README.md