def Activated(self): # retrieve selection selection = FreeCAD.Gui.Selection.getSelectionEx() if len(selection) == 1: # Create initial/end path if length of selection == 1 selObj = selection[0] try: a = FreeCAD.ActiveDocument.InitialPath try: a = FreeCAD.ActiveDocument.FinalPath except: # create final path, because initial path already exists finalobj = FreeCAD.ActiveDocument.addObject( 'Part::FeaturePython', 'FinalPath') NiCrPath.FinalPath(finalobj, selObj) NiCrPath.FinalPathViewProvider(finalobj.ViewObject) finalobj.ViewObject.ShapeColor = (1.0, 1.0, 1.0) finalobj.ViewObject.Transparency = 15 finalobj.ViewObject.DisplayMode = 'Shaded' FreeCAD.ActiveDocument.WirePath.addObject(finalobj) except: # create initial path object initialobj = FreeCAD.ActiveDocument.addObject( 'Part::FeaturePython', 'InitialPath') NiCrPath.InitialPath(initialobj, selObj) NiCrPath.InitialPathViewProvider(initialobj.ViewObject) # initial trajectory is red initialobj.ViewObject.ShapeColor = (1.0, 0.0, 0.0) initialobj.ViewObject.Transparency = 15 initialobj.ViewObject.DisplayMode = 'Shaded' FreeCAD.ActiveDocument.WirePath.addObject(initialobj) if len(selection) == 2: # Create link between paths if len(selection) = 2 selA = selection[0] selB = selection[1] SelObjA = selA.Object SelObjB = selA.Object # Link object link_name = 'Link_' + SelObjA.Name[8:] + '_' + SelObjB.Name[8:] LinkObj = FreeCAD.ActiveDocument.addObject('Part::FeaturePython', link_name) # initialize link object NiCrPath.LinkPath(LinkObj, selA, selB) NiCrPath.LinkPathViewProvider(LinkObj.ViewObject) # link representation # LinkObj.ViewObject.ShapeColor = (1.0, 0.0, 0.0) LinkObj.ViewObject.Transparency = 15 # LinkObj.ViewObject.LineColor = (1.0, 0.0, 0.0) LinkObj.ViewObject.DisplayMode = "Shaded" # add to folder FreeCAD.ActiveDocument.WirePath.addObject(LinkObj)