Modify elements
modify_elementsUpdate existing Archicad elements by GUID—preview current and new field values, skipped elements, and warnings before committing with dry_run=false.
Instructions
Change existing elements. DRY-RUN BY DEFAULT: returns per element the current and new value of every field, plus skipped elements with the reason and warnings; pass dry_run=false to commit. Each change is {"guid", ...fields}. Any element: story (index, ground floor 0, or a story name; the element keeps its height above the story and moves with it unless keep_elevation=true), layer (name), draw_order (1 to 14, 0 = the type's default), id (the Element ID; Tapir 1.7.3 and newer, otherwise set_element_data General_ElementID). Walls, beams, slabs, columns, windows, doors, morphs, multi-plane roofs, meshes, objects, lamps, texts and labels also take the fields of Tapir's Modify command by its own names (describe_api_command ModifyWalls lists them), e.g. height, thickness, sillHeight, lightIsOn. On a Tapir newer than 1.8.0 so do stairs (ModifyStairs), railings (ModifyRailings), sections and elevations (ModifySections) and detail and worksheet markers (ModifyDetailMarkers); on those last two the reference ID shown in the marker is reference_id, as id stays the Element ID. Attribute fields (buildingMaterialId, compositeId, profileId, surfaceId, lineTypeId, sectionFillId, ...) take a name. Lengths in metres, angles in radians, text sizes in mm. Partial coordinates, dimensions and visibility are completed from the current values. Elements Archicad would refuse (another view's, hidden or locked layer, not reserved in Teamwork, inside a hotlinked module, locked) are skipped with the reason, never unlocked. A placed object, lamp, door or window of a part learned with learn_library_part may take placement, as create_elements does (its items=[] shows the placement_schema), in place of the fields it works out: an object or lamp keeps its story and elevation (center takes x and y only), a door or window its wall and centerOffset; leaves are written after the commit, and 'placed_not_set' names an element whose leaves were not set. A placement that cannot be worked out makes the whole call an error naming the change. After a placement, look (capture_window) and correct with this tool before reporting done; create_elements has the rules for reading a sketch. A commit reads the elements back: 'modified' counts what landed, 'failed' groups Archicad's refusals, 'not_applied' lists fields Archicad answered success for but did not change.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"changes": "<changes>"
},
"name": "modify_elements"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | ||
| changes | Yes | ||
| dry_run | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||