bulc_set_fds_hvac
Configure furniture as HVAC vents in BULC Building Designer by assigning supply or exhaust properties to specific faces for airflow simulation.
Instructions
Configure a furniture item as an FDS HVAC (supply or exhaust vent). Assigns surface properties to specific faces of the obstruction. Supply vents blow air in, exhaust vents extract air out.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| furnitureId | Yes | Furniture ID to configure as HVAC | |
| surfaces | No | Surface assignment for each face. Keys: minX, maxX, minY, maxY, minZ, maxZ. Values: 'INERT', 'supply', or 'exhaust'. Example: {maxZ: 'supply'} | |
| flowType | No | Flow specification type: 'volume' (m³/s) or 'velocity' (m/s). Default: velocity | |
| flowValue | No | Flow value (volume in m³/s or velocity in m/s). Default: 4.0 | |
| temperature | No | Supply air temperature in Celsius (supply only). Default: 20 | |
| surfaceId | No | Custom surface ID. Default: auto-generated |
Implementation Reference
- src/tools/fds-data.ts:393-399 (handler)Handler logic for the 'bulc_set_fds_hvac' tool: validates input parameters using SetHvacSchema and sends a 'set_fds_hvac' command to the BULC client.case "bulc_set_fds_hvac": { const validated = SetHvacSchema.parse(args); result = await client.sendCommand({ action: "set_fds_hvac", params: validated, }); break;
- src/tools/fds-data.ts:319-333 (schema)Zod validation schema (SetHvacSchema) for the input parameters of the 'bulc_set_fds_hvac' tool.const SetHvacSchema = z.object({ furnitureId: z.string(), surfaces: z.object({ minX: z.enum(["INERT", "supply", "exhaust"]).optional(), maxX: z.enum(["INERT", "supply", "exhaust"]).optional(), minY: z.enum(["INERT", "supply", "exhaust"]).optional(), maxY: z.enum(["INERT", "supply", "exhaust"]).optional(), minZ: z.enum(["INERT", "supply", "exhaust"]).optional(), maxZ: z.enum(["INERT", "supply", "exhaust"]).optional(), }).optional(), flowType: z.enum(["volume", "velocity"]).optional(), flowValue: z.number().optional(), temperature: z.number().optional(), surfaceId: z.string().optional(), });
- src/tools/fds-data.ts:178-228 (registration)MCP tool registration for 'bulc_set_fds_hvac', including name, description, inputSchema, and annotations.{ name: "bulc_set_fds_hvac", description: "Configure a furniture item as an FDS HVAC (supply or exhaust vent). " + "Assigns surface properties to specific faces of the obstruction. " + "Supply vents blow air in, exhaust vents extract air out.", inputSchema: { type: "object" as const, properties: { furnitureId: { type: "string", description: "Furniture ID to configure as HVAC", }, surfaces: { type: "object", description: "Surface assignment for each face. Keys: minX, maxX, minY, maxY, minZ, maxZ. " + "Values: 'INERT', 'supply', or 'exhaust'. Example: {maxZ: 'supply'}", properties: { minX: { type: "string", enum: ["INERT", "supply", "exhaust"] }, maxX: { type: "string", enum: ["INERT", "supply", "exhaust"] }, minY: { type: "string", enum: ["INERT", "supply", "exhaust"] }, maxY: { type: "string", enum: ["INERT", "supply", "exhaust"] }, minZ: { type: "string", enum: ["INERT", "supply", "exhaust"] }, maxZ: { type: "string", enum: ["INERT", "supply", "exhaust"] }, }, }, flowType: { type: "string", description: "Flow specification type: 'volume' (m³/s) or 'velocity' (m/s). Default: velocity", enum: ["volume", "velocity"], }, flowValue: { type: "number", description: "Flow value (volume in m³/s or velocity in m/s). Default: 4.0", }, temperature: { type: "number", description: "Supply air temperature in Celsius (supply only). Default: 20", }, surfaceId: { type: "string", description: "Custom surface ID. Default: auto-generated", }, }, required: ["furnitureId"], }, annotations: { readOnlyHint: false, destructiveHint: true, }, },
- src/index.ts:84-93 (registration)Routing registration in the main MCP server handler that dispatches calls to 'bulc_set_fds_hvac' (and other FDS data tools) to the specific handleFdsDataTool function.if ( name === "bulc_get_fds_data" || name === "bulc_set_fds_fire_source" || name === "bulc_set_fds_detector" || name === "bulc_set_fds_sprinkler" || name === "bulc_set_fds_hvac" || name === "bulc_set_fds_thermocouple" || name === "bulc_clear_fds_data" ) { return await handleFdsDataTool(name, safeArgs);