def SetupProperties():
    return PathProfile.SetupProperties()
    def Activated(self):
        import Path
        from PathScripts import PathUtils, PathProfile, PathProject
        prjexists = False
        selection = PathSelection.multiSelect()

        if not selection:
            return

        # if everything is ok, execute and register the transaction in the undo/redo stack
        FreeCAD.ActiveDocument.openTransaction(
            translate("PathProfile", "Create Profile"))
        FreeCADGui.addModule("PathScripts.PathProfile")

        obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython",
                                               "Profile")
        PathProfile.ObjectProfile(obj)
        PathProfile.ViewProviderProfile(obj.ViewObject)

        obj.Base = (FreeCAD.ActiveDocument.getObject(selection['objname']))

        if selection['facenames']:
            #FreeCAD.Console.PrintMessage('There are edges selected\n')
            obj.Face1 = (FreeCAD.ActiveDocument.getObject(
                selection['objname']), selection['facenames'][0])
            if len(selection['facenames']) > 1:
                obj.Face2 = (FreeCAD.ActiveDocument.getObject(
                    selection['objname']), selection['facenames'][-1])

        if selection['edgenames']:
            #FreeCAD.Console.PrintMessage('There are edges selected\n')

            obj.Edge1 = (FreeCAD.ActiveDocument.getObject(
                selection['objname']), (selection['edgenames'][0]))
            if len(selection['edgenames']) > 1:
                obj.Edge2 = (FreeCAD.ActiveDocument.getObject(
                    selection['objname']), (selection['edgenames'][-1]))

        if selection['pointlist']:
            FreeCADGui.doCommand('from FreeCAD import Vector')
            stptX, stptY, stptZ = selection['pointlist'][0].X, selection[
                'pointlist'][0].Y, selection['pointlist'][0].Z
            obj.StartPoint = Vector((stptX), (stptY), (stptZ))
            if len(
                    selection['pointlist']
            ) > 1:  # we have more than one point so we have an end point
                endptX, endptY, endptZ = selection['pointlist'][
                    -1].X, selection['pointlist'][-1].Y, selection[
                        'pointlist'][-1].Z
                obj.EndPoint = Vector(endptX, endptY, endptZ)
        if selection['pathwire'].isClosed():
            obj.PathClosed = True
            if selection['clockwise']:
                obj.Side = "Left"
                obj.Direction = "CW"
            elif selection['clockwise'] == False:
                obj.Side = "Right"
                obj.Direction = "CCW"
        else:
            obj.Side = "On"
            obj.Direction = "CCW"
            obj.PathClosed = False

        ZMax = obj.Base[0].Shape.BoundBox.ZMax
        ZMin = obj.Base[0].Shape.BoundBox.ZMin
        obj.StepDown.Value = 1.0
        obj.StartDepth.Value = ZMax - obj.StepDown.Value
        obj.FinalDepth.Value = ZMin - 1.0
        obj.ClearanceHeight.Value = ZMax + 5.0
        obj.SegLen.Value = 0.5
        obj.Active = True
        obj.ViewObject.ShowFirstRapid = False

        project = PathUtils.addToProject(obj)

        tl = PathUtils.changeTool(obj, project)
        if tl:
            obj.ToolNumber = tl

        FreeCAD.ActiveDocument.commitTransaction()
        FreeCAD.ActiveDocument.recompute()