Draft Scale: Difference between revisions

From FreeCAD Documentation
(Added 'In progress')
Line 68: Line 68:


<!--T:9-->
<!--T:9-->
To scale objects use the {{incode|scale}} method of the Draft module.
The Scale tool can be used in [[macros|macros]] and from the [[Python|Python]] console by using the following function:


</translate>
</translate>
Line 77: Line 77:


<!--T:10-->
<!--T:10-->
* {{incode|objectslist}} contains the objects to be scaled.
* Scales the objects in {{incode|objectslist}} by the factors specified by the components of {{incode|delta}}, defined as a {{incode|FreeCAD.Vector}}, and using {{incode|center}} as base point.
** {{incode|objectslist}} is either a single object or a list of objects.
** {{incode|objectslist}} is either a single object or a list of objects.
* If {{incode|copy}} is {{incode|True}} copies are created instead of modifying the original objects.
* {{incode|delta}} indicates the vector that specifies by the X, Y and Z scale factors.
* {{incode|center}} indicates the base point of the scaling.
* If {{incode|legacy}} is {{incode|True}}, direct copy mode is used (outdated), otherwise a parametric copy is made.
* {{incode|scaledlist}} is returned with the original scaled objects, or with the new clones.
* If {{incode|copy}} is {{incode|True}} copies are created instead of scaling the original objects.
* If {{incode|legacy}} is {{incode|True}} direct copy mode is used (outdated), otherwise parametric copies are created.
** {{incode|scaledlist}} is either a single object or a list of objects, depending on the input {{incode|objectslist}}.
* {{incode|scaledlist}} is returned with the original scaled objects, or with the new copies.
** {{incode|scaledlist}} is either a single object or a list of objects, depending on {{incode|objectslist}}.


<!--T:11-->
<!--T:11-->
Line 89: Line 91:
</translate>
</translate>
{{Code|code=
{{Code|code=
import FreeCAD, Draft
import FreeCAD as App
import Draft


doc = App.newDocument()
Polygon1 = Draft.makePolygon(3, radius=1200)
delta1 = FreeCAD.Vector(2.3, 0.75, 0)


clone_1 = Draft.scale(Polygon1, delta1, copy=True)
polygon1 = Draft.make_polygon(3, radius=1200)
delta1 = App.Vector(2.3, 0.75, 0)


Polygon2 = Draft.makePolygon(5, radius=750)
clone_1 = Draft.scale(polygon1, delta1, copy=True)
delta2 = FreeCAD.Vector(-2, -1.5, 0)


polygon2 = Draft.make_polygon(5, radius=750)
clone_2 = Draft.scale([Polygon1, Polygon2], delta2, copy=True)
Draft.move(clone_2, FreeCAD.Vector(3500, 1000, 0))
delta2 = App.Vector(-2, -1.5, 0)

clone_2 = Draft.scale([polygon1, polygon2], delta2, copy=True)
Draft.move(clone_2, App.Vector(3500, 1000, 0))

doc.recompute()
}}
}}
<translate>
<translate>

Revision as of 12:54, 19 May 2021

This documentation is a work in progress. Please don't mark it as translatable since it will change in the next hours and days.

Draft Scale

Menu location
Modification → Scale
Workbenches
Draft, Arch
Default shortcut
S C
Introduced in version
-
See also
Draft Clone, Draft Offset

Description

The Draft Scale tool scales or copies selected objects around a base point.

The Scale tool can produce a copy or a Draft Clone at a defined scale. Use Draft Offset to produce a scaled copy of a wire set at a certain offset. A simple copy with no scaling can be produced with Draft Move.

This tool can be used on 2D shapes created with the Draft Workbench but can also be used on many types of 3D objects such as those created with the Part or PartDesign workbenches.

File:Draft Scale example.jpg

Scaling one object from a reference point to a second point

Usage

  1. Select the objects that you wish to scale.
  2. Press the Draft Scale button, or press S then C keys. If no object is selected, you will be invited to select one.
  3. Click a first point on the 3D view, or type a coordinate and press the add point button. This serves as the base point of the operation.
  4. Set the X, Y, and Z factors, and the appropriate result options, then press Enter or the OK button to finish the operation.

Options

  • To enter coordinates manually, simply enter the numbers, then press Enter between each X, Y and Z component. You can press the add point button when you have the desired values to insert the point.
  • Fill in the X, Y and Z factors to define the scaling along that direction.
    • Click the "Uniform scaling" checkbox to lock the X, Y and Z factors to the same value.
    • Click the "Working plane orientation" checkbox to lock the X, Y and Z scaling along the current Working Plane; otherwise, global X, Y and Z directions are used.
  • Three options control the result of the scaling operation:
    • Create a clone. A Draft Clone of the original object will be created. This will work for all object types.
Note: even if the scaling factors are left at their default values (1.0, 1.0, 1.0), once the clone is created you will be able to change these factors manually in the property editor.
  • Modify original. The original object will have its size modified. This will only work with Draft objects and non-parametric Part shapes.
  • Create a copy. A scaled copy of the original object will be created. This will work for all object types, but only the copies of Draft objects will be parametric.
Note: a copy is a completely different object from the original shape; it will be created at the specified scale, and then will have its own set of properties. On the other hand, a Draft Clone is linked to the original shape and the only property that can be changed is the scale.
  • Image planes created with the Image workbench are also supported (but not in clone mode).

Scripting

See also: Autogenerated API documentation and FreeCAD Scripting Basics.

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

scaledlist = scale(objectslist, delta=Vector(1,1,1), center=Vector(0,0,0), copy=False, legacy=False)
  • objectslist contains the objects to be scaled.
    • objectslist is either a single object or a list of objects.
  • delta indicates the vector that specifies by the X, Y and Z scale factors.
  • center indicates the base point of the scaling.
  • If copy is True copies are created instead of scaling the original objects.
  • If legacy is True direct copy mode is used (outdated), otherwise parametric copies are created.
  • scaledlist is returned with the original scaled objects, or with the new copies.
    • scaledlist is either a single object or a list of objects, depending on objectslist.

Example:

import FreeCAD as App
import Draft

doc = App.newDocument()

polygon1 = Draft.make_polygon(3, radius=1200)
delta1 = App.Vector(2.3, 0.75, 0)

clone_1 = Draft.scale(polygon1, delta1, copy=True)

polygon2 = Draft.make_polygon(5, radius=750)
delta2 = App.Vector(-2, -1.5, 0)

clone_2 = Draft.scale([polygon1, polygon2], delta2, copy=True)
Draft.move(clone_2, App.Vector(3500, 1000, 0))

doc.recompute()