|Modification → Scale|
|Introduced in version|
|Draft SubelementHighlight, Draft Clone|
The command can be used on 2D objects created with the Draft Workbench or Sketcher Workbench, but also on many 3D objects such as those created with the Part Workbench, PartDesign Workbench or Arch Workbench.
Scaling an object around a base point
- Optionally select one or more objects, or one or more subelements of Draft Lines or Draft Wires.
- There are several ways to invoke the command:
- If you have not yet selected an object: select an object in the 3D view.
- The Scale task panel opens. See Options for more information.
- If subelements have been selected: check the Modify subelements checkbox to switch on subelement mode.
- Pick the base point in the 3D view, or type coordinates and press the button.
- Enter the X, Y and Z scale factors.
- Press or the button to finish the command.
First task panel
The single character keyboard shortcuts mentioned here can be changed. See Draft Preferences.
- To manually enter the coordinates for the base point enter the X, Y and Z component, and press 3D view before entering coordinates. after each. Or you can press the button when you have the desired values. It is advisable to move the pointer out of the
- Press working plane coordinate system. introduced in version 0.20 or click the Global checkbox to toggle global mode. If global mode is on, coordinates are relative to the global coordinate system, else they are relative to the
- Press Draft snapping on or off. to switch
- Press the button to abort the command.
Second task panel
- Enter the X, Y and Z factors to define the scaling. The values must be larger than zero.
- Check the Uniform scaling checkbox to lock the X, Y and Z factors to the same value.
- If the Working plane orientation checkbox is checked the scale factors are relative to the working plane coordinate system, else they are relative to the global coordinate system.
- If the Copy checkbox is checked a scaled copy of the original object is created. This only works for Draft objects that have a DataPoints property, such as Draft Wires.
- If the Modify subelements checkbox is checked the command will use the selected subelements instead of the whole objects. The subelements must belong to Draft Lines or Draft Wires.
- If the Create a clone checkbox is checked scaled clones of the original objects are created. This works for all object types. For objects that are not Draft objects, or for Draft objects that do not have a DataPoints property, this option must be selected.
- Press the 3D view to calculate the scale factors. This will automatically check the Uniform scaling checkbox. The X, Y and Z scale factors will therefore be equal and will be set to the distance between the base point and the 'from' point, divided by the distance between the base point and the 'to' point. button and pick two additional points in the
- Press or the button to abort the command.
- The command can also scale Image Planes, but not in clone mode.
- To reselect the base objects after copying objects: Edit → Preferences... → Draft → General → Select base objects after copying.
To scale objects use the
scale method of the Draft module.
scaled_list = scale(objectslist, scale=Vector(1,1,1), center=Vector(0,0,0), copy=False)
objectslistcontains the objects to be scaled. It is either a single object or a list of objects.
scaleis the vector that specifies by the X, Y and Z scale factors.
centeris the center point of the scaling operation.
Truecopies are created instead of scaling the original objects.
scaled_listis returned with the original scaled objects, or with the new copies. It is either a single object or a list of objects, depending on
import FreeCAD as App import Draft doc = App.newDocument() pts = [App.Vector(0, 0, 0), App.Vector(500, 500, 0), App.Vector(600, 0, 0)] wire1 = Draft.make_wire(pts, closed=True) doc.recompute() scale1 = App.Vector(2.3, 0.75, 0) wire2 = Draft.scale(wire1, scale1, copy=True) doc.recompute() scale2 = App.Vector(-2, -1.5, 0) wires = Draft.scale([wire1, wire2], scale2, copy=True) doc.recompute()