diff --git a/ahb_document_observer.py b/ahb_document_observer.py index 448cb2d..37c0634 100644 --- a/ahb_document_observer.py +++ b/ahb_document_observer.py @@ -16,11 +16,15 @@ class DocLinkObserver: objList = App.getDocument(doc).getObject(obj).getSubObjectList(sub) # Build the name of the selected sub-object for multiple sub-assembly levels subObjName = '' - # first look for the linked object of the selected entity: - # Get linked object name that handles sub-sub-assembly + # look for the link to the selected entity. + # We select the first link we find (removing the "break" statement would instead select the bottom-most sub-sub-...-sub-assembly) for subObj in objList: if subObj.TypeId=='App::Link': subObjName = subObjName + subObj.Name + '.' + break + elif subObj.TypeId == 'Part::FeaturePython' and hasattr(subObj, 'LinkedObject'): # variant link + subObjName = subObjName + subObj.Name + '.' + break # if no App::Link found, let's look for other things: if subObjName == '': for subObj in objList: @@ -28,11 +32,12 @@ class DocLinkObserver: # the objList contains also the top-level object, don't count it twice if subObj.Name != obj: subObjName = subObjName + subObj.Name + '.' + break # if we found something, make it the selection - if subObjName != '': - Gui.Selection.removeSelection(doc, obj, sub) - Gui.Selection.addSelection(doc, obj, subObjName) - #FCC.PrintMessage("*"+doc+"*"+obj+"*"+subObjName+"*\n") + #if subObjName != '': + Gui.Selection.removeSelection(doc, obj, sub) + Gui.Selection.addSelection(doc, obj, subObjName) + #FCC.PrintMessage("*"+doc+"*"+obj+"*"+subObjName+"*\n") # The main document observer (also observes selections) class DocObserver: