Skip to main content
Glama

create_line_based_element

Create walls, beams, or pipes in Revit by specifying start and end points, dimensions, and level information in millimeters. Supports batch creation of multiple elements.

Instructions

Create one or more line-based elements in Revit such as walls, beams, or pipes. Supports batch creation with detailed parameters including family type ID, start and end points, thickness, height, and level information. All units are in millimeters (mm).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesArray of line-based elements to create

Implementation Reference

  • Handler function that executes the tool logic by sending the input parameters to the Revit client using withRevitConnection and returns the response or error.
    async (args, extra) => { const params = args; try { const response = await withRevitConnection(async (revitClient) => { return await revitClient.sendCommand( "create_line_based_element", params ); }); return { content: [ { type: "text", text: JSON.stringify(response, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Create line-based element failed: ${ error instanceof Error ? error.message : String(error) }`, }, ], }; } }
  • Zod schema defining the input parameters for creating line-based elements, including name, typeId, locationLine with start/end points, thickness, height, baseLevel, and baseOffset.
    { data: z .array( z.object({ name: z .string() .describe("Description of the element (e.g., wall, beam)"), typeId: z .number() .optional() .describe("The ID of the family type to create."), locationLine: z .object({ p0: z.object({ x: z.number().describe("X coordinate of start point"), y: z.number().describe("Y coordinate of start point"), z: z.number().describe("Z coordinate of start point"), }), p1: z.object({ x: z.number().describe("X coordinate of end point"), y: z.number().describe("Y coordinate of end point"), z: z.number().describe("Z coordinate of end point"), }), }) .describe("The line defining the element's location"), thickness: z .number() .describe( "Thickness/width of the element (e.g., wall thickness)" ), height: z .number() .describe("Height of the element (e.g., wall height)"), baseLevel: z.number().describe("Base level height"), baseOffset: z.number().describe("Offset from the base level"), }) ) .describe("Array of line-based elements to create"), },
  • Registration of the create_line_based_element tool on the McpServer, including name, description, schema, and handler.
    export function registerCreateLineBasedElementTool(server: McpServer) { server.tool( "create_line_based_element", "Create one or more line-based elements in Revit such as walls, beams, or pipes. Supports batch creation with detailed parameters including family type ID, start and end points, thickness, height, and level information. All units are in millimeters (mm).", { data: z .array( z.object({ name: z .string() .describe("Description of the element (e.g., wall, beam)"), typeId: z .number() .optional() .describe("The ID of the family type to create."), locationLine: z .object({ p0: z.object({ x: z.number().describe("X coordinate of start point"), y: z.number().describe("Y coordinate of start point"), z: z.number().describe("Z coordinate of start point"), }), p1: z.object({ x: z.number().describe("X coordinate of end point"), y: z.number().describe("Y coordinate of end point"), z: z.number().describe("Z coordinate of end point"), }), }) .describe("The line defining the element's location"), thickness: z .number() .describe( "Thickness/width of the element (e.g., wall thickness)" ), height: z .number() .describe("Height of the element (e.g., wall height)"), baseLevel: z.number().describe("Base level height"), baseOffset: z.number().describe("Offset from the base level"), }) ) .describe("Array of line-based elements to create"), }, async (args, extra) => { const params = args; try { const response = await withRevitConnection(async (revitClient) => { return await revitClient.sendCommand( "create_line_based_element", params ); }); return { content: [ { type: "text", text: JSON.stringify(response, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Create line-based element failed: ${ error instanceof Error ? error.message : String(error) }`, }, ], }; } } ); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ideook/revit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server