bulc_open_evac_viewer
Visualize evacuation simulation results in 3D with timeline playback to analyze agent movement and building safety performance.
Instructions
Open the 3D evacuation result viewer window. Displays agents on the building model with timeline playback.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| evacPath | No | Path to .evac file. Default: auto-detect from last simulation | |
| objPath | No | Path to .obj 3D model file. Default: auto-detect | |
| autoPlay | No | Start playback automatically. Default: false | |
| playbackSpeed | No | Playback speed multiplier (0.25 to 8.0). Default: 1.0 | |
| agentScale | No | Agent display scale (0.5 to 5.0). Default: 1.0 |
Implementation Reference
- src/tools/evac.ts:1103-1110 (handler)Handler case for 'bulc_open_evac_viewer': validates input schema and sends 'open_evac_viewer' action command to BULC client.case "bulc_open_evac_viewer": { const validated = OpenEvacViewerSchema.parse(args); result = await client.sendCommand({ action: "open_evac_viewer", params: validated, }); break; }
- src/tools/evac.ts:874-880 (schema)Zod input validation schema for bulc_open_evac_viewer tool.const OpenEvacViewerSchema = z.object({ evacPath: z.string().optional(), objPath: z.string().optional(), autoPlay: z.boolean().optional(), playbackSpeed: z.number().min(0.25).max(8.0).optional(), agentScale: z.number().min(0.5).max(5.0).optional(), });
- src/tools/evac.ts:700-734 (registration)MCP tool registration/definition for bulc_open_evac_viewer including description and input schema.{ name: "bulc_open_evac_viewer", description: "Open the 3D evacuation result viewer window. " + "Displays agents on the building model with timeline playback.", inputSchema: { type: "object" as const, properties: { evacPath: { type: "string", description: "Path to .evac file. Default: auto-detect from last simulation", }, objPath: { type: "string", description: "Path to .obj 3D model file. Default: auto-detect", }, autoPlay: { type: "boolean", description: "Start playback automatically. Default: false", }, playbackSpeed: { type: "number", description: "Playback speed multiplier (0.25 to 8.0). Default: 1.0", }, agentScale: { type: "number", description: "Agent display scale (0.5 to 5.0). Default: 1.0", }, }, }, annotations: { readOnlyHint: false, destructiveHint: false, }, },
- src/index.ts:40-51 (registration)Aggregates evacTools (including bulc_open_evac_viewer) into allTools for MCP ListTools response.const allTools = [ ...contextTools, // 8 tools: spatial context, home info, levels, undo/redo, save ...roomTools, // 5 tools: create, create_polygon, list, modify, delete ...wallTools, // 5 tools: create, create_rectangle, list, modify, delete ...furnitureTools, // 5 tools: catalog, place, list, modify, delete ...fdsDataTools, // 7 tools: get, fire_source, detector, sprinkler, hvac, thermocouple, clear ...meshTools, // 5 tools: list, create, auto, modify, delete ...simulationTools, // 4 tools: get_settings, time, output, ambient ...fdsRunTools, // 6 tools: preview, validate, export, run, status, stop ...resultTools, // 5 tools: open_viewer, list_datasets, point_data, aset, report ...evacTools, // 25 tools: setup, stairs, agents, run, results, advanced features ];
- src/index.ts:135-137 (registration)Routes tool calls matching 'bulc_*evac*' (including bulc_open_evac_viewer) to handleEvacTool.if (name.startsWith("bulc_") && name.includes("evac")) { return await handleEvacTool(name, safeArgs); }