From 09503f83da3fa8437466ecc9b4a45f28689d7861 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Thu, 4 Jul 2024 14:17:51 +0200 Subject: [PATCH] Assembly: Insert link : Insert to origin if it is within view. --- src/Mod/Assembly/CommandInsertLink.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Mod/Assembly/CommandInsertLink.py b/src/Mod/Assembly/CommandInsertLink.py index 08e4fe5ebd..aa343a262b 100644 --- a/src/Mod/Assembly/CommandInsertLink.py +++ b/src/Mod/Assembly/CommandInsertLink.py @@ -344,7 +344,9 @@ class TaskAssemblyInsertLink(QtCore.QObject): translation = App.Vector() resetThreshold = (screenCorner - screenCenter).Length * 0.1 - if (self.prevScreenCenter - screenCenter).Length > resetThreshold: + if len(self.insertionStack) == 1: + translation = App.Vector() # No translation for first object. + elif (self.prevScreenCenter - screenCenter).Length > resetThreshold: self.totalTranslation = App.Vector() self.prevScreenCenter = screenCenter else: @@ -353,8 +355,14 @@ class TaskAssemblyInsertLink(QtCore.QObject): insertionDict["translation"] = translation self.totalTranslation += translation - bboxCenter = addedObject.ViewObject.getBoundingBox().Center - addedObject.Placement.Base = screenCenter - bboxCenter + self.totalTranslation + originX, originY = view.getPointOnViewport(App.Vector() + translation) + if originX > 0 and originX < x and originY > 0 and originY < y: + # If the origin is within view then we insert at the origin. + addedObject.Placement.Base = self.totalTranslation + else: + # + bboxCenter = addedObject.ViewObject.getBoundingBox().Center + addedObject.Placement.Base = screenCenter - bboxCenter + self.totalTranslation self.prevScreenCenter = screenCenter