Placement/de: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
No edit summary
(68 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
'''Platzierung''' ist wie FreeCAD den Standort und die Lage (Orientierung) eines Objekts im Raum angibt. Die Platzierung kann in vielfältigen Formen angegeben und über [[Python_scripting_tutorial#Vectors_and_Placements/de|Skripten]], den Eigenschaftenbereich oder den '''Platzierung'''sdialog ('''Bearbeiten''' Menü) bearbeitet werden.
==Übersicht==
'''Platzierung'''' ist wie FreeCAD die Position und Lage (Orientierung) eines Objekts im Raum angibt. Die Platzierung kann in mehreren Formen angegeben und über [[Python_scripting_tutorial#Vectors_and_Placements|scripting]], den Eigenschaftsbereich oder den Dialog '''Placement'''' (''''Edit''' Menü) manipuliert werden.
===Zugriff auf das Platzierungsattribut===
====Zugriff auf das Platzierungsattribut===
Auf die Platzierungsattribute eines Objekts kann auf 3 Arten zugegriffen und geändert werden:
Auf die Platzierungsattribute eines Objekts kann auf 3 Arten zugegriffen und verändert werden:


[[Image:PlacementPropertiesv10-800x800.png|frame|left|Placement in Properties panel]]
[[Image:PlacementPropertiesv10-800x800.png|frame|left|Platzierung im Eigenschaftenpaneel]]
{{clear}}
{{clear}}


[[Image:PlacePyConv10.png|frame|left|Scripting Placement as y/p/r and Matrix and its [[Placement_API|API]].]]
[[Image:PlacePyConv10.png|frame|left|Skriptplatzierung als y/p/r und Matrix und seine [[Placement_API/de|API]].]]
{{clear}}
{{clear}}


[[Image:PlacementDialogv10.png|frame|left|Placement Dialog Rotationsachse mit Winkel]]
[[Image:PlacementDialogv10.png|frame|left|Platzierungsdialog Rotationsachse mit Winkel]]
{{clear}}
{{clear}}
==Formen der Platzierung====
==Formen der Platzierung==
Die Platzierung wird intern als eine Position und eine Rotation (Drehachse und Winkel in ein Quaternion umgewandelt [https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation]) gespeichert. Während es mehrere Formulare gibt, um eine Rotation festzulegen, z.B. mit einem Rotationszentrum, wird dies nur zur Beeinflussung der Rotationsberechnung verwendet und nicht für spätere Operationen gespeichert. Wenn eine Drehachse von (1,1,1,1) angegeben ist, kann sie ebenfalls normalisiert werden, wenn sie im Quaternion gespeichert ist, und als (0.58, 0.58, 0.58, 0.58, 0.58) erscheinen, wenn das Objekt später durchsucht wird.
Die Platzierung wird intern als eine Position und eine Rotation (Drehachse und Winkel in ein Quaternion umgewandelt [https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation Quaternionen und räumliche Rotation], [https://de.wikipedia.org/wiki/Quaternion Quaternionen]) gespeichert. Während es mehrere Formen gibt, um eine Rotation festzulegen, z.B. mit einem Rotationszentrum, wird dies nur zur Beeinflussung der Rotationsberechnung verwendet und nicht für spätere Operationen gespeichert. Wenn eine Drehachse von (1,1,1,1) angegeben ist, kann sie ebenfalls normalisiert werden, wenn sie im Quaternion gespeichert ist und als (0.58, 0.58, 0.58, 0.58, 0.58) erscheinen, wenn das Objekt später durchsucht wird.


=== Winkel, Achse und Position===
=== Winkel, Achse und Position===
'''Platzierung = [Winkel, Achse, Position]'''
'''Platzierung = [Winkel, Achse, Position]'''


Die erste Form von '''Placement''' fixiert die Position eines Objekts im Raum mit einer Position und beschreibt seine Ausrichtung als eine einzige Drehung um eine Achse.
Die erste Form der '''Platzierung''' fixiert die Position eines Objekts im Raum und beschreibt seine Ausrichtung als eine einzige Drehung um eine Achse.
''Winkel = r'''' ist ein Skalar, der den Grad der Drehung des Objekts um die Achse anzeigt. Wird als Grad eingegeben, aber intern als Bogenmaß gespeichert.
'''Winkel = r''' ist ein Skalar, der den Grad der Drehung des Objekts um die Achse anzeigt. Wird zwar als Grad eingegeben, wird aber intern als Bogenmaß gespeichert.


'''Achse = (ax,ay,az)''' ist ein Vektor, der eine Drehachse beschreibt (siehe Hinweis zur Drehachse). Beispiele sind:
Translations:Placement/37/de
''Achse = (ax,ay,az)'''' ist ein Vektor, der eine Drehachse beschreibt (siehe Hinweis zur Drehachse). Beispiele sind:
(1,0,0,0) ==> um die Achse '''X''''.
(1,0,0,0) ==> um die '''X'''-Achse.
(0,1,0) ==> um die Achse '''Y''''.
(0,1,0) ==> um die '''Y'''-Achse.
(0,0,1) ==> um die '''Z''' Achse
(0,0,1) ==> um die '''Z'''-Achse
(0.71,0.71,71,0) ==> um die Linie '''y=x''''''.
(0.71,0.71,71,0) ==> um die Linie '''y=x'''.


Beachte, dass es auch möglich ist, ein Objekt entlang dieser Drehachse (Axialbewegung) zu verschieben (bewegen), indem Du den Bewegungsabstand in der Axialspinbox eingibst und auf die Schaltfläche Apply axial klickst. (Eine Möglichkeit, sich eine axiale Bewegung vorzustellen, ist, an ein Flugzeug zu denken, bei dem sich ein Propeller auf der Nase dreht - der Propeller dreht sich um eine Drehachse, während sich das Flugzeug entlang derselben Achse bewegt.) Die Werte im Vektor können als die relative Bewegungsgröße betrachtet werden, die in dieser Richtung angewendet wird. So wird beispielsweise im Fall y=x (0.71,0.71,71,0) der in der Axialspinbox enthaltene Wert gleichermaßen auf die X- und Y-Richtung angewendet, aber es findet keine Bewegung in der Z-Richtung statt.
Beachte, dass es auch möglich ist, ein Objekt entlang dieser Drehachse (Axialbewegung) zu verschieben (bewegen), indem Du den Bewegungsabstand in der Axialspinbox eingibst und auf die Schaltfläche Apply axial klickst. (Eine Möglichkeit, sich eine axiale Bewegung vorzustellen, ist, an ein Flugzeug zu denken, bei dem sich ein Propeller auf der Nase dreht - der Propeller dreht sich um eine Drehachse, während sich das Flugzeug entlang derselben Achse bewegt.) Die Werte im Vektor können als die relative Bewegungsgröße betrachtet werden, die in dieser Richtung angewendet wird. So wird beispielsweise im Fall y=x (0.71,0.71,71,0) der in der Axialspinbox enthaltene Wert gleichermaßen auf die X- und Y-Richtung angewendet, aber es findet keine Bewegung in der Z-Richtung statt.
Position = (x,y,z)'''' ist ein Vektor, der den Punkt beschreibt, von dem aus die Geometrie des Objekts berechnet wird (in Wirklichkeit ein "lokaler Ursprung" für das Objekt). Beachten Sie, dass in Skripten Placement.Base verwendet wird, um die Positionskomponente einer Platzierung zu bezeichnen. Der Eigenschaftseditor ruft diesen Wert "Position" und der Platzierungsdialog nennt ihn "Translation".
'''Position = (x,y,z)''' ist ein Vektor, der den Punkt beschreibt, von dem aus die Geometrie des Objekts berechnet wird (in Wirklichkeit ein "lokaler Ursprung" für das Objekt). Beachten Sie, dass in Skripten Placement.Base verwendet wird, um die Positionskomponente einer Platzierung zu bezeichnen. Der Eigenschaftseditor ruft diesen Wert "Position" und der Positionierungsdialog nennt ihn "Translation".


Position und Gieren, Neigung und Drehung===
===Position und Gieren, Neigen und Rollen===
[[Image:PlacementDialogv10b.png|frame|left|Placement Dialog Euler Winkel]]
[[Image:PlacementDialogv10b.png|frame|left|Positionierungsdialog Euler Winkel]]
{{clear}}
{{clear}}
'''Platzierung = [Position, Gier-Neigungs-Rolle]'''.
'''Positionierung = [Position, Gieren-Neigen-Rollen]'''


Die zweite Form von '''Platzierung''' fixiert die Position eines Objekts im Raum mit einer Position (wie in der ersten Form), beschreibt aber seine Ausrichtung mit den Winkeln Gieren, Neigen und Rollen ([http://en.wikipedia.org/wiki/Yaw,_pitch,_and_roll Gieren, Neigen, Rollen]). Diese Winkel werden manchmal als Euler-Winkel oder Tait-Bryan-Winkel bezeichnet ([http://en.wikipedia.org/wiki/Euler_angles Euler-Winkel]). Gieren, Neigen und Rollen sind gängige Luftfahrtbegriffe für die Orientierung (oder Haltung) eines Körpers.
Die zweite Form der '''Positionierung''' fixiert die Position eines Objekts im Raum mit einer Position (wie in der ersten Form), beschreibt aber seine Ausrichtung mit den Winkeln Gieren, Neigen und Rollen ([http://en.wikipedia.org/wiki/Yaw,_pitch,_and_roll Gieren, Neigen, Rollen]). Diese Winkel werden manchmal als Euler-Winkel oder Tait-Bryan-Winkel bezeichnet ([https://de.wikipedia.org/wiki/Eulersche_Winkel Euler-Winkel]). Gieren, Neigen und Rollen sind gängige Luftfahrtbegriffe für die Orientierung (oder Haltung) eines Körpers.


Position = (x,y,z)'''' ist ein Vektor, der den Punkt beschreibt, von dem aus die Geometrie des Objekts berechnet wird (in Wirklichkeit ein "lokaler Ursprung" für das Objekt).
'''Position = (x,y,z)''' ist ein Vektor, der den Punkt beschreibt, von dem aus die Geometrie des Objekts berechnet wird (in Wirklichkeit ein "lokaler Ursprung" für das Objekt).


'''Yaw-Pitch-Roll = (y,p,r)''' ist ein Tupel, das die Position des Objekts angibt. Die Werte für y,p,r geben den Grad der Drehung um jede der z,y,x-Achsen an (siehe Hinweis).
'''Yaw-Pitch-Roll = (y,p,r)''' ist ein Tupel, das die Position des Objekts angibt. Die Werte für y,p,r geben den Grad der Drehung um jede der z,y,x-Achsen an (siehe Hinweis).
{{clear}}
{{clear}}
{{Code|code|code=
{{Code|code|code=
>>> App.getDocument("Sans_nom").Cylinder.Placement=App.Placement(App.Vector(0,0,0,0), App.Rotation(10,20,30), App.Vector(0,0,0))
>>> App.getDocument("Name_des_Dokuments").Cylinder.Placement=App.Placement(App.Vector(0,0,0,0), App.Rotation(10,20,30), App.Vector(0,0,0))
}}
}}


Line 56: Line 54:
'''Gieren''' = 10 Grad ('''Z''')
'''Gieren''' = 10 Grad ('''Z''')


'''Neigung'''' = 20 Grad ('''Y'''')
'''Neigung''' = 20 Grad ('''Y''')


'''Rollen''' = 30 Grad ('''X''')
'''Rollen''' = 30 Grad ('''X''')




[[Image:Tache_Placement_Lacet_fr_Mini.gif|left]]'''Yaw''' ist die Drehung um die '''Z-Achse''', d.h. eine Drehung von links nach rechts. <br />(The yaw angle is the '''Psi ψ''').
[[Image:Tache_Placement_Lacet_fr_Mini.gif|left]]'''Yaw''' ist die Drehung um die '''Z-Achse''', d.h. eine Drehung von links nach rechts. <br />(Der Gierwinkel wird '''Psi ψ''' genannt).
{{clear}}
{{clear}}


[[Image:Tache_Placement_Tangage_fr_Mini.gif|left]]'''Pitch''' is rotation about the '''Y axis''', that is to say nose-up and nose-down. <br />(The Pitch angle is the '''Phi φ''').
[[Image:Tache_Placement_Tangage_fr_Mini.gif|left]]'''Pitch''' ist die Rotation um die '''Y Achse''', man kann sagen, die Nase hoch und runter. <br />(Der Neigungswinkel wird '''Phi φ''' genannt).
{{clear}}
{{clear}}


[[Image:Tache_Placement_Roulis_fr_Mini.gif|left]]'''Roll''' is rotation about the '''X axis''', that is to say wing up and down. <br />(The Roll angle is the '''Thêta θ''').
[[Image:Tache_Placement_Roulis_fr_Mini.gif|left]]'''Roll''' ist die Rotation um die '''X Achse''', man sagt über die Flügel rollen. <br />(Der Rollwinkel wird '''Thêta θ''' genannt).
{{clear}}
{{clear}}


===Matrix===
===Matrix===
'''Placement = Matrix'''
'''Positionierung = Matrix'''


The third form of '''Placement''' describes the object's position and orientation with a 4x4 affine transformation matrix ([http://en.wikipedia.org/wiki/Affine_transformation Affine Transformation]).
Die dritte Form der '''Positionierung''' beschreibt die Position und Orientierung des Objektes mit einer 4 mal 4 Transformationsmatrix ([https://de.wikipedia.org/wiki/Affine_Abbildung Affine Abbildung]).


'''Matrix''' =
'''Matrix''' =
Line 80: Line 78:
(r21,r22,r23,t2),
(r21,r22,r23,t2),
(r31,r32,r33,t3),
(r31,r32,r33,t3),
(0,0,0,1)) , with rij specifying rotation and ti specifying translation.
(0,0,0,1)) , wobei rij die Rotation und ti die Verschiebung angibt.
{{clear}}
{{clear}}


==Der Platzierungsdialog===
==The Placement Dialog==
Der Platzierungsdialog wird über das Menü '''Bearbeiten''' aufgerufen. Er wird zum präzisen Drehen/Übersetzen von Objekten verwendet. Er wird auch verwendet, wenn wir eine Skizze auf einer "Nicht Standard" Ebene erstellen oder die Ausrichtung einer Skizze auf eine neue Ebene ändern müssen.
The Placement Dialog is invoked from the '''Edit''' menu. It is used to precisely rotate/translate objects. It is also used when we need to create a sketch on a "non standard" plane or change a sketch's orientation to a new plane.
Der Abschnitt '''Schiebung''' passt die Position des Objekts im Raum an.
The '''Translation''' section adjusts the object's location in space.
Der Abschnitt '''Mitte''' passt die Rotationsachse an eine Achse an, die nicht durch den Referenzpunkt des Objekts verläuft.
The '''Center''' section adjusts the rotational axis to one that does not pass through the object's reference point.
The '''Rotation''' section adjusts the rotational angle(s) and the method of specifying those angles.
Der Abschnitt '''Rotation''' stellt den/die Rotationswinkel und die Methode zur Angabe dieser Winkel ein.


Aber während die Elemente innerhalb jedes Abschnitts im Allgemeinen für den Zweck dieses Abschnitts gelten, gibt es auch einige Elemente in einem Abschnitt, die sich auf Elemente in einem anderen Abschnitt auswirken können. Wenn Sie beispielsweise im Abschnitt '''Zentrum''' mit 2 in der 3D-Ansicht ausgewählten Punkten auf die Schaltfläche "Ausgewählte Punkte" klicken, werden nicht nur die Koordinaten-Rotationsboxen '''Zentrum''' mit den Koordinaten des Zentrums zwischen diesen beiden ausgewählten Punkten gefüllt, sondern es wird auch eine benutzerdefinierte Achse entlang der Linie erstellt, die durch diese beiden ausgewählten Punkte im Abschnitt '''Rotation''' definiert ist. In einem anderen Beispiel wird durch Platzieren eines Wertes in der Axial-Rotationsbox und Klicken auf die Schaltfläche "Übernehmen" axial im Abschnitt '''Verschieben''' das Objekt entlang der im Abschnitt '''Rotation''' definierten Achse verschoben/bewegt.
But while the elements within each section generally apply to the purpose of that section there are also some elements in one section that can affect elements in another section. For example, clicking the Selected points button in the '''Center''' section with 2 points selected in the 3d view results in not only populating the '''Center''' coordinate spinboxes with the coordinates of the midpoint between those 2 selected points, but it also creates a custom axis along the line defined by those 2 selected points in the '''Rotation''' section. In another example, placing a value in the Axial spinbox and clicking the Apply axial button in the '''Translation''' section translates (moves) the object along the axis defined in the '''Rotation''' section.

Das Kontrollkästchen '''Inkrementelle Änderungen an der Objektpositionierung anwenden'' ist nützlich, wenn Drehungen/Verschiebungen relativ zur aktuellen Position/Höhe des Objekts und nicht zur ursprünglichen Position/Höhe vorgenommen werden sollen. Das Ankreuzen dieses Kästchens setzt die Dialogeingabefelder auf Null zurück, ändert aber nicht die Orientierung oder Lage des Objekts. Nachfolgende Eingaben ändern zwar die Orientierung/Lage, werden aber von der aktuellen Position des Objekts aus angewendet. Das Aktivieren dieses Kontrollkästchens ist auch bei der Verwendung der Schaltfläche "Gewählte Punkte" nützlich, da es manchmal unerwünschte Positionierungsänderungen verhindern kann.
The '''Apply incremental changes to object placement''' tick box is useful when translations/rotations are to be made relative the object's current position/attitude, rather than to the original position/attitude. Ticking this box resets the dialogue input fields to zero, but does not change the object's orientation or location. Subsequent entries do change the orientation/location, but are applied from the object's current position. Enabling this checkbox is also useful when using the Selected points button as it can sometimes prevent undesired placement changes.


PS: since version 0.17 introduce new object Part, this object have his placement, and the Placement object created in the Part object is incremented with the Part Placement. {{Version|0.17}}
PS: seit Version 0.17 wird das neue Objekt "Part" eingeführt. Dieses Objekt hat eine Positionierungsfunktion und das im Objekt "Part" erstellte Positionierungsobjekt wird mit der "Part" Positionierungsfunktion inkrementiert. {{Version|0.17}}
Mit dem folgenden Code erhält man das "Part" Positionierungsobjekt
For obtain the Part Placement use this code
{{Code|code=
{{Code|code=
import Draft, Part
import Draft, Part
Line 105: Line 103:
}}
}}


Die Schaltfläche '''Ausgewählte Punkte''' wird verwendet, um die Koordinaten in die Koordinaten-Rotationsboxen '''Zentrum''' einzutragen und, wenn 2 oder 3 Punkte ausgewählt sind, zusätzlich eine benutzerdefinierte Rotationsachse im Abschnitt '''Rotation''' zu erstellen.
'''Selected points''' button is used to populate the coordinates in the '''Center''' coordinates spinboxes and (when 2 or 3 points are selected) additionally to create a custom (user-defined) axis of rotation in the '''Rotation''' section. A point can be a vertex, but it can also be any point along an edge or on a face. When you select an edge or face the entire edge or face is selected, but FreeCAD also remembers which point on that face or edge the mouse pointer was hovering over when that edge or face was selected. It is this point's coordinates that get used in the Placement dialog when the '''Selected points''' button is clicked. You might be thinking this isn't a very precise way of selecting a point, and you are correct, but in many cases it is sufficient that the point selected is guaranteed to be on that edge or face. In cases where you need to precisely designate a point to be used you should select a vertex. When there is no vertex in the desired location consider creating one, perhaps in a temporary sketch attached to that face or edge, perhaps using a Draft workbench object, such as a line or point, etc.
Ein Punkt kann ein Scheitelpunkt sein, aber er kann auch ein beliebiger Punkt entlang einer Kante oder auf einer Fläche sein. Wenn Sie eine Kante oder Fläche auswählen, wird die gesamte Kante oder Fläche ausgewählt, aber FreeCAD merkt sich auch, über welchen Punkt auf dieser Fläche oder Kante der Mauszeiger schwebte, als diese Kante oder Fläche ausgewählt wurde.
Es sind die Koordinaten dieses Punktes, die im Positionierungsdialog verwendet werden, wenn die Schaltfläche '''Ausgewählte Punkte''' angeklickt wird. Dies ist keine präzise Art und Weise einen Punkt auszuwählen. Aber in vielen Fällen reicht es aus, dass sich der ausgewählte Punkt garantiert auf dieser Kante oder Fläche befindet.
In Fällen, in denen ein zu verwendender Punkt genau bestimmt werden muss, sollten ein Scheitelpunkt gewählt werden. Wenn an der gewünschten Stelle kein Scheitelpunkt vorhanden ist, sollten einer erstellt werden, z.B. in einer temporären Skizze, die an diese Fläche oder Kante angehängt wird oder unter Verwendung eines "Draft workbench"-Objekts, wie z.B. einer Linie oder eines Punktes usw.


Betrachten wir zunächst den einfachen Fall der Auswahl eines Punktes. Der Arbeitsablauf besteht darin, zunächst den gewünschten Punkt auszuwählen und dann auf die Schaltfläche '''Ausgewählte Punkte''' zu klicken. Die Koordinaten des ausgewählten Punktes werden verwendet, um die X-, Y- und Z-Rotationsboxen innerhalb des Abschnitts '''Zentrum''' zu füllen. Nun wird jede Drehung des Objekts um dieses Rotationszentrum durchgeführt.
Let us first consider the simple case of selecting 1 point. The workflow is to first select the desired point, then click the '''Selected points''' button. The coordinates of the selected point will be used to populate the X, Y, and Z spinboxes within the '''Center''' section. Now any rotation done on the object will about this center of rotation.


Betrachten wir nun den Fall der Auswahl von 2 Punkten. Nun würden 2 gewünschte Punkte ausgewählt und dann auf die Schaltfläche '''Ausgewählte Punkte''' geklickt werden. Die Koordinaten des Mittelpunktes zwischen den beiden ausgewählten Punkten werden in die X-, Y- und Z-Rotationsboxen innerhalb des Abschnitts '''Zentrum''' gelegt. Nun wird jede Drehung des Objekts um dieses Rotationszentrum erfolgen. Aber zusätzlich zum Einrichten der Koordinaten des Abschnitts '''Zentrum''' wird auch eine benutzerdefinierte Achse zum Element '''Achse''' innerhalb des Abschnitts '''Rotation''' hinzugefügt.
Now consider the case of selecting 2 points. You would select the 2 desired points, and then click the '''Selected points''' button. The coordinates of the midpoint between the 2 selected points get placed into the X, Y, and Z spinboxes within the '''Center''' section. Now any rotation done on the object will be about this center of rotation. But in addition to setting up the '''Center''' section coordinates a custom (user-defined) axis is also added to the '''Axis''' element within the '''Rotation''' section. (Note: if you were in Euler rotation mode, the mode gets switched to Rotation with an axis mode and the new custom axis is selected as the current axis of rotation.) Now any rotation done using the new custom axis will be about this axis of rotation. As an added bonus, the distance is measured between the 2 selected points, and this information is given in the Report View. (Note: Hold down the Shift key while clicking the '''Selected points''' button to copy the distance measurement to the clipboard.) By entering this distance into the Axial spinbox in the '''Translation''' section and clicking the '''Apply axial''' button you can translate (move) the object so that the first selected point now occupies the coordinates occupied by the second selected point (at the time the '''Selected points''' button was clicked).
'''Hinweis:''' Wenn der Euler-Rotationsmodus aktiv war, wird der Modus auf Rotation mit einer Achse umgeschaltet und die neue benutzerdefinierte Achse wird als aktuelle Rotationsachse ausgewählt. Nun wird jede Rotation, die unter Verwendung der neuen benutzerdefinierten Achse durchgeführt wird, um diese Rotationsachse erfolgen. Als zusätzlicher Bonus wird der Abstand zwischen den beiden ausgewählten Punkten gemessen und diese Information wird in der Berichtsansicht angezeigt.
'''Hinweis:''' Bleibt die Umschalt-Taste gedrückt, während auf die Schaltfläche '''Ausgewählte Punkte''' geklickt wird, dann wird die Abstandsmessung in die Zwischenablage kopiert.
Wird dieser Abstand in die Axial-Rotationsbox im Abschnitt '''Verschieben''' eingegeben und auf die Schaltfläche '''Übernehmen axial''' geklickt, dann wird das Objekt so verschoben, dass der erste ausgewählte Punkt nun die Koordinaten einnimmt, die der zweite ausgewählte Punkt zu dem Zeitpunkt hatte, als die Schaltfläche '''Ausgewählte Punkte''' angeklickt wurde.


Betrachten wir nun den Fall der Auswahl von 3 Punkten. Nun würden 3 gewünschte Punkte ausgewählt und dann auf die Schaltfläche '''Ausgewählte Punkte''' geklickt werden. Die Koordinaten des ersten ausgewählten Punktes (die Reihenfolge der Auswahl ist hier sehr wichtig) werden in die X-, Y- und Z-Rotationsboxen innerhalb des Abschnitts '''Zentrum''' geschrieben. Da 3 Punkte eine Ebene definieren, ist FreeCAD in der Lage, diese 3 Punkte zu verwenden, um eine neue benutzerdefinierte Drehachse zu erstellen. Sie ist normal, senkrecht, zu dieser definierten Ebene. Wie bei 2 ausgewählten Punkten wird auch in der Berichtsansicht der Abstand zwischen den Punkten angezeigt. Aber diesmal ist es der Abstand zwischen dem 2. und 3. ausgewählten Punkt.
Now consider the case of selecting 3 points. You would select the 3 desired points, and then click the '''Selected points''' button. The coordinates of the first selected point (order of selection is very important here) get placed into the X, Y, and Z spinboxes within the '''Center''' section. Since 3 points define a plane FreeCAD is able to take advantage of that and use those 3 points to create a new custom (user-defined) axis of rotation that is normal (perpendicular) to that defined plane. As with 2 selected points, the distance between points is also shown in the Report View, but this time it is the distance between the 2nd and 3rd selected points. (Note: Hold down the Shift key while clicking '''Selected points''' button -- Shift + Click -- to copy the angle measurement to the clipboard.) Additionally, the angle between the 2nd and 3rd points is also measured and displayed in the Report View. By entering this angle into the '''Angle''' spinbox within the '''Rotation''' section we can very precisely rotate the object such that now the 2nd selected point is in alignment with the coordinates occupied by the 3rd selected point. (Note: you might want to increase the number of digits used within the Edit menu -> Preferences -> General -> Units -> Number of decimals spinbox if you desire more precision.)
'''Hinweis:''' Bleibt die Umschalttaste gedrückt, während auf die Schaltfläche '''Ausgewählte Punkte''' geklickt wird, dann wird die Winkelmessung in die Zwischenablage kopiert. Zusätzlich wird auch der Winkel zwischen dem 2. und 3. Punkt gemessen und in der Berichtsansicht angezeigt. Durch Eingabe dieses Winkels in die Rotationsbox '''Winkel''' innerhalb des Abschnittes '''Drehung''' kann das Objekt genau gedreht werden, so dass jetzt der 2. ausgewählte Punkt zu den Koordinaten, die der 3. ausgewählte Punkt einnimmt, ausgerichtet ist.
'''Hinweis:''' die Anzahl der verwendeten Ziffern im Menü Bearbeiten -> Voreinstellungen -> Allgemein -> Einheiten -> Anzahl der Dezimalstellen kann erhöht werden, wenn die Präzision erhöht werden soll.


==Examples==
==Beispiele==
Rotationen um eine einzelne Achse:
Rotations about a single axis:


[[Image:RotationAboutZBefore.png|600px|left|Before Rotation]] Before Rotation (top view) {{clear}}
[[Image:RotationAboutZBefore.png|600px|left|Before Rotation]] Vor der Rotation (Draufsicht) {{clear}}
[[Image:RotationAboutZAfter.png|600px|right|After Rotation about Z]] After Rotation about Z (top view) {{clear}}
[[Image:RotationAboutZAfter.png|600px|right|After Rotation about Z]] Nach der Rotation um Z (Draufsicht) {{clear}}
[[Image:RotationAboutYXAfter.png|600px|right|After Rotation about y=x]] After Rotation about y=x (right view) {{clear}}
[[Image:RotationAboutYXAfter.png|600px|right|After Rotation about y=x]] Nach der Rotation um y=x (Ansicht von rechts) {{clear}}
Rotation with offset centre point:
Rotation mit versetztem Zentrum:


[[Image:RotationOffsetBefore.png|600px|left|Before Rotation]] Before Rotation (top view) {{clear}}
[[Image:RotationOffsetBefore.png|600px|left|Before Rotation]] Vor der Rotation (Draufsicht) {{clear}}
[[Image:RotationOffsetAfter.png|600px|right|After Rotation about Z]] After Rotation about Z (top view) {{clear}}
[[Image:RotationOffsetAfter.png|600px|right|After Rotation about Z]] Nach der Rotation um Z (Draufsicht) {{clear}}
Rotation using Euler angles:
Rotation mit Euler-Winkeln:


[[Image:RotationEulerBefore.png|600px|left|Before Rotation]] Before Rotation {{clear}}
[[Image:RotationEulerBefore.png|600px|left|Before Rotation]] Vor der Rotation {{clear}}
[[Image:RotationEulerAfter.png|600px|right|After Rotation]] After Rotation {{clear}}
[[Image:RotationEulerAfter.png|600px|right|After Rotation]] Nach der Rotation {{clear}}
==Placement.Base vs Shape Definition==
==Placement.Base verglichen mit Shape Definition==
Placement is not the only way to position a shape in space. Note the Python console
Positionierung ist nicht der einzige Weg, eine Form im Raum zu positionieren. Siehe die Python Konsole
in this image:
in diesem Bild:


[[Image:2Placements800.png|frame|left|2 Shapes with Same Placement]]{{clear}}
[[Image:2Placements800.png|frame|left|2 Formen mit gleicher Platzierung]]{{clear}}


Beide Würfel haben den selben Wert zur Positionierung, befinden sich aber an verschiedenen Orten! Das geschieht, weil die beiden Formen durch unterschiedliche Knoten (Kurven in komplexeren Formen) bestimmt werden. Zu den beiden Formen in der Illustration oben:
Both cubes have the same value for Placement, but are in different locations! This is
because the 2 shapes are defined by different vertices (curves in more complex shapes). For the 2 shapes in the above illustration:


>>> ev = App.ActiveDocument.Extrude.Shape.Vertexes
>>> ev = App.ActiveDocument.Extrude.Shape.Vertexes
Line 167: Line 172:
>>>
>>>
Die Knoten (oder Vektoren), die die Form bestimmen verwenden das Placement.Base Attribut als deren Ursprung. Wenn du also eine Form um 10 Einheiten entlang der '''X''' Achse verschieben möchtest, könntest du 10 zu den '''X''' Koordinaten aller Knoten hinzufügen, oder du kannst Placement.Base
The Vertices (or Vectors) that define the shape use the Placement.Base attribute as
zu (10,0,0) setzen.
their origin. So if you want to move a shape 10 units along the '''X''' axis, you could
add 10 to the '''X''' coordinates of all the Vertices or you could set Placement.Base
to (10,0,0).
==Verwendung von "Mitte" zur Steuerung der Rotationsachse==
==Using "Center" to Control Axis of Rotation==
By default, the axis of rotation isn't really the x/y/z axis. It is a line parallel to the selected axis, but passing through the reference point (Placement.Base) of the object to be rotated. This can be changed by using the Center fields in the Placement dialog or, in scripts, by using the Center parameter of the FreeCAD.Placement constructor.
Standardmäßig ist die Rotationsachse nicht wirklich die x/y/z Achse. Sie ist eine Linie, die parallel zur ausgewählten Achse verläuft, aber durch den Referenzpunkt (Placement.Base) des zu drehenden Objekts verläuft. Dies kann durch die Verwendung der Felder Zentrum im Dialogfeld Platzierung oder, in Skripten, durch Verwendung des Parameters Zentrum des Konstruktors FreeCAD.Placement geändert werden.


For example, suppose we have a box (below) positioned at (20,20,10).
Nehmen wir zum Beispiel an, wir haben einen Quader (unten), der auf (20,20,10) positioniert ist.
[[Image:LocalZBefore2.png|frame|center|Before Rotation]]{{clear}}
[[Image:LocalZBefore2.png|frame|center|Vor Drehung]]{{clear}}
Wir möchten den Quader um seine eigene vertikale Mittelachse (d.h. das lokale Z) drehen, wobei er die gleiche Position beibehält. Dies lässt sich leicht erreichen, indem wir einen Mittelpunktswert angeben, der den Koordinaten des Quadermittelpunkts (25,25,15) entspricht.
We wish to spin the box around it's own vertical centre line (ie local Z), while keeping it the same position. We can easily achieve this by specifying a Center value equal to the coordinates of the box's central point (25,25,15).
[[Image:LocalZAfter2.png|frame|center|After Rotation]]{{clear}}
[[Image:LocalZAfter2.png|frame|center|Nach Drehung]]{{clear}}

In a script, we would do:
In einem Skript würden wir das tun:
{{Code|code=
{{Code|code=
import FreeCAD
import FreeCAD
Line 192: Line 195:
obj.Placement = newplace # spin the box
obj.Placement = newplace # spin the box
}}
}}
Same script with the file example [http://forum.freecadweb.org/download/file.php?id=1651 RotateCoG2.fcstd] (discussion on the [http://forum.freecadweb.org/viewtopic.php?f=3&t=3950#p31052 forum])
Das selbe Skript mit der Beispieldatei [http://forum.freecadweb.org/download/file.php?id=1651 RotateCoG2.fcstd] (Diskussion im [http://forum.freecadweb.org/viewtopic.php?f=3&t=3950#p31052 Forum])
{{Code|code=
{{Code|code=
import FreeCAD
import FreeCAD
Line 205: Line 208:
}}
}}


==Notes==
==Hinweise==
* Axis and Angle can also be expressed as a [http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation quaternion].
* Achse und Winkel können auch als [https://de.wikipedia.org/wiki/Quaternion Quaternionen] ausgedrückt werden.
* Der Referenzpunkt eines Objektes ändert sich, abhängit vom Objekt selbst. Beispiele allgemeiner Objekte:
* The reference point of an object varies depending on the object. Some examples for common objects:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!Objekt!!Referenzpunkt
!Object!!Reference Point
|- align="left"
|- align="left"
|Part.Box ||left (minx), front (miny), bottom (minz) vertex
|Part.Box ||linker (minx), vorderer (miny), unterer (minz) Scheitelpunkt
|- align="left"
|- align="left"
|Part.Sphere||center of the sphere (ie centre of bounding box)
|Part.Sphere||Mittelpunkt der Kugel (d.h. Zentrum des Begrenzungskastens)
|- align="left"
|- align="left"
|Part.Cylinder||center of the bottom face
|Part.Cylinder||Mitte der unteren Fläche
|- align="left"
|- align="left"
|Part.Cone||center of bottom face (or apex if bottom radius is 0)
|Part.Cone||Mitte der unteren Fläche (oder Scheitelpunkt, wenn der untere Radius 0 ist)
|- align="left"
|- align="left"
|Part.Torus||center of the torus
|Part.Torus||Zentrum eines Torus
|- align="left"
|- align="left"
|Features derived from Sketches||the Feature inherits the Position of the underlying Sketch. Sketches always start with Position = (0,0,0). This position corresponds to the origin in the sketch.
|Von Skizzen abgeleitete Merkmale||das Merkmal erbt die Position der zugrundeliegenden Skizze. Skizzen beginnen immer mit der Position = (0,0,0). Diese Position entspricht dem Ursprung in der Skizze.
|}
|}


==Issues==
==Probleme==


* Ab Version 0.13 wurde die Aktualisierung der Positionierungseigenschaften auf der Registerkarte Daten für Objekte deaktiviert, die mit PartDesign erstellt wurden, mit Ausnahme der ersten Skizze, aus der das Solid erstellt wird. Daher kann die Positionierung eines Solids, das in PartDesign aus einer Skizze erstellt wurde, nur geändert werden, indem die Positionierungsparameter der ursprünglichen Konstruktionsskizze (der ersten Skizze), aus der das Solid erstellt wurde, angepasst werden.
* As of version 0.13, update of Placement properties in the Data tab has been disabled for objects created with PartDesign, except for the initial sketch from which the solid will be created. Therefore the Placement of a solid created in PartDesign from a sketch can only be altered by adjusting Placement parameters of the initial construction sketch (the first sketch) from which the solid was created.
* Die Funktion der Positionierung wird eventuell im Arbeitsbereich Zusammenbau behandelt.
* Placement functionality will eventually be handled in the Assembly workbench.


==More==
==Weiteres==


*This tutorial: [[Aeroplane|Aeroplane]] covers the mechanics of changing an object's Placement extensively.
*Das Tutorial: [[Aeroplane|Flugzeug]] deckt die Vorghensweise der Positionierung eines Objekts umfassend ab.
*A step-by-step explanation of the Placement Dialog can be found here [[Tasks_Placement|Tasks_Placement]].
*Eine Schritt-für-Schritt-Erklärung des Positionierungsdialogs finden Sie hier [[Tasks_Placement|Tasks_Placement]].


{{Userdocnavi/de}}
<div class="mw-translate-fuzzy">
[[Category:User Documentation/de]]
</div>

Revision as of 10:00, 4 June 2020

Platzierung ist wie FreeCAD den Standort und die Lage (Orientierung) eines Objekts im Raum angibt. Die Platzierung kann in vielfältigen Formen angegeben und über Skripten, den Eigenschaftenbereich oder den Platzierungsdialog (Bearbeiten Menü) bearbeitet werden.

=Zugriff auf das Platzierungsattribut

Auf die Platzierungsattribute eines Objekts kann auf 3 Arten zugegriffen und verändert werden:

Platzierung im Eigenschaftenpaneel
Skriptplatzierung als y/p/r und Matrix und seine API.
Platzierungsdialog Rotationsachse mit Winkel

Formen der Platzierung

Die Platzierung wird intern als eine Position und eine Rotation (Drehachse und Winkel in ein Quaternion umgewandelt Quaternionen und räumliche Rotation, Quaternionen) gespeichert. Während es mehrere Formen gibt, um eine Rotation festzulegen, z.B. mit einem Rotationszentrum, wird dies nur zur Beeinflussung der Rotationsberechnung verwendet und nicht für spätere Operationen gespeichert. Wenn eine Drehachse von (1,1,1,1) angegeben ist, kann sie ebenfalls normalisiert werden, wenn sie im Quaternion gespeichert ist und als (0.58, 0.58, 0.58, 0.58, 0.58) erscheinen, wenn das Objekt später durchsucht wird.

Winkel, Achse und Position

Platzierung = [Winkel, Achse, Position]

Die erste Form der Platzierung fixiert die Position eines Objekts im Raum und beschreibt seine Ausrichtung als eine einzige Drehung um eine Achse.

Winkel = r ist ein Skalar, der den Grad der Drehung des Objekts um die Achse anzeigt. Wird zwar als Grad eingegeben, wird aber intern als Bogenmaß gespeichert.

Achse = (ax,ay,az) ist ein Vektor, der eine Drehachse beschreibt (siehe Hinweis zur Drehachse). Beispiele sind:

   (1,0,0,0) ==> um die X-Achse.
   (0,1,0) ==> um die Y-Achse.
   (0,0,1) ==> um die Z-Achse
   (0.71,0.71,71,0) ==> um die Linie y=x.

Beachte, dass es auch möglich ist, ein Objekt entlang dieser Drehachse (Axialbewegung) zu verschieben (bewegen), indem Du den Bewegungsabstand in der Axialspinbox eingibst und auf die Schaltfläche Apply axial klickst. (Eine Möglichkeit, sich eine axiale Bewegung vorzustellen, ist, an ein Flugzeug zu denken, bei dem sich ein Propeller auf der Nase dreht - der Propeller dreht sich um eine Drehachse, während sich das Flugzeug entlang derselben Achse bewegt.) Die Werte im Vektor können als die relative Bewegungsgröße betrachtet werden, die in dieser Richtung angewendet wird. So wird beispielsweise im Fall y=x (0.71,0.71,71,0) der in der Axialspinbox enthaltene Wert gleichermaßen auf die X- und Y-Richtung angewendet, aber es findet keine Bewegung in der Z-Richtung statt.

Position = (x,y,z) ist ein Vektor, der den Punkt beschreibt, von dem aus die Geometrie des Objekts berechnet wird (in Wirklichkeit ein "lokaler Ursprung" für das Objekt). Beachten Sie, dass in Skripten Placement.Base verwendet wird, um die Positionskomponente einer Platzierung zu bezeichnen. Der Eigenschaftseditor ruft diesen Wert "Position" und der Positionierungsdialog nennt ihn "Translation".

Position und Gieren, Neigen und Rollen

Positionierungsdialog Euler Winkel

Positionierung = [Position, Gieren-Neigen-Rollen]

Die zweite Form der Positionierung fixiert die Position eines Objekts im Raum mit einer Position (wie in der ersten Form), beschreibt aber seine Ausrichtung mit den Winkeln Gieren, Neigen und Rollen (Gieren, Neigen, Rollen). Diese Winkel werden manchmal als Euler-Winkel oder Tait-Bryan-Winkel bezeichnet (Euler-Winkel). Gieren, Neigen und Rollen sind gängige Luftfahrtbegriffe für die Orientierung (oder Haltung) eines Körpers.

Position = (x,y,z) ist ein Vektor, der den Punkt beschreibt, von dem aus die Geometrie des Objekts berechnet wird (in Wirklichkeit ein "lokaler Ursprung" für das Objekt).

Yaw-Pitch-Roll = (y,p,r) ist ein Tupel, das die Position des Objekts angibt. Die Werte für y,p,r geben den Grad der Drehung um jede der z,y,x-Achsen an (siehe Hinweis).

>>> App.getDocument("Name_des_Dokuments").Cylinder.Placement=App.Placement(App.Vector(0,0,0,0), App.Rotation(10,20,30), App.Vector(0,0,0))

App.Rotation(10,20,30) = Euler Winkel

Gieren = 10 Grad (Z)

Neigung = 20 Grad (Y)

Rollen = 30 Grad (X)


Yaw ist die Drehung um die Z-Achse, d.h. eine Drehung von links nach rechts.
(Der Gierwinkel wird Psi ψ genannt).

Pitch ist die Rotation um die Y Achse, man kann sagen, die Nase hoch und runter.
(Der Neigungswinkel wird Phi φ genannt).

Roll ist die Rotation um die X Achse, man sagt über die Flügel rollen.
(Der Rollwinkel wird Thêta θ genannt).

Matrix

Positionierung = Matrix

Die dritte Form der Positionierung beschreibt die Position und Orientierung des Objektes mit einer 4 mal 4 Transformationsmatrix (Affine Abbildung).

Matrix =

  ((r11,r12,r13,t1),
   (r21,r22,r23,t2),
   (r31,r32,r33,t3),
   (0,0,0,1)) , wobei rij die Rotation und ti die Verschiebung angibt. 

Der Platzierungsdialog=

Der Platzierungsdialog wird über das Menü Bearbeiten aufgerufen. Er wird zum präzisen Drehen/Übersetzen von Objekten verwendet. Er wird auch verwendet, wenn wir eine Skizze auf einer "Nicht Standard" Ebene erstellen oder die Ausrichtung einer Skizze auf eine neue Ebene ändern müssen.

Der Abschnitt Schiebung passt die Position des Objekts im Raum an. Der Abschnitt Mitte passt die Rotationsachse an eine Achse an, die nicht durch den Referenzpunkt des Objekts verläuft. Der Abschnitt Rotation stellt den/die Rotationswinkel und die Methode zur Angabe dieser Winkel ein.

Aber während die Elemente innerhalb jedes Abschnitts im Allgemeinen für den Zweck dieses Abschnitts gelten, gibt es auch einige Elemente in einem Abschnitt, die sich auf Elemente in einem anderen Abschnitt auswirken können. Wenn Sie beispielsweise im Abschnitt Zentrum mit 2 in der 3D-Ansicht ausgewählten Punkten auf die Schaltfläche "Ausgewählte Punkte" klicken, werden nicht nur die Koordinaten-Rotationsboxen Zentrum mit den Koordinaten des Zentrums zwischen diesen beiden ausgewählten Punkten gefüllt, sondern es wird auch eine benutzerdefinierte Achse entlang der Linie erstellt, die durch diese beiden ausgewählten Punkte im Abschnitt Rotation definiert ist. In einem anderen Beispiel wird durch Platzieren eines Wertes in der Axial-Rotationsbox und Klicken auf die Schaltfläche "Übernehmen" axial im Abschnitt Verschieben das Objekt entlang der im Abschnitt Rotation definierten Achse verschoben/bewegt.

Das Kontrollkästchen 'Inkrementelle Änderungen an der Objektpositionierung anwenden ist nützlich, wenn Drehungen/Verschiebungen relativ zur aktuellen Position/Höhe des Objekts und nicht zur ursprünglichen Position/Höhe vorgenommen werden sollen. Das Ankreuzen dieses Kästchens setzt die Dialogeingabefelder auf Null zurück, ändert aber nicht die Orientierung oder Lage des Objekts. Nachfolgende Eingaben ändern zwar die Orientierung/Lage, werden aber von der aktuellen Position des Objekts aus angewendet. Das Aktivieren dieses Kontrollkästchens ist auch bei der Verwendung der Schaltfläche "Gewählte Punkte" nützlich, da es manchmal unerwünschte Positionierungsänderungen verhindern kann.

PS: seit Version 0.17 wird das neue Objekt "Part" eingeführt. Dieses Objekt hat eine Positionierungsfunktion und das im Objekt "Part" erstellte Positionierungsobjekt wird mit der "Part" Positionierungsfunktion inkrementiert. introduced in version 0.17 Mit dem folgenden Code erhält man das "Part" Positionierungsobjekt

import Draft, Part
sel = FreeCADGui.Selection.getSelection()
print sel[0].Placement
print sel[0].getGlobalPlacement()   # return the GlobalPlacement
print sel[0].getParentGeoFeatureGroup() # return the GeoFeatureGroup, ex:  Body or a Part.
print  "____________________"

Die Schaltfläche Ausgewählte Punkte wird verwendet, um die Koordinaten in die Koordinaten-Rotationsboxen Zentrum einzutragen und, wenn 2 oder 3 Punkte ausgewählt sind, zusätzlich eine benutzerdefinierte Rotationsachse im Abschnitt Rotation zu erstellen. Ein Punkt kann ein Scheitelpunkt sein, aber er kann auch ein beliebiger Punkt entlang einer Kante oder auf einer Fläche sein. Wenn Sie eine Kante oder Fläche auswählen, wird die gesamte Kante oder Fläche ausgewählt, aber FreeCAD merkt sich auch, über welchen Punkt auf dieser Fläche oder Kante der Mauszeiger schwebte, als diese Kante oder Fläche ausgewählt wurde. Es sind die Koordinaten dieses Punktes, die im Positionierungsdialog verwendet werden, wenn die Schaltfläche Ausgewählte Punkte angeklickt wird. Dies ist keine präzise Art und Weise einen Punkt auszuwählen. Aber in vielen Fällen reicht es aus, dass sich der ausgewählte Punkt garantiert auf dieser Kante oder Fläche befindet. In Fällen, in denen ein zu verwendender Punkt genau bestimmt werden muss, sollten ein Scheitelpunkt gewählt werden. Wenn an der gewünschten Stelle kein Scheitelpunkt vorhanden ist, sollten einer erstellt werden, z.B. in einer temporären Skizze, die an diese Fläche oder Kante angehängt wird oder unter Verwendung eines "Draft workbench"-Objekts, wie z.B. einer Linie oder eines Punktes usw.

Betrachten wir zunächst den einfachen Fall der Auswahl eines Punktes. Der Arbeitsablauf besteht darin, zunächst den gewünschten Punkt auszuwählen und dann auf die Schaltfläche Ausgewählte Punkte zu klicken. Die Koordinaten des ausgewählten Punktes werden verwendet, um die X-, Y- und Z-Rotationsboxen innerhalb des Abschnitts Zentrum zu füllen. Nun wird jede Drehung des Objekts um dieses Rotationszentrum durchgeführt.

Betrachten wir nun den Fall der Auswahl von 2 Punkten. Nun würden 2 gewünschte Punkte ausgewählt und dann auf die Schaltfläche Ausgewählte Punkte geklickt werden. Die Koordinaten des Mittelpunktes zwischen den beiden ausgewählten Punkten werden in die X-, Y- und Z-Rotationsboxen innerhalb des Abschnitts Zentrum gelegt. Nun wird jede Drehung des Objekts um dieses Rotationszentrum erfolgen. Aber zusätzlich zum Einrichten der Koordinaten des Abschnitts Zentrum wird auch eine benutzerdefinierte Achse zum Element Achse innerhalb des Abschnitts Rotation hinzugefügt. Hinweis: Wenn der Euler-Rotationsmodus aktiv war, wird der Modus auf Rotation mit einer Achse umgeschaltet und die neue benutzerdefinierte Achse wird als aktuelle Rotationsachse ausgewählt. Nun wird jede Rotation, die unter Verwendung der neuen benutzerdefinierten Achse durchgeführt wird, um diese Rotationsachse erfolgen. Als zusätzlicher Bonus wird der Abstand zwischen den beiden ausgewählten Punkten gemessen und diese Information wird in der Berichtsansicht angezeigt. Hinweis: Bleibt die Umschalt-Taste gedrückt, während auf die Schaltfläche Ausgewählte Punkte geklickt wird, dann wird die Abstandsmessung in die Zwischenablage kopiert. Wird dieser Abstand in die Axial-Rotationsbox im Abschnitt Verschieben eingegeben und auf die Schaltfläche Übernehmen axial geklickt, dann wird das Objekt so verschoben, dass der erste ausgewählte Punkt nun die Koordinaten einnimmt, die der zweite ausgewählte Punkt zu dem Zeitpunkt hatte, als die Schaltfläche Ausgewählte Punkte angeklickt wurde.

Betrachten wir nun den Fall der Auswahl von 3 Punkten. Nun würden 3 gewünschte Punkte ausgewählt und dann auf die Schaltfläche Ausgewählte Punkte geklickt werden. Die Koordinaten des ersten ausgewählten Punktes (die Reihenfolge der Auswahl ist hier sehr wichtig) werden in die X-, Y- und Z-Rotationsboxen innerhalb des Abschnitts Zentrum geschrieben. Da 3 Punkte eine Ebene definieren, ist FreeCAD in der Lage, diese 3 Punkte zu verwenden, um eine neue benutzerdefinierte Drehachse zu erstellen. Sie ist normal, senkrecht, zu dieser definierten Ebene. Wie bei 2 ausgewählten Punkten wird auch in der Berichtsansicht der Abstand zwischen den Punkten angezeigt. Aber diesmal ist es der Abstand zwischen dem 2. und 3. ausgewählten Punkt. Hinweis: Bleibt die Umschalttaste gedrückt, während auf die Schaltfläche Ausgewählte Punkte geklickt wird, dann wird die Winkelmessung in die Zwischenablage kopiert. Zusätzlich wird auch der Winkel zwischen dem 2. und 3. Punkt gemessen und in der Berichtsansicht angezeigt. Durch Eingabe dieses Winkels in die Rotationsbox Winkel innerhalb des Abschnittes Drehung kann das Objekt genau gedreht werden, so dass jetzt der 2. ausgewählte Punkt zu den Koordinaten, die der 3. ausgewählte Punkt einnimmt, ausgerichtet ist. Hinweis: die Anzahl der verwendeten Ziffern im Menü Bearbeiten -> Voreinstellungen -> Allgemein -> Einheiten -> Anzahl der Dezimalstellen kann erhöht werden, wenn die Präzision erhöht werden soll.

Beispiele

Rotationen um eine einzelne Achse:

Before Rotation
Before Rotation

Vor der Rotation (Draufsicht)

After Rotation about Z
After Rotation about Z

Nach der Rotation um Z (Draufsicht)

After Rotation about y=x
After Rotation about y=x

Nach der Rotation um y=x (Ansicht von rechts)

Rotation mit versetztem Zentrum:

Before Rotation
Before Rotation

Vor der Rotation (Draufsicht)

After Rotation about Z
After Rotation about Z

Nach der Rotation um Z (Draufsicht)

Rotation mit Euler-Winkeln:

Before Rotation
Before Rotation

Vor der Rotation

After Rotation
After Rotation

Nach der Rotation

Placement.Base verglichen mit Shape Definition

Positionierung ist nicht der einzige Weg, eine Form im Raum zu positionieren. Siehe die Python Konsole in diesem Bild:

2 Formen mit gleicher Platzierung

Beide Würfel haben den selben Wert zur Positionierung, befinden sich aber an verschiedenen Orten! Das geschieht, weil die beiden Formen durch unterschiedliche Knoten (Kurven in komplexeren Formen) bestimmt werden. Zu den beiden Formen in der Illustration oben:

 >>> ev = App.ActiveDocument.Extrude.Shape.Vertexes
 >>> for v in ev: print v.X,",",v.Y,",",v.Z
 ... 
 30.0,30.0,0.0
 30.0,30.0,10.0
 40.0,30.0,0.0
 40.0,30.0,10.0
 40.0,40.0,0.0
 40.0,40.0,10.0
 30.0,40.0,0.0
 30.0,40.0,10.0
 >>> e1v = App.ActiveDocument.Extrude001.Shape.Vertexes
 >>> for v in e1v: print v.X,",",v.Y,",",v.Z
 ... 
 0.0,10.0,0.0
 0.0,10.0,10.0
 10.0,10.0,0.0
 10.0,10.0,10.0
 10.0,0.0,0.0
 10.0,0.0,10.0
 0.0,0.0,0.0
 0.0,0.0,10.0
 >>> 
 

Die Knoten (oder Vektoren), die die Form bestimmen verwenden das Placement.Base Attribut als deren Ursprung. Wenn du also eine Form um 10 Einheiten entlang der X Achse verschieben möchtest, könntest du 10 zu den X Koordinaten aller Knoten hinzufügen, oder du kannst Placement.Base zu (10,0,0) setzen.

Verwendung von "Mitte" zur Steuerung der Rotationsachse

Standardmäßig ist die Rotationsachse nicht wirklich die x/y/z Achse. Sie ist eine Linie, die parallel zur ausgewählten Achse verläuft, aber durch den Referenzpunkt (Placement.Base) des zu drehenden Objekts verläuft. Dies kann durch die Verwendung der Felder Zentrum im Dialogfeld Platzierung oder, in Skripten, durch Verwendung des Parameters Zentrum des Konstruktors FreeCAD.Placement geändert werden.

Nehmen wir zum Beispiel an, wir haben einen Quader (unten), der auf (20,20,10) positioniert ist.

Vor Drehung

Wir möchten den Quader um seine eigene vertikale Mittelachse (d.h. das lokale Z) drehen, wobei er die gleiche Position beibehält. Dies lässt sich leicht erreichen, indem wir einen Mittelpunktswert angeben, der den Koordinaten des Quadermittelpunkts (25,25,15) entspricht.

Nach Drehung

In einem Skript würden wir das tun:

import FreeCAD
obj = App.ActiveDocument.Box                       # our box
rot = FreeCAD.Rotation(FreeCAD.Vector(0,0,1),45)   # 45° about Z
#rot = FreeCAD.Rotation(FreeCAD.Vector(1,0,1),45)   # 45° about X and 45° about Z
#rot = FreeCAD.Rotation(10,20,30)                   # here example with Euler angle Yaw = 10 degrees (Z), Pitch = 20 degrees (Y), Roll = 30 degrees (X) 
centre = FreeCAD.Vector(25,25,15)                  # central point of box 
pos = obj.Placement.Base                           # position point of box
newplace = FreeCAD.Placement(pos,rot,centre)       # make a new Placement object
obj.Placement = newplace                           # spin the box

Das selbe Skript mit der Beispieldatei RotateCoG2.fcstd (Diskussion im Forum)

import FreeCAD
obj = App.ActiveDocument.Extrude                    # our box
rot = FreeCAD.Rotation(FreeCAD.Vector(0,0,1),45)    # 45 about Z
#rot = FreeCAD.Rotation(FreeCAD.Vector(1,0,1),45)    # 45° about X and 45° about Z
#rot = FreeCAD.Rotation(10,20,30)                    # here example with Euler angle Yaw = 10 degrees (Z), Pitch = 20 degrees (Y), Roll = 30 degrees (X) 
centre = FreeCAD.Vector(25,25,0)                    # "centre" of rotation (where local Z cuts XY)
pos = obj.Placement.Base                            # original placement of obj
newplace = FreeCAD.Placement(pos,rot,centre)        # make a new Placement object
obj.Placement = newplace                            # spin the box

Hinweise

  • Achse und Winkel können auch als Quaternionen ausgedrückt werden.
  • Der Referenzpunkt eines Objektes ändert sich, abhängit vom Objekt selbst. Beispiele allgemeiner Objekte:
Objekt Referenzpunkt
Part.Box linker (minx), vorderer (miny), unterer (minz) Scheitelpunkt
Part.Sphere Mittelpunkt der Kugel (d.h. Zentrum des Begrenzungskastens)
Part.Cylinder Mitte der unteren Fläche
Part.Cone Mitte der unteren Fläche (oder Scheitelpunkt, wenn der untere Radius 0 ist)
Part.Torus Zentrum eines Torus
Von Skizzen abgeleitete Merkmale das Merkmal erbt die Position der zugrundeliegenden Skizze. Skizzen beginnen immer mit der Position = (0,0,0). Diese Position entspricht dem Ursprung in der Skizze.

Probleme

  • Ab Version 0.13 wurde die Aktualisierung der Positionierungseigenschaften auf der Registerkarte Daten für Objekte deaktiviert, die mit PartDesign erstellt wurden, mit Ausnahme der ersten Skizze, aus der das Solid erstellt wird. Daher kann die Positionierung eines Solids, das in PartDesign aus einer Skizze erstellt wurde, nur geändert werden, indem die Positionierungsparameter der ursprünglichen Konstruktionsskizze (der ersten Skizze), aus der das Solid erstellt wurde, angepasst werden.
  • Die Funktion der Positionierung wird eventuell im Arbeitsbereich Zusammenbau behandelt.

Weiteres

  • Das Tutorial: Flugzeug deckt die Vorghensweise der Positionierung eines Objekts umfassend ab.
  • Eine Schritt-für-Schritt-Erklärung des Positionierungsdialogs finden Sie hier Tasks_Placement.