Draft Offset/sv: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>

{{docnav|[[Draft_Rotate|Rotate]]|[[Draft_Trimex|Trim/Extend (Trimex)]]|[[Draft_Module|Draft]]|IconL=Draft_Rotate.svg|IconC=Workbench_Draft.svg|IconR=Draft_Trimex.svg}}
{{Docnav
|[[Draft_Mirror|Mirror]]
|[[Draft_Trimex|Trimex]]
|[[Draft_Workbench|Draft]]
|IconL=Draft_Mirror.svg
|IconR=Draft_Trimex.svg
|IconC=Workbench_Draft.svg
}}


<div class="mw-translate-fuzzy">
<div class="mw-translate-fuzzy">
{{GuiCommand/sv|Name=Draft_Offset|Workbenches=[[Draft Module/sv|Skiss]]|MenuLocation=Draft → Offset|SeeAlso=[[Part_Offset2D/sv|Part 2D Offset]]}}
{{GuiCommand/sv|Name=Draft_Offset|Workbenches=[[Draft_Workbench/sv|Skiss]]|MenuLocation=Draft → Offset|SeeAlso=[[Part_Offset2D/sv|Part 2D Offset]]}}
</div>
</div>


<span id="Description"></span>
==Beskrivning==
==Beskrivning==


Line 11: Line 20:
Detta verktyg gör en offset på det valda objektet. Om inget objekt är valt, så kommer du ombes att välja ett. Sedan ombes du om en punkt som ger avståndet för offseten från det markerade objektet.
Detta verktyg gör en offset på det valda objektet. Om inget objekt är valt, så kommer du ombes att välja ett. Sedan ombes du om en punkt som ger avståndet för offseten från det markerade objektet.
</div>
</div>

Typically this tool is used in copy mode to create offset copies of a base wire while leaving this wire in the same place. The offset copies are scaled versions of the original object. To create other scaled copies use [[Draft Scale]]. To produce exact copies shifted a distance use [[Draft Move]].


[[Image:Draft_Offset_example.jpg|400px]]
[[Image:Draft_Offset_example.jpg|400px]]
{{Caption|Offsetting a wire a certain distance from one of its edges}}
{{Caption|Offsetting a Draft Wire}}


<span id="Usage"></span>
<div class="mw-translate-fuzzy">
==Bruk==
==Bruk==
</div>

See also: [[Draft_Snap|Draft Snap]] and [[Draft_Constrain|Draft Constrain]].


<div class="mw-translate-fuzzy">
<div class="mw-translate-fuzzy">
Line 28: Line 40:
* Om {{KEY|ALT}} är nedtryckt, så kan du göra multipla kopior ända tills {{KEY|ALT}} släpps.
* Om {{KEY|ALT}} är nedtryckt, så kan du göra multipla kopior ända tills {{KEY|ALT}} släpps.
</div>
</div>

The distance used to create the offset is perpendicular to one of the edges of the original shape, depending on the position of the pointer. If the pointer is moved closer to another edge, this edge now becomes the reference for the distance. Hold the {{KEY|Shift}} key to keep the current reference edge despite moving the pointer closer to other edges.


==Options==
==Options==


The single character keyboard shortcuts available in the task panel can be changed. See [[Draft_Preferences|Draft Preferences]]. The shortcuts mentioned here are the default shortcuts (for version 0.22).
* Press {{KEY|P}} or click the checkbox to toggle ''copy'' mode. If copy mode is on, the Offset tool will keep the original shape in its place but will make a scaled copy at the chosen point.

* Hold {{KEY|Alt}} while picking the point to also toggle copy mode. Keeping {{KEY|Alt}} pressed will allow you to continue placing offset copies; release {{KEY|Alt}} to finish the operation and see all offset shapes.
* Click the "OCC-style" checkbox to toggle ''OCC'' mode. This will create an offset from both sides of an line segment, which will produce a specially closed shape with rounded edges at the ends of the segments.
* If the {{MenuCommand|OCC-style offset}} checkbox is checked a special offset style is used: open [[Draft_Wire|Draft Wires]] are offset on both sides, and new edges are connected with rounded corners. This only works for planar objects with at least two edges. Note that with this style a new non-parametric object is created, and if copy mode is off the original object is deleted.
:{{Emphasis|Note:}} with this style the original segments will be removed, so use copy mode to preserve the original edges.
* Press {{KEY|C}} or click the {{MenuCommand|Copy}} checkbox to toggle copy mode. If copy mode is on, the command will create an offset copy instead of offsetting the original object.
* Holding down {{KEY|Alt}} before picking points in the [[3D_view|3D view]] will also toggle copy mode. While {{KEY|Alt}} is held down multiple offset points can be picked. Release {{KEY|Alt}} to finish the command and see the created copies.
* Hold {{KEY|Ctrl}} while offsetting to force [[Draft_Snap|snapping]] your point to the nearest snap location, independently of the distance.
* Hold {{KEY|Shift}} to keep the offset distance referred to the current segment, and avoid picking another reference.
* Hold down {{KEY|Shift}} to keep the offset distance linked to the current segment.
* Press {{KEY|S}} to switch [[Draft_Snap|Draft snapping]] on or off.
* Press {{KEY|Esc}} or the {{button|Close}} button to abort the current command; offset copies already placed will remain.
* Press {{KEY|Esc}} or the {{Button|Close}} button to abort the command.

