Skip to content

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

  1. High-fidelity 42U cabinet simulation
  2. Built on a precise 1U = 50px grid coordinate system, rendering a virtual cabinet with rulers and physical rails.
  3. Supports drag interaction and Magnetic Snapping, with built-in real-time collision detection and physical rebound animation when a placement is invalid.
  4. Strict MVC data and graphics architecture
  5. Uses a highly decoupled hierarchical tree structure: "cabinet -> device -> slot -> module".
  6. Supports runtime slot count changes and adaptive layout recalculation.
  7. Undo/redo command system based on QUndoStack
  8. Implements the Command Pattern. Add, delete, drag-move, property changes, and slot adjustment actions are all captured by command objects, enabling seamless Undo / Redo.
  9. One-click "four-in-one" automated Excel report
  10. Deeply integrates the open source QXlsx library 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.
  11. Project lifecycle and packaging protection
  12. Supports save validation, unsaved-exit prompts, and shortcut keys such as Ctrl+S / Ctrl+Shift+S.
  13. Exports .ctproj compressed project packages with built-in ZIP serialization for collaboration and project archiving.
  14. Polished industrial theme and multilingual support
  15. Uses a custom Catppuccin Mocha modern dark industrial QSS stylesheet to reduce eye strain during long configuration sessions.
  16. 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