FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

RevitDevTool/docs/architecture/PythonDemo at develop · trgiangv/RevitDevTool · GitHub

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

PythonDemo Architecture

samples/PythonDemo/ demonstrates the Python runtime, PEP 723 dependency resolution, logging, visualization, WebView2 dashboard patterns, and Python MCP toolsets.

Last updated: 2026-09-17


Source Map

Area Path
Entry scripts samples/PythonDemo/commands/
Dashboard backend samples/PythonDemo/revit_dashboard/
Dashboard frontend samples/PythonDemo/revit_dashboard_ui/
Python MCP toolset (Revit) samples/PythonDemo/mcp_toolset/
Python MCP toolset (AutoCAD) samples/PythonDemo/mcp_acad_toolset/
Import/dependency test module samples/PythonDemo/test_module/

Component Map

flowchart TB
    Commands["commands/*_script.py"]
    Runtime["DevTools.Execution Python runtime\nhost-attach uv / owned pixi / pip"]
    Dashboard["revit_dashboard/\ncollector, analytics, export, WebView bridge"]
    UI["revit_dashboard_ui/\nReact + TypeScript + Vite"]
    MCP["mcp_toolset / mcp_acad_toolset\nPython MCP tools"]
    TestModule["test_module/\nimport/dependency samples"]
    Logging["Logging monitor"]
    Viz["Revit visualization"]

    Commands --> Runtime
    Runtime --> Dashboard
    Dashboard --> UI
    Runtime --> MCP
    Runtime --> TestModule
    Commands --> Logging
    Commands --> Viz
Loading

Entry Scripts

commands/ contains the executable script entries discovered by ScriptExecutionProvider.

Script Purpose
dashboard_script.py Launches the WebView2 dashboard sample.
data_analysis_script.py Polars/data-analysis demo.
debugpy_script.py CPython debugpy demo (port 5678).
debug_ipy_script.py IronPython debug demo (Revit, port 4567).
debug_acad_ipy_script.py IronPython debug demo (AutoCAD, port 4567).
export_data_script.py Excel export demo.
fcl_script.py Geometry/collision dependency demo.
logging_batch_script.py Logging stress sample.
logging_format_script.py Logging format/severity sample.
link_element_trace_script.py Pick linked elements; print {instanceId}@{inner} tokens for monitor click-to-select.
modeless_script.py Modeless UI sample.
module_test_script.py Multi-file import/dependency sample.
pipe_bridge_script.py Named-pipe bridge sample.
selectionfilter_script.py Revit API interface sample.
shapely_script.py 2D geometry dependency sample.
sklearn_script.py ML dependency sample.
trimesh_script.py 3D mesh dependency sample.
visualization_curve_script.py Revit curve visualization.
visualization_solid_script.py Revit solid visualization.
visualization_xyz_script.py Revit point visualization.

Dashboard Backend

revit_dashboard/ is the Python backend used by dashboard_script.py.

Folder Role
analytics/engine.py Builds analytics payloads.
contracts/payload.py Payload contracts exchanged with the frontend.
core/event_queue.py Queue/event support.
data/ Category, collector, heavy-family, and warning data helpers.
export/excel_exporter.py Excel export path.
presentation/bridge.py Python to WebView bridge.
presentation/webview_host.py WebView host integration.
revit_api/handler.py Revit API interaction layer.
runner.py Dashboard runner orchestration.

Dashboard Frontend

revit_dashboard_ui/ is a Vite application.

Technology Current role
React 19 UI runtime
TypeScript 5.9 Type checking
Vite 7 Build/dev tooling
Recharts 3 Charts
Semi UI, Radix UI, lucide-react UI controls/icons
Tailwind CSS 4 Styling pipeline

Quality gates:

npm run quality
npm run build

Python MCP Toolset

Two Python MCP samples share the same layout (tools/ → services/ → dto/ + shared/, plus resources/ and prompts/). Entry files must match *mcp.py so McpPathValidator and PEP 723 pre-resolve can find them.

Folder Host Entry
mcp_toolset/ Revit revitdevtool_mcp.py
mcp_acad_toolset/ AutoCAD family acaddevtool_mcp.py

mcp_toolset/ is the larger Revit-oriented catalog (query/CRUD/MEP/docs/export) plus parser samples (tests/parser_annotation_sample.py, tests/parser_lowlevel_sample.py).

mcp_acad_toolset/ is a small AutoCAD catalog: status, layers, find/selection, draw line/circle, highlight, erase. Resources use acad://… URIs. Register it in AutoCAD's AcadMcpRegistryConfig.json (pythonToolsetPaths), not Revit's McpRegistryConfig.json — AutoCAD API imports fail in Revit.

Key folders (both toolsets):

  • tools/ - MCP tool functions grouped by domain (acad_* / revit_* names).
  • services/ - host API logic behind tools.
  • dto/ - DTO contracts.
  • shared/ - responses, annotations, transactions / document lock helpers.
  • resources/ / prompts/ - static + live resources and workflow prompts.

Test Module

test_module/ demonstrates multi-file Python imports and plugin-style dependency structure. It is a sample for script dependency behavior, not a deep test suite.


Related Docs

  • docs/architecture/Execution/README.md
  • docs/architecture/MCP/README.md
  • docs/architecture/Logging/README.md
  • docs/architecture/Visualization/README.md

Back | FazBrowse Home | New Git URL