==Notes==

* To create an offset version of a [[Draft_BSpline|Draft BSpline]] its points are offset individually, and from the new points a new spline is calculated. This new spline is not parallel to the original spline. For an exact parallel offset of a [[Draft_BSpline|Draft BSpline]] the [[Part_Offset2D|Part Offset2D]] command should be used.
* The Draft Offset command cannot handle [[Draft_BezCurve|Draft BezCurves]]. Use the [[Part_Offset2D|Part Offset2D]] command instead.


==Scripting==
==Scripting==
{{Emphasis|See also:}} [[Draft API]] and [[FreeCAD Scripting Basics]].


See also: [https://freecad.github.io/SourceDoc/ Autogenerated API documentation] and [[FreeCAD Scripting Basics|FreeCAD Scripting Basics]].
The Offset tool can be used in [[macros]] and from the [[Python]] console by using the following function:

To offset objects use the {{incode|offset}} method of the Draft module. The method can only handle [[Draft_Wire|Draft Wires]], [[Draft_Circle|Draft Circles]], [[Draft_Rectangle|Draft Rectangles]], [[Draft_Polygon|Draft Polygons]] and [[Draft_BSpline|Draft BSplines]].


{{Code|code=
{{Code|code=
Offsetobj = offset(obj, delta, copy=False, bind=False, sym=False, occ=False)
offset_obj = offset(obj, delta, copy=False, bind=False, sym=False, occ=False)
}}
}}


* Offsets the given {{incode|obj}} wire by applying the given {{incode|delta}}, defined as a vector, to its first vertex.
* {{incode|obj}} is the object to be offset.
* {{incode|delta}} contains the offset information:
* If {{incode|copy}} is {{incode|True}} another object is created instead of offsetting the original object.
** For [[Draft_Wire|Draft Wires]], [[Draft_Rectangle|Draft Rectangles]] and [[Draft_Polygon|Draft Polygons]] it is an offset vector that must be perpendicular to the first segment of the object.
* If {{incode|bind}} is {{incode|True}}, and provided the wire object is open, the original and the offset wire will be tied at their endpoints, forming a face.
** For [[Draft_Circle|Draft Circles]] it is the new radius.
** If {{incode|sym}} is {{incode|True}}, {{incode|bind}} must be {{incode|True}} as well, and the offset is made on both sides of the wire, the total width being the length of the given vector.
** For [[Draft_BSpline|Draft BSplines]] it is a list of new points.
* If {{incode|occ}} is {{incode|True}}, it will use OCC-style offsetting: it will offset from both sides, then tie the new wires together, and round the corners.
* {{incode|Offsetobj}} is returned with the original offset object, or with the new copy.
* If {{incode|copy}} is {{incode|True}} the original object is kept and a new object is created.
* If {{incode|bind}} is {{incode|True}} a face is created by connecting the shape of the original object and the shape of its offset. This only works for open [[Draft_Wire|Draft Wires]].
* If {{incode|sym}} is {{incode|True}}, and {{incode|bind}} is {{incode|True}} as well, the offset is made on both sides of the original object, the total width being the length of the given vector. This only works for open [[Draft_Wire|Draft Wires]].
* If {{incode|occ}} is {{incode|True}} OCC-style offsetting is used. See [[#Options|Options]]. If {{incode|occ}} is {{incode|True}} the {{incode|bind}} and {{incode|sym}} arguments are ignored.
* {{incode|offset_obj}} is returned with the original offset object, or with the new object. If {{incode|bind}} is {{incode|True}} or {{incode|occ}} is {{incode|True}}, the new object is a {{incode|[[Part_Feature|Part::Feature]]}} object.


Example:
Example:


{{Code|code=
{{Code|code=
import FreeCAD, Draft
import FreeCAD as App
import Draft


doc = App.newDocument()
p1 = FreeCAD.Vector(0, 0, 0)
p2 = FreeCAD.Vector(1500, 2000, 0)
p3 = FreeCAD.Vector(4000, 0, 0)


Wire = Draft.makeWire([p1, p2, p3])
p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1500, 2000, 0)
p3 = App.Vector(4000, 0, 0)


vector = FreeCAD.Vector(0, 500, 0)
wire = Draft.make_wire([p1, p2, p3])
doc.recompute()
Offset_1 = Draft.offset(Wire, vector, copy=True)

Offset_2 = Draft.offset(Wire, 3*vector, copy=True)
vector = App.Vector(-200, 150, 0)
Offset_3 = Draft.offset(Wire, 6*vector, copy=True)
Offset_4 = Draft.offset(Wire, 9*vector, copy=True)
offset1 = Draft.offset(wire, vector, copy=True, bind=True, sym=True)
Offset_5 = Draft.offset(Wire, 1.5*vector, copy=True, occ=True)
offset2 = Draft.offset(wire, 3*vector, copy=True)
offset3 = Draft.offset(wire, 6*vector, copy=True)
offset4 = Draft.offset(wire, 9*vector, copy=True)
offset5 = Draft.offset(wire, 1.5*vector, copy=True, occ=True)

doc.recompute()
}}
}}


{{docnav|[[Draft_Rotate|Rotate]]|[[Draft_Trimex|Trim/Extend (Trimex)]]|[[Draft_Module|Draft]]|IconL=Draft_Rotate.svg|IconC=Workbench_Draft.svg|IconR=Draft_Trimex.svg}}


{{Docnav
{{Draft Tools navi}}
|[[Draft_Mirror|Mirror]]
|[[Draft_Trimex|Trimex]]
|[[Draft_Workbench|Draft]]
|IconL=Draft_Mirror.svg
|IconR=Draft_Trimex.svg
|IconC=Workbench_Draft.svg
}}


{{Draft Tools navi{{#translation:}}}}
{{Userdocnavi}}
{{Userdocnavi{{#translation:}}}}
{{clear}}

Latest revision as of 05:07, 9 January 2024

Draft_Offset

Menyplacering
Draft → Offset
Arbetsbänkar
Skiss
Standard genväg
Ingen
Introducerad i version
-
Se även
Part 2D Offset

Beskrivning

Detta verktyg gör en offset på det valda objektet. Om inget objekt är valt, så kommer du ombes att välja ett. Sedan ombes du om en punkt som ger avståndet för offseten från det markerade objektet.

Offsetting a Draft Wire

Bruk

See also: Draft Snap and Draft Constrain.

  • Markera punkter i ett tomt område i 3d vyn, eller på ett existerande objekt.
  • Nedtryckning av CTRL kommer att snäppa din punkt till tillgängliga snäpp-punkter.
  • Nedtryckning av SKIFT kommer att begränsa dig till det nuvarande segmentet, iställed för att markera det närmaste.
  • Om du trycker på ESC så avbryts funktionen.
  • C växlar kopieringsläget på/av. Med kopiering på, så kommer objekt(en) att kopieras istället för att flyttas.
  • Nedtryckning av ALT kommer att skapa en kopia, även om kopieringsknappen är av.
  • Om ALT är nedtryckt, så kan du göra multipla kopior ända tills ALT släpps.

Options

The single character keyboard shortcuts available in the task panel can be changed. See Draft Preferences. The shortcuts mentioned here are the default shortcuts (for version 0.22).

  • If the OCC-style offset checkbox is checked a special offset style is used: open Draft Wires are offset on both sides, and new edges are connected with rounded corners. This only works for planar objects with at least two edges. Note that with this style a new non-parametric object is created, and if copy mode is off the original object is deleted.
  • Press C or click the Copy checkbox to toggle copy mode. If copy mode is on, the command will create an offset copy instead of offsetting the original object.
  • Holding down Alt before picking points in the 3D view will also toggle copy mode. While Alt is held down multiple offset points can be picked. Release Alt to finish the command and see the created copies.
  • Hold down Shift to keep the offset distance linked to the current segment.
  • Press S to switch Draft snapping on or off.
  • Press Esc or the Close button to abort the command.

Notes

  • To create an offset version of a Draft BSpline its points are offset individually, and from the new points a new spline is calculated. This new spline is not parallel to the original spline. For an exact parallel offset of a Draft BSpline the Part Offset2D command should be used.
  • The Draft Offset command cannot handle Draft BezCurves. Use the Part Offset2D command instead.

Scripting

See also: Autogenerated API documentation and FreeCAD Scripting Basics.

To offset objects use the offset method of the Draft module. The method can only handle Draft Wires, Draft Circles, Draft Rectangles, Draft Polygons and Draft BSplines.

offset_obj = offset(obj, delta, copy=False, bind=False, sym=False, occ=False)
  • obj is the object to be offset.
  • delta contains the offset information:
  • If copy is True the original object is kept and a new object is created.
  • If bind is True a face is created by connecting the shape of the original object and the shape of its offset. This only works for open Draft Wires.
  • If sym is True, and bind is True as well, the offset is made on both sides of the original object, the total width being the length of the given vector. This only works for open Draft Wires.
  • If occ is True OCC-style offsetting is used. See Options. If occ is True the bind and sym arguments are ignored.
  • offset_obj is returned with the original offset object, or with the new object. If bind is True or occ is True, the new object is a Part::Feature object.

Example:

import FreeCAD as App
import Draft

doc = App.newDocument()

p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1500, 2000, 0)
p3 = App.Vector(4000, 0, 0)

wire = Draft.make_wire([p1, p2, p3])
doc.recompute()

vector = App.Vector(-200, 150, 0)
offset1 = Draft.offset(wire, vector, copy=True, bind=True, sym=True)
offset2 = Draft.offset(wire, 3*vector, copy=True)
offset3 = Draft.offset(wire, 6*vector, copy=True)
offset4 = Draft.offset(wire, 9*vector, copy=True)
offset5 = Draft.offset(wire, 1.5*vector, copy=True, occ=True)

doc.recompute()