From 7c2a95bb0d24ee527589b367f17cd2909f48d140 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Tue, 14 May 2024 16:46:48 +0200 Subject: [PATCH] Assembly: JCS selection: cones surfaces offers the cone's apex. Fixes #13958 --- src/Mod/Assembly/UtilsAssembly.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Mod/Assembly/UtilsAssembly.py b/src/Mod/Assembly/UtilsAssembly.py index f79574e574..759e0a485e 100644 --- a/src/Mod/Assembly/UtilsAssembly.py +++ b/src/Mod/Assembly/UtilsAssembly.py @@ -921,13 +921,15 @@ def findPlacement(obj, part, elt, vtx, ignoreVertex=False): # First we find the translation if vtx_type == "Face" or ignoreVertex: - if surface.TypeId == "Part::GeomCylinder" or surface.TypeId == "Part::GeomCone": + if surface.TypeId == "Part::GeomCylinder": centerOfG = face.CenterOfGravity - surface.Center centerPoint = surface.Center + centerOfG centerPoint = centerPoint + App.Vector().projectToLine(centerOfG, surface.Axis) plc.Base = centerPoint elif surface.TypeId == "Part::GeomTorus" or surface.TypeId == "Part::GeomSphere": plc.Base = surface.Center + elif surface.TypeId == "Part::GeomCone": + plc.Base = surface.Apex else: plc.Base = face.CenterOfGravity elif vtx_type == "Edge":