Merge pull request #74 from mfiumara/feature/move-component-layer-option

Add layer option to move_component tool
This commit is contained in:
mixelpixx
2026-03-27 20:31:13 -04:00
committed by GitHub
2 changed files with 17 additions and 2 deletions

View File

@@ -176,6 +176,7 @@ class ComponentCommands:
reference = params.get("reference")
position = params.get("position")
rotation = params.get("rotation")
layer = params.get("layer")
if not reference or not position:
return {
@@ -204,6 +205,14 @@ class ComponentCommands:
angle = pcbnew.EDA_ANGLE(rotation, pcbnew.DEGREES_T)
module.SetOrientation(angle)
# Flip to target layer if specified
if layer:
current_layer = self.board.GetLayerName(module.GetLayer())
if layer == "B.Cu" and current_layer != "B.Cu":
module.Flip(module.GetPosition(), False)
elif layer == "F.Cu" and current_layer != "F.Cu":
module.Flip(module.GetPosition(), False)
return {
"success": True,
"message": f"Moved component: {reference}",
@@ -214,7 +223,8 @@ class ComponentCommands:
"y": position["y"],
"unit": position["unit"]
},
"rotation": rotation if rotation is not None else module.GetOrientation().AsDegrees()
"rotation": rotation if rotation is not None else module.GetOrientation().AsDegrees(),
"layer": self.board.GetLayerName(module.GetLayer())
}
}

View File

@@ -117,8 +117,12 @@ export function registerComponentTools(
.number()
.optional()
.describe("Optional new rotation in degrees"),
layer: z
.string()
.optional()
.describe("Optional target layer (e.g., 'F.Cu', 'B.Cu') - flips component if needed"),
},
async ({ reference, position, rotation }) => {
async ({ reference, position, rotation, layer }) => {
logger.debug(
`Moving component: ${reference} to ${position.x},${position.y} ${position.unit}`,
);
@@ -126,6 +130,7 @@ export function registerComponentTools(
reference,
position,
rotation,
layer,
});
return {