Draft Upgrade

    From FreeCAD Documentation

    Draft Upgrade.svg Draft Upgrade

    Menu location
    Modification → Upgrade
    Draft, Arch
    Default shortcut
    U P
    Introduced in version
    See also
    Draft Downgrade


    The Draft Upgrade.svg Draft Upgrade command upgrades selected objects. The result depends on the number of selected objects and their type. The command can for example fuse elements and create faces. It is worth trying to upgrade a selection several times to see if a better result can be obtained. See the example in the image. Note that not all objects can be upgraded. This command is the counterpart of the Draft Downgrade command.

    Draft Upgrade example.jpg

    An open non-editable wire is upgraded to a closed wire, and then to a face. A closed non-editable square wire is also upgraded to a face. The two faces are then upgraded to create a compound, which is finally upgraded to a single editable Draft Wire.


    1. Optionally select one or more objects.
    2. There are several ways to invoke the command:
      • Press the Draft Upgrade.svg Draft Upgrade button.
      • Select the Modification → Draft Upgrade.svg Upgrade option from the menu.
      • Use the keyboard shortcut: U then P.
    3. If you have not yet selected an object: select an object in the 3D view.



    See also: Autogenerated API documentation and FreeCAD Scripting Basics.

    To upgrade objects use the upgrade method of the Draft module.

    upgrade_list = upgrade(objects, delete=False, force=None)
    • objects contains the objects to be upgraded. It is either a single object or a list of objects.
    • If delete is True the source objects are deleted.
    • force forces a certain way of upgrading by calling a specific internal function. It can be: "makeCompound", "closeGroupWires", "makeSolid", "closeWire", "turnToParts", "makeFusion", "makeShell", "makeFaces", "draftify", "joinFaces", "makeSketchFace", "makeWires" or "turnToLine".
    • upgrade_list is returned. It is a list containing two lists: a list of new objects and a list of objects to be deleted. If delete is True the second list is empty.


    import FreeCAD as App
    import Draft
    doc = App.newDocument()
    circle = Draft.make_circle(1000)
    rectangle = Draft.make_rectangle(2000, 800)
    add_list1, delete_list1 = Draft.upgrade([circle, rectangle], delete=False)
    line1 = Draft.make_line(App.Vector(2000, 0, 0), App.Vector(2500, 1500, 0))
    line2 = Draft.make_line(App.Vector(2500, 1500, 0), App.Vector(3000, -1000, 0))
    add_list2, delete_list2 = Draft.upgrade([line1, line2], delete=False)
    simple_wire = add_list2[0]
    add_list3, delete_list3 = Draft.upgrade(simple_wire, delete=False)
    closed_wire = add_list3[0]
    add_list4, delete_list4 = Draft.upgrade(closed_wire, delete=False)
    face = add_list4[0]
    add_list5, delete_list5 = Draft.upgrade(face, delete=False)