Move elements
move_elementsMoves elements: by a vector, by direction and distance, to a point, or until they touch a target set (until). New revision, effect report (n_changed, rejected, cloned, carried). A call that succeeds is not a job that's done. Target: guid, guids or a set from find_elements/get_selection, never a filter. Beyond the named: PLAN_REQUIRED, run its plan_id with expect_beyond. reference center/min/max reads the body hull: an element with body_gap is refused there (partial_body: origin works). An IfcOpeningElement without fill named by guid moves by a vector (by, or direction with distance) inside its host; refused where it would leave it, stop cutting through or cut another opening. A filled one moves with its fill. An IfcStructuralPointConnection, one per call, moves by a vector in the analysis model only: its members, faces and eccentricities follow (carried, structural_moved), elements stay. What is placed relative to them (fills, parts) goes along and stands in carried. Directions east/north take the project axis; with a rotated TrueNorth the call is refused with both readings. Example: {"guid":"2O2Fr$t4X7Zf8NOew3FLOH","direction":"east","distance":"50 cm"}
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "move_elements"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Translation [x,y,z] in m | |
| to | No | Move the reference point here; a point of another element: get_element include snap_points | |
| set | No | A set id from find_elements or get_selection: writes exactly the elements seen there, nothing that matches later. An element changed since reading is rejected alone; the others are written | |
| guid | No | One element (GlobalId) | |
| host | No | One door or window (with its opening) or one unfilled opening moves by by (or direction) into this wall, GlobalIds kept; the new host is measured (wall-like, aligned, opening inside), else refused, never chosen by moddl | |
| note | No | Your note, stored with the new revision | |
| guids | No | These elements (GlobalIds) | |
| moves | No | Instead of by: one vector per element, one call; names exactly the elements of guid, guids or set | |
| until | No | Move until touching one of the target elements; n_checked counts the candidates | |
| dry_run | No | Preview: the planned effect and a plan_id, nothing written | |
| plan_id | No | Execute exactly the plan a dry_run returned, all or nothing; the plan holds target and fields. Plans that clone the same shared object (type, material) run one after the other: plan the second after the first ran, else PLAN_CHANGED | |
| distance | No | With direction: metres or a text with unit | |
| direction | No | With distance: a compass or vertical direction | |
| reference | No | With to: which point of the element; default origin (placement) | |
| request_id | No | Your id for this call: a repeat answers the first result and writes nothing | |
| to_station | No | Instead of to: the placement origin onto a station point; only moves, read_as gives the rotate_elements calls to turn with the tangent and roll with the cant | |
| expect_count | No | With set: how many elements the set holds - guards against a mixed-up set id | |
| expect_beyond | No | With plan_id: how many elements the plan reaches beyond those named (n_beyond of PLAN_REQUIRED or the dry_run) | |
| within_opening | No | A door or window moves by a vector inside the opening it fills; the opening stays. Refused where it would stand further out of the opening than before | |
| expect_contacts | No | Intended contacts: checks.contacts splits into as_expected, missing, surprises; an omitted kind is not judged |