Placement/it: Difference between revisions

From FreeCAD Documentation
No edit summary
(Created page with " (1,0,0) ==> sull'asse '''X''' (0,1,0) ==> sull'asse '''Y''' (0,0,1) ==> sull'asse '''Z''' (0.71,0.71,0) ==> sulla linea '''y=x'''")
 
(25 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
==Descrizione==


<span id="Overview"></span>
''' Placement''' (Posizionamento) è la funzione utilizzata da FreeCAD per specificare la localizzazione (dove si trova) e l'assetto (orientamento) di un oggetto nello spazio. Placement può essere specificato in diversi modi e manipolato tramite [[Python_scripting_tutorial/it#Vettori e posizionamenti|script]], tramite la scheda delle Proprietà oppure il dialogo '''Placement''' del menu '''Modifica'''.
==Panoramica==

===Accedere agli attributi di Placement===
'''Posizionamento''' è il modo in cui FreeCAD specifica la posizione e l'orientamento di un oggetto nello spazio. Il posizionamento può essere specificato in più forme e manipolato tramite [[Python_scripting_tutorial#Vectors_and_placements|scripting]], l'[[Property_editor/it|editor di proprietà]] o selezionando {{MenuCommand|Modifica → Posizionamento...}} per aprire [[Std_Placement/it|Pannello azioni di Posizionamento]].


<span id="Accessing_the_Placement_Attribute"></span>
Gli attributi di Posizionamento di un oggetto sono accessibili in tre modi:
===Accesso all'Attributo di Posizionamento===


È possibile accedere e modificare gli attributi di Posizionamento di un oggetto in 3 modi:
[[Image:PlacementPropertiesv10-800x800.png|frame|left|Placement nella scheda delle Proprietà]]

[[Image:PlacementPropertiesv10-800x800.png|frame|left|Posizionamento nell'editor delle proprietà]]
{{clear}}
{{clear}}


Line 14: Line 17:
{{clear}}
{{clear}}


Il menu Modifica Posizionamento
[[Image:PlacementDialogv10.png|frame|left|Pannello azioni di Posizionamento]]
[[Image:FreeCAD_Menu_Edition_Positionnement.png|256px|Il menu Modifica Posizionamento]]


che apre e mostra lo strumento '''Azioni di Posizionamento'''.
[[Image:PlacementDialogv10.png|frame|left|La finestra di dialogo di Placement Rotazione con angolo]]
{{clear}}
{{clear}}


<span id="Forms_of_Placement"></span>
==Forme di posizionamento==


Il posizionamento viene memorizzato internamente come posizione e rotazione (asse di rotazione e angolo trasformati in un [https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation quaternione]). Sebbene esistano diversi moduli per specificare una rotazione, ad esempio con un centro di rotazione, questo viene utilizzato solo per influenzare il calcolo della rotazione e non viene memorizzato per operazioni successive. Allo stesso modo, se viene specificato un asse di rotazione di (1,1,1), può essere normalizzato quando memorizzato nel quaternione e apparire come (0.58, 0.58, 0.58) quando si esplora successivamente l'oggetto.


<span id="Angle,_Axis_and_Position"></span>
==Tipi di posizionamento==
===Angolo, Asse e Posizione===
Internamente il posizionamento viene memorizzato come una posizione, e una rotazione (asse di rotazione e angolo trasformati in un quaternione [https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation]). Sebbene ci siano diversi modi di specificare una rotazione, per esempio con un centro di rotazione, questo è usato solo per influenzare il calcolo della rotazione e non viene memorizzato per le operazioni successive. Allo stesso modo, se viene specificato un asse di rotazione (1,1,1), esso può essere normalizzato se conservato nel quaternione e in seguito apparire nella forma (0.58, 0.58, 0.58) durante l'esplorazione dell'oggetto


===Angolo, Assi e Posizione===
'''Placement=[Angle, Axis, Position]'''
'''Placement=[Angle, Axis, Position]'''


La prima forma di '''Placement''' stabilisce la Posizione di un oggetto nello spazio e descrive il suo orientamento come una singola rotazione attorno ad un asse.
La prima forma di '''Placement''' stabilisce la Posizione di un oggetto nello spazio e descrive il suo orientamento come una singola rotazione attorno ad un asse.

'''Angle = r''' : è uno scalare che indica la quantità di rotazione dell'oggetto su Axis. Inserito in gradi, ma memorizzato internamente in radianti.
'''Angle = r''' è uno scalare che indica la quantità di rotazione dell'oggetto attorno all'''Asse'''. Inserito come gradi, ma memorizzato internamente come radianti.


'''Axis = (ax,ay,az)''' : è un vettore unitario che descrive un asse di rotazione (vedere [[#Note|Nota]] relativa all'asse di rotazione).
'''Axis = (ax,ay,az)''' : è un vettore unitario che descrive un asse di rotazione (vedere [[#Note|Nota]] relativa all'asse di rotazione).
Esempi:


(1,0,0) ==> sull'asse '''X'''
Esempi:
(1,0,0) ==> sull'asse '''X'''
(0,1,0) ==> sull'asse '''Y'''
(0,1,0) ==> sull'asse '''Y'''
(0,0,1) ==> sull'asse '''Z'''
(0,0,1) ==> sull'asse '''Z'''
(0.71,0.71,0) ==> sulla linea '''y=x'''
(0.71,0.71,0) ==> sulla linea '''y=x'''


<div class="mw-translate-fuzzy">
Notare che è anche possibile traslare (spostare) un oggetto lungo questo asse di rotazione (movimento assiale) inserendo la distanza dello spostamento nella casella di selezione Assiale e facendo clic sul pulsante Applica assiale. Un modo per immaginare lo spostamento assiale è pensare a un aeroplano con un'elica che gira sul suo naso - l'elica gira '''attorno''' a un asse di rotazione mentre l'aereo si sposta '''lungo''' quello stesso asse . I valori nel vettore possono essere pensati come la quantità relativa di movimento che deve essere applicata in quella direzione. Ad esempio, nel caso y = x (0,71,0,71,0) il valore contenuto nello spinbox assiale viene applicato in misura uguale alle direzioni X e Y, e non si applica nessun movimento nella direzione Z.
Notare che è anche possibile traslare (spostare) un oggetto lungo questo asse di rotazione (movimento assiale) inserendo la distanza dello spostamento nella casella di selezione Assiale e facendo clic sul pulsante Applica assiale. Un modo per immaginare lo spostamento assiale è pensare a un aeroplano con un'elica che gira sul suo naso - l'elica gira '''attorno''' a un asse di rotazione mentre l'aereo si sposta '''lungo''' quello stesso asse . I valori nel vettore possono essere pensati come la quantità relativa di movimento che deve essere applicata in quella direzione. Ad esempio, nel caso y = x (0,71,0,71,0) il valore contenuto nello spinbox assiale viene applicato in misura uguale alle direzioni X e Y, e non si applica nessun movimento nella direzione Z.
Line 48: Line 48:
Notare che negli script, Placement.Base è usato per indicare il componente di Posizione di un Placement.
Notare che negli script, Placement.Base è usato per indicare il componente di Posizione di un Placement.
Il Property Editor chiama questo valore "Position" e la finestra di dialogo Placement lo chiama "Traslazione".
Il Property Editor chiama questo valore "Position" e la finestra di dialogo Placement lo chiama "Traslazione".
</div>


'''Position = (x,y,z)''' is a Vector describing the point from which the object's geometry will be calculated (in effect, a "local origin" for the object). Note that in scripts, Placement.Base is used to denote the Position component of a placement. The property editor calls this value '''Position''' and the Placement task panel calls it '''Translation'''.

===Position and Yaw, Pitch and Roll===

<div class="mw-translate-fuzzy">
====Posizione con Imbardata, Beccheggio e Rollio====
====Posizione con Imbardata, Beccheggio e Rollio====
[[Image:PlacementDialogv10b.png|frame|left|Placement Dialogo per gli Angoli di Eulero]]
[[Image:PlacementDialogv10b.png|frame|left|Placement Dialogo per gli Angoli di Eulero]]
Line 54: Line 60:


'''Placement = [Position, Yaw-Pitch-Roll]'''
'''Placement = [Position, Yaw-Pitch-Roll]'''
</div>


'''Placement = [Position, Yaw-Pitch-Roll]'''

<div class="mw-translate-fuzzy">
La seconda forma di '''Placement''' fissa la posizione di un oggetto nello spazio con Position (come nella prima forma), ma descrive il suo orientamento con gli angoli di imbardata, beccheggio e rollio.
La seconda forma di '''Placement''' fissa la posizione di un oggetto nello spazio con Position (come nella prima forma), ma descrive il suo orientamento con gli angoli di imbardata, beccheggio e rollio.
Questi angoli sono anche denominati angoli '''Tait-Bryan''' o [http://it.wikipedia.org/wiki/Angoli_di_Eulero angoli di Eulero].
Questi angoli sono anche denominati angoli '''Tait-Bryan''' o [http://it.wikipedia.org/wiki/Angoli_di_Eulero angoli di Eulero].
Imbardata, beccheggio e rollio sono termini comuni nel settore dell'aviazione per descrivere l'orientamento (assetto) del veicolo.
Imbardata, beccheggio e rollio sono termini comuni nel settore dell'aviazione per descrivere l'orientamento (assetto) del veicolo.
</div>


'''Position = (x,y,z)''' è un vettore che descrive il punto da cui sarà calcolata la geometria dell'oggetto (di fatto, una "origine locale" per l'oggetto).
'''Position = (x,y,z)''' è un vettore che descrive il punto da cui sarà calcolata la geometria dell'oggetto (di fatto, una "origine locale" per l'oggetto).


<div class="mw-translate-fuzzy">
'''Yaw-Pitch-Roll = (y,p,r)''' è una tupla che definisce l'assetto dell'oggetto. I valori di '''y, p, r''', specificano i gradi di rotazione intorno agli assi '''z, y, x''', vedere le Note.
'''Yaw-Pitch-Roll = (y,p,r)''' è una tupla che definisce l'assetto dell'oggetto. I valori di '''y, p, r''', specificano i gradi di rotazione intorno agli assi '''z, y, x''', vedere le Note.
{{clear}}
{{clear}}
{{Code|code=
{{Code|code=
>>> App.getDocument("Sans_nom").Cylinder.Placement=App.Placement(App.Vector(0,0,0), App.Rotation(10,20,30), App.Vector(0,0,0))
>>> App.getDocument("Sans_nom").Cylinder.Placement=App.Placement(App.Vector(0,0,0), App.Rotation(10,20,30), App.Vector(0,0,0))
}}
</div>

{{Code|code=
>>> App.ActiveDocument.Cylinder.Placement = App.Placement(App.Vector(0,0,0), App.Rotation(10,20,30), App.Vector(0,0,0))
}}
}}


Line 77: Line 94:


[[Image:Tache_Placement_Lacet_fr_Mini.gif|left]]'''Yaw''' è la rotazione intorno all'asse '''Z''', destra sinistra e viceversa. <br />Angolo '''Psi ψ'''.
[[Image:Tache_Placement_Lacet_fr_Mini.gif|left]]'''Yaw''' è la rotazione intorno all'asse '''Z''', destra sinistra e viceversa. <br />Angolo '''Psi ψ'''.
{{clear}}
{{clear}}


[[Image:Tache_Placement_Tangage_fr_Mini.gif|left]]'''Pitch''' è la rotazione intorno all'asse '''Y''', alzare o abbassare il naso. <br />Angolo '''Phi φ'''.
[[Image:Tache_Placement_Tangage_fr_Mini.gif|left]]'''Pitch''' è la rotazione intorno all'asse '''Y''', alzare o abbassare il naso. <br />Angolo '''Phi φ'''.
{{clear}}
{{clear}}


[[Image:Tache_Placement_Roulis_fr_Mini.gif|left]]'''Roll''' è la rotazione intorno all'asse '''X''', dondolare le ali. <br />Angolo '''Thêta θ'''.
[[Image:Tache_Placement_Roulis_fr_Mini.gif|left]]'''Roll''' è la rotazione intorno all'asse '''X''', dondolare le ali. <br />Angolo '''Thêta θ'''.
{{clear}}
{{clear}}


===Matrix===

<div class="mw-translate-fuzzy">
====Matrice====
====Matrice====


'''Placement = Matrix'''
'''Placement = Matrix'''
</div>


La terza forma di '''Placement''' descrive la posizione dell'oggetto e l'orientamento con una matrice 4x4 di [http://it.wikipedia.org/wiki/Trasformazione_affine Trasformazione Affine].
La terza forma di '''Placement''' descrive la posizione dell'oggetto e l'orientamento con una matrice 4x4 di [http://it.wikipedia.org/wiki/Trasformazione_affine Trasformazione Affine].


'''Matrix''' =
'''Matrix''' =


<div class="mw-translate-fuzzy">
((r11,r12,r13,t1),
((r11,r12,r13,t1),
(r21,r22,r23,t2),
(r21,r22,r23,t2),
(r31,r32,r33,t3),
(r31,r32,r33,t3),
(0,0,0,1)) , dove rij specifica la rotazione e ti specifica la traslazione.
(0,0,0,1)) , dove rij specifica la rotazione e ti specifica la traslazione.
{{clear}}
{{clear}}
</div>

==The Placement Dialog==


<div class="mw-translate-fuzzy">
===La finestra di dialogo Posizionamento===
===La finestra di dialogo Posizionamento===


Line 108: Line 134:


La sezione '''Rotazione''' imposta l'angolo, o gli angoli di rotazione e il metodo per specificare tali angoli.
La sezione '''Rotazione''' imposta l'angolo, o gli angoli di rotazione e il metodo per specificare tali angoli.
</div>


* The '''Translation''' section adjusts the object's location in space.
* 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.

<div class="mw-translate-fuzzy">
Ma mentre gli elementi all'interno di ciascuna sezione si applicano generalmente alle finalità di quella sezione, ci sono anche alcuni elementi in una sezione che possono influenzare gli elementi in un'altra sezione. Ad esempio, facendo clic sul pulsante Punti selezionati nella sezione '''Centro''' con 2 punti selezionati nella vista 3D si ottiene non solo il popolamento delle caselle di selezione delle coordinate '''Centro''' con le coordinate del punto medio tra i 2 punti selezionati, ma nella sezione '''Rotazione''' si crea anche un asse personalizzato lungo la linea definita dai 2 punti selezionati. In un altro esempio, posizionando un valore nella casella di selezione Assiale e facendo clic sul pulsante Applica assiale nella sezione '''Traslazione''' si trasla (sposta) l'oggetto lungo l'asse definito nella sezione '''Rotazione'''.
Ma mentre gli elementi all'interno di ciascuna sezione si applicano generalmente alle finalità di quella sezione, ci sono anche alcuni elementi in una sezione che possono influenzare gli elementi in un'altra sezione. Ad esempio, facendo clic sul pulsante Punti selezionati nella sezione '''Centro''' con 2 punti selezionati nella vista 3D si ottiene non solo il popolamento delle caselle di selezione delle coordinate '''Centro''' con le coordinate del punto medio tra i 2 punti selezionati, ma nella sezione '''Rotazione''' si crea anche un asse personalizzato lungo la linea definita dai 2 punti selezionati. In un altro esempio, posizionando un valore nella casella di selezione Assiale e facendo clic sul pulsante Applica assiale nella sezione '''Traslazione''' si trasla (sposta) l'oggetto lungo l'asse definito nella sezione '''Rotazione'''.
Selezionare la casella '''Applica le modifiche incrementali al posizionamento dell'oggetto''' è utile quando le traslazioni o le rotazioni devono essere effettuate rispetto alla posizione o all'assetto relativo corrente dell'oggetto, invece che rispetto alla posizione o all'assetto originale. Quando questa casella viene selezionata i valori dei campi di input della finestra di dialogo vengono reimpostati a zero, ma non si modifica l'orientamento dell'oggetto o la sua posizione. Successivi reimpostamenti modificano l'orientamento o la posizione, ma vengono applicati a partire dalla posizione corrente dell'oggetto. L'attivazione di questa casella di controllo è utile anche quando si utilizza il pulsante Punti selezionati in quanto a volte può impedire modifiche indesiderate al posizionamento.
Selezionare la casella '''Applica le modifiche incrementali al posizionamento dell'oggetto''' è utile quando le traslazioni o le rotazioni devono essere effettuate rispetto alla posizione o all'assetto relativo corrente dell'oggetto, invece che rispetto alla posizione o all'assetto originale. Quando questa casella viene selezionata i valori dei campi di input della finestra di dialogo vengono reimpostati a zero, ma non si modifica l'orientamento dell'oggetto o la sua posizione. Successivi reimpostamenti modificano l'orientamento o la posizione, ma vengono applicati a partire dalla posizione corrente dell'oggetto. L'attivazione di questa casella di controllo è utile anche quando si utilizza il pulsante Punti selezionati in quanto a volte può impedire modifiche indesiderate al posizionamento.
</div>


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.

<div class="mw-translate-fuzzy">
PS: poiché la versione 0.17 introduce un nuovo oggetto Part, questo oggetto ha un suo Posizionamento e l'oggetto Posizionamento creato nell'oggetto Part viene incrementato con il Posizionamento di Part. {{Version/it|0.17}}
PS: poiché la versione 0.17 introduce un nuovo oggetto Part, questo oggetto ha un suo Posizionamento e l'oggetto Posizionamento creato nell'oggetto Part viene incrementato con il Posizionamento di Part. {{Version/it|0.17}}
Per ottenere il posizionamento di un oggetto Part usare questo codice:
Per ottenere il posizionamento di un oggetto Part usare questo codice:
</div>

To obtain the Part Placement use this code:

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


<div class="mw-translate-fuzzy">
Il pulsante '''Punti selezionati''' viene utilizzato per popolare le coordinate nelle caselle di selezione delle coordinate di '''Centro''' e (quando sono selezionati 2 o 3 punti) in aggiunta per creare un asse di rotazione personalizzato (definito dall'utente) nella sezione '''Rotazione'''. Un punto può essere un vertice, ma può anche essere qualsiasi punto lungo un bordo o su una faccia. Quando si seleziona un bordo o una faccia, viene selezionato l'intero bordo o la faccia, ma FreeCAD ricorda anche il punto su quella faccia o bordo su cui era posizionato il puntatore del mouse quando quel bordo o quella faccia era selezionata. Sono le coordinate di questo punto che vengono utilizzate nella finestra di dialogo Posizionamento quando si fa clic sul pulsante '''Punti selezionati'''. Si può pensare che questo non sia un modo molto preciso di selezionare un punto ed è vero, ma in molti casi è sufficiente che il punto selezionato sia sicuramente su quel bordo o faccia. Nei casi in cui è necessario designare con precisione un punto da utilizzare, è necessario selezionare un vertice. Quando non è presente alcun vertice nella posizione desiderata, prendere in considerazione la possibilità di crearne uno, magari in uno schizzo temporaneo attaccato a quella faccia o bordo, magari utilizzando un oggetto Draft, come una linea o un punto, ecc.
Il pulsante '''Punti selezionati''' viene utilizzato per popolare le coordinate nelle caselle di selezione delle coordinate di '''Centro''' e (quando sono selezionati 2 o 3 punti) in aggiunta per creare un asse di rotazione personalizzato (definito dall'utente) nella sezione '''Rotazione'''. Un punto può essere un vertice, ma può anche essere qualsiasi punto lungo un bordo o su una faccia. Quando si seleziona un bordo o una faccia, viene selezionato l'intero bordo o la faccia, ma FreeCAD ricorda anche il punto su quella faccia o bordo su cui era posizionato il puntatore del mouse quando quel bordo o quella faccia era selezionata. Sono le coordinate di questo punto che vengono utilizzate nella finestra di dialogo Posizionamento quando si fa clic sul pulsante '''Punti selezionati'''. Si può pensare che questo non sia un modo molto preciso di selezionare un punto ed è vero, ma in molti casi è sufficiente che il punto selezionato sia sicuramente su quel bordo o faccia. Nei casi in cui è necessario designare con precisione un punto da utilizzare, è necessario selezionare un vertice. Quando non è presente alcun vertice nella posizione desiderata, prendere in considerazione la possibilità di crearne uno, magari in uno schizzo temporaneo attaccato a quella faccia o bordo, magari utilizzando un oggetto Draft, come una linea o un punto, ecc.
</div>


<div class="mw-translate-fuzzy">
Consideriamo innanzitutto il caso semplice di selezione di 1 punto. Il flusso di lavoro consiste innanzitutto nel selezionare il punto desiderato, quindi fare clic sul pulsante '''Punti selezionati'''. Le coordinate del punto selezionato vengono utilizzate per popolare i campi X, Y e Z all'interno della sezione '''Centro'''. Ora qualsiasi rotazione fatta sull'oggetto sarà fatta attorno a questo centro di rotazione.
Consideriamo innanzitutto il caso semplice di selezione di 1 punto. Il flusso di lavoro consiste innanzitutto nel selezionare il punto desiderato, quindi fare clic sul pulsante '''Punti selezionati'''. Le coordinate del punto selezionato vengono utilizzate per popolare i campi X, Y e Z all'interno della sezione '''Centro'''. Ora qualsiasi rotazione fatta sull'oggetto sarà fatta attorno a questo centro di rotazione.
</div>


<div class="mw-translate-fuzzy">
Ora consideriamo il caso in cui si selezionano 2 punti. Bisogna selezionare i 2 punti desiderati, quindi fare clic sul pulsante '''Punti selezionati'''. Le coordinate del punto medio tra i 2 punti selezionati vengono posizionate nei campi X, Y e Z all'interno della sezione '''Centro'''. Ora qualsiasi rotazione fatta sull'oggetto sarà fatta attorno a questo centro di rotazione. Ma oltre a impostare le coordinate della sezione '''Centro''' viene aggiunto un asse personalizzato (definito dall'utente) all'elemento '''Asse''' all'interno della sezione '''Rotazione'''. (Nota: se si era in modalità Eulero, la modalità viene commutata su asse di rotazione con angolo e il nuovo asse personalizzato viene selezionato come asse di rotazione corrente.) Ora qualsiasi rotazione eseguita utilizzando il nuovo asse personalizzato riguarderà questo asse di rotazione. Come bonus aggiuntivo, la distanza viene misurata tra i 2 punti selezionati e queste informazioni vengono fornite nella vista report. (Nota: tenere premuto il tasto Maiusc mentre si fa clic sul pulsante '''Punti selezionati''' per copiare la misurazione della distanza negli Appunti.) Inserendo questa distanza nella casella di selezione assiale nella sezione '''Traslazione''' e facendo clic sul pulsante '''Applica assiale''' è possibile traslare (spostare) l'oggetto in modo che il primo punto selezionato occupi ora le coordinate occupate dal secondo punto selezionato (al momento in cui è stato fatto clic sul pulsante '''Punti selezionati''' ).
Ora consideriamo il caso in cui si selezionano 2 punti. Bisogna selezionare i 2 punti desiderati, quindi fare clic sul pulsante '''Punti selezionati'''. Le coordinate del punto medio tra i 2 punti selezionati vengono posizionate nei campi X, Y e Z all'interno della sezione '''Centro'''. Ora qualsiasi rotazione fatta sull'oggetto sarà fatta attorno a questo centro di rotazione. Ma oltre a impostare le coordinate della sezione '''Centro''' viene aggiunto un asse personalizzato (definito dall'utente) all'elemento '''Asse''' all'interno della sezione '''Rotazione'''. (Nota: se si era in modalità Eulero, la modalità viene commutata su asse di rotazione con angolo e il nuovo asse personalizzato viene selezionato come asse di rotazione corrente.) Ora qualsiasi rotazione eseguita utilizzando il nuovo asse personalizzato riguarderà questo asse di rotazione. Come bonus aggiuntivo, la distanza viene misurata tra i 2 punti selezionati e queste informazioni vengono fornite nella vista report. (Nota: tenere premuto il tasto Maiusc mentre si fa clic sul pulsante '''Punti selezionati''' per copiare la misurazione della distanza negli Appunti.) Inserendo questa distanza nella casella di selezione assiale nella sezione '''Traslazione''' e facendo clic sul pulsante '''Applica assiale''' è possibile traslare (spostare) l'oggetto in modo che il primo punto selezionato occupi ora le coordinate occupate dal secondo punto selezionato (al momento in cui è stato fatto clic sul pulsante '''Punti selezionati''' ).
</div>


<div class="mw-translate-fuzzy">
Ora consideriamo il caso di selezione di 3 punti. Bisogna selezionare i 3 punti desiderati, quindi fare clic sul pulsante '''Punti selezionati'''. Le coordinate del primo punto selezionato (qui l'ordine di selezione è molto importante) vengono posizionate nei campi X, Y e Z all'interno della sezione '''Centro'''. Poiché 3 punti definiscono un piano FreeCAD è in grado di trarne vantaggio e di utilizzare i 3 punti per creare un nuovo asse di rotazione personalizzato (definito dall'utente) che è normale (perpendicolare) al piano definito. Come per 2 punti selezionati, la distanza tra i punti viene mostrata nella vista report, ma questa volta è la distanza tra il 2o e il 3o punto selezionato. (Nota: tenere premuto il tasto Maiusc mentre si fa clic sul pulsante '''Punti selezionati''' - Maiusc + clic - per copiare la misurazione dell'angolo negli Appunti.) Inoltre, viene misurato anche l'angolo tra il 2o e il 3o punto e visualizzato nella vista report. Inserendo questo angolo nella casella '''Angolo''' all'interno della sezione '''Rotazione''' si può ruotare con precisione l'oggetto in modo tale che ora il secondo punto selezionato sia allineato con le coordinate occupate dal terzo punto selezionato . (Nota: per aumentare il numero di cifre utilizzate andare nel menu Modifica -> Preferenze -> Generale -> Unità -> Numero di decimali se si desidera maggiore precisione.)
Ora consideriamo il caso di selezione di 3 punti. Bisogna selezionare i 3 punti desiderati, quindi fare clic sul pulsante '''Punti selezionati'''. Le coordinate del primo punto selezionato (qui l'ordine di selezione è molto importante) vengono posizionate nei campi X, Y e Z all'interno della sezione '''Centro'''. Poiché 3 punti definiscono un piano FreeCAD è in grado di trarne vantaggio e di utilizzare i 3 punti per creare un nuovo asse di rotazione personalizzato (definito dall'utente) che è normale (perpendicolare) al piano definito. Come per 2 punti selezionati, la distanza tra i punti viene mostrata nella vista report, ma questa volta è la distanza tra il 2o e il 3o punto selezionato. (Nota: tenere premuto il tasto Maiusc mentre si fa clic sul pulsante '''Punti selezionati''' - Maiusc + clic - per copiare la misurazione dell'angolo negli Appunti.) Inoltre, viene misurato anche l'angolo tra il 2o e il 3o punto e visualizzato nella vista report. Inserendo questo angolo nella casella '''Angolo''' all'interno della sezione '''Rotazione''' si può ruotare con precisione l'oggetto in modo tale che ora il secondo punto selezionato sia allineato con le coordinate occupate dal terzo punto selezionato . (Nota: per aumentare il numero di cifre utilizzate andare nel menu Modifica -> Preferenze -> Generale -> Unità -> Numero di decimali se si desidera maggiore precisione.)
</div>

==Examples==


<div class="mw-translate-fuzzy">
==Esempi==
==Esempi==
Rotazione su un singolo asse:
Rotazione su un singolo asse:
</div>


<div class="mw-translate-fuzzy">
<center>
<center>
<gallery widths="700" heights="400">
<gallery widths="700" heights="400">
Line 149: Line 202:
Rotazione con scostamento del punto centrale:
Rotazione con scostamento del punto centrale:
</div>


[[Image:RotationAboutZAfter.png|600px|right|After Rotation about Z]] After Rotation about Z (top view)
{{clear}}

[[Image:RotationAboutYXAfter.png|600px|right|After Rotation about y=x]] After Rotation about y=x (right view)
{{clear}}

Rotation with offset centre point:

<div class="mw-translate-fuzzy">
<center>
<center>
<gallery widths="350" heights="200">
<gallery widths="350" heights="200">
Line 158: Line 221:
Rotazione con impiego degli angoli di Eulero:
Rotazione con impiego degli angoli di Eulero:
</div>

[[Image:RotationOffsetAfter.png|600px|right|After Rotation about Z]] After Rotation about Z (top view)
{{clear}}

Rotation using Euler angles:

[[Image:RotationEulerBefore.png|600px|left|Before Rotation]] Before Rotation
{{clear}}

[[Image:RotationEulerAfter.png|600px|right|After Rotation]] After Rotation
{{clear}}

==Placement.Base vs Shape Definition==


<div class="mw-translate-fuzzy">
<center>
<center>
<gallery widths="350" heights="200">
<gallery widths="350" heights="200">
Line 168: Line 246:
===Placement.Base vs Shape Definition===
===Placement.Base vs Shape Definition===


Placement non è l'unico modo per posizionare una forma nello spazio. Notare la console Python in questa immagine:
Placement non è l'unico modo per posizionare una forma nello spazio. Notare la console Python in questa immagine:
</div>


<div class="mw-translate-fuzzy">
[[Image:2Placements800.png|frame|left|2 Forme con Stesso Placement]]{{clear}}
[[Image:2Placements800.png|frame|left|2 Forme con Stesso Placement]]{{clear}}
</div>


<div class="mw-translate-fuzzy">
Entrambi i cubi hanno lo stesso valore per il Placement, ma si trovano in luoghi diversi! Questo perché le due forme sono definite da differenti vertici (curve in forme complesse). Per le due forme della figura sopra:
Entrambi i cubi hanno lo stesso valore per il Placement, ma si trovano in luoghi diversi! Questo perché le due forme sono definite da differenti vertici (curve in forme complesse). Per le due forme della figura sopra:
</div>


>>> ev = App.ActiveDocument.Extrude.Shape.Vertexes
>>> 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
>>>

The Vertices (or Vectors) that define the shape use the Placement.Base attribute as 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).

==Using "Center" to Control Axis of Rotation==

<div class="mw-translate-fuzzy">
>>> ev = App.ActiveDocument.Extrude.Shape.Vertexes
>>> for v in ev: print v.X,",",v.Y,",",v.Z
>>> for v in ev: print v.X,",",v.Y,",",v.Z
...
...
Line 205: Line 317:


Per impostazione predefinita, l'asse di rotazione non è effettivamente l'asse x, y o z. Si tratta di una linea parallela all'asse selezionato che passa per il punto definito da '''Placement.Base''' dell'oggetto da ruotare. Questa impostazione può essere modificata utilizzando i campi '''Centro''' della finestra di dialogo '''Posizionamento''' oppure, negli script, utilizzando il parametro '''centre''' nella costruzione di '''FreeCAD.Placement'''.
Per impostazione predefinita, l'asse di rotazione non è effettivamente l'asse x, y o z. Si tratta di una linea parallela all'asse selezionato che passa per il punto definito da '''Placement.Base''' dell'oggetto da ruotare. Questa impostazione può essere modificata utilizzando i campi '''Centro''' della finestra di dialogo '''Posizionamento''' oppure, negli script, utilizzando il parametro '''centre''' nella costruzione di '''FreeCAD.Placement'''.
</div>


<div class="mw-translate-fuzzy">
Si supponga, ad esempio, di avere un cubo (figura sotto) posizionato in (20,20,10).
Si supponga, ad esempio, di avere un cubo (figura sotto) posizionato in (20,20,10).
[[Image:LocalZBefore2.png|frame|center|Prima della rotazione]]{{clear}}
[[Image:LocalZBefore2.png|frame|center|Prima della rotazione]]{{clear}}
Volendo ruotare il cubo attorno al proprio asse verticale (l'asse locale Z), mantenendolo nella stessa posizione. E' possibile ottenere facilmente questo specificando nei campi Centro un valore corrispondente alle coordinate del punto centrale del cubo (25,25,15).
Volendo ruotare il cubo attorno al proprio asse verticale (l'asse locale Z), mantenendolo nella stessa posizione. E' possibile ottenere facilmente questo specificando nei campi Centro un valore corrispondente alle coordinate del punto centrale del cubo (25,25,15).
[[Image:LocalZAfter2.png|frame|center|Dopo la rotazione]]{{clear}}
[[Image:LocalZAfter2.png|frame|center|Dopo la rotazione]]{{clear}}
</div>

[[Image:LocalZBefore2.png|frame|center|Before Rotation]]
{{clear}}

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}}

In a script, we would do:

{{Code|code=
{{Code|code=
import FreeCAD
import FreeCAD
Line 215: Line 341:
rot = FreeCAD.Rotation(FreeCAD.Vector(0,0,1),45) # 45° about Z
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(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)
#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
centre = FreeCAD.Vector(25,25,15) # central point of box
pos = obj.Placement.Base # position point of box
pos = obj.Placement.Base # position point of box
newplace = FreeCAD.Placement(pos,rot,centre) # make a new Placement object
newplace = FreeCAD.Placement(pos,rot,centre) # make a new Placement object
obj.Placement = newplace # spin the box
obj.Placement = newplace # spin the box
}}
}}

Alcuni script con i file di esempio: [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])
Alcuni script con i file di esempio: [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])

{{Code|code=
{{Code|code=
import FreeCAD
import FreeCAD
Line 227: Line 355:
rot = FreeCAD.Rotation(FreeCAD.Vector(0,0,1),45) # 45 about Z
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(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)
#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)
centre = FreeCAD.Vector(25,25,0) # "centre" of rotation (where local Z cuts XY)
pos = obj.Placement.Base # original placement of obj
pos = obj.Placement.Base # original placement of obj
Line 234: Line 362:
}}
}}


==Using Placement in expressions==

In expressions it is possible to use the components of the placement for example to access the x-component of the object labeled "Cube":

{{Code|code=
<<Cube>>.Placement.Base.x
}}

You can access the angle of the rotation by

{{Code|code=
<<Cube>>.Placement.Rotation.Angle
}}

The axis of rotation can be accessed with

{{Code|code=
<<Cube>>.Placement.Rotation.Axis.x
<<Cube>>.Placement.Rotation.Axis.y
<<Cube>>.Placement.Rotation.Axis.z
}}

where often one of these values is 1 while the others are 0.

You can also use the whole Placement in a single expression:

Right click on Placement property in the property editor, select "show all" then extra properties will show. If you then right click on Placement again the context menu will include Expression, select Expression then the Expression dialogue will open and whatever you type will go into the Placement property rather than its child properties.

To make the placement of "Sketch" equal to that of "Cylinder", you would enter in that way for Sketch the expression

{{Code|code=
<<Cube>>.Placement
}}

[[Image:PlacementInExpression.png|frame|left|Setting the whole Placement in one expression]]
{{clear}}

'''NOTE:''' It's also possible to ''create'' Placement objects in expressions. See the [[Expressions#Placement|Expressions]] page for details.

==Notes==

<div class="mw-translate-fuzzy">
==Note==
==Note==
* Assi e Angolo possono anche essere espressi con un [http://it.wikipedia.org/wiki/Rotazioni_spaziali_con_i_quaternioni quaternione].
* Assi e Angolo possono anche essere espressi con un [http://it.wikipedia.org/wiki/Rotazioni_spaziali_con_i_quaternioni quaternione].
Line 252: Line 422:
|Caratteristiche derivate ​​da Sketch||la caratteristica eredita la posizione dello schizzo sottostante. Lo schizzo inizia sempre con Position = (0,0,0).
|Caratteristiche derivate ​​da Sketch||la caratteristica eredita la posizione dello schizzo sottostante. Lo schizzo inizia sempre con Position = (0,0,0).
|}
|}
</div>


{| class="wikitable" border="1"
==Limitazioni==
!Object!!Reference Point

|- align="left"
* A partire dalla versione 0.13, l'aggiornamento delle proprietà '''Placement''' nella scheda '''Dati''' è stato disattivato per gli oggetti creati con '''PartDesign''', fatta eccezione per il disegno iniziale da cui il solido verrà creato.
|Part.Box ||left (minx), front (miny), bottom (minz) vertex
Pertanto, il posizionamento di un solido creato in PartDesign da uno schizzo può essere modificato solo regolando i parametri di posizionamento del disegno di costruzione iniziale (il primo schizzo) da cui il solido viene creato.
|- align="left"

|Part.Sphere||center of the sphere (ie centre of bounding box)
* Le funzionalità di Posizionamento saranno eventualmente trattate nell'ambiente '''Assemblaggio'''.
|- align="left"
|Part.Cylinder||center of the bottom face
|- align="left"
|Part.Cone||center of bottom face (or apex if bottom radius is 0)
|- align="left"
|Part.Torus||center of the torus
|- 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.
|}


<span id="More"></span>
==Per saperne di più==
==Per saperne di più==


<div class="mw-translate-fuzzy">
* Il tutorial [[Aeroplane/it|Aeroplano]] tratta ampiamente sul meccanismo di modifica dell'assetto di un oggetto.
* Il tutorial [[Aeroplane/it|Aeroplano]] tratta ampiamente sul meccanismo di modifica dell'assetto di un oggetto.
* Una descrizione dettagliata della funzione '''Placement''' si trova nella pagina [[Tasks_Placement/it|Azioni di Posizionamento]].
* Una descrizione dettagliata della funzione '''Placement''' si trova nella pagina [[Tasks_Placement/it|Azioni di Posizionamento]].
</div>



{{Userdocnavi/it}}
{{Userdocnavi{{#translation:}}}}

Latest revision as of 20:34, 10 April 2024

Panoramica

Posizionamento è il modo in cui FreeCAD specifica la posizione e l'orientamento di un oggetto nello spazio. Il posizionamento può essere specificato in più forme e manipolato tramite scripting, l'editor di proprietà o selezionando Modifica → Posizionamento... per aprire Pannello azioni di Posizionamento.

Accesso all'Attributo di Posizionamento

È possibile accedere e modificare gli attributi di Posizionamento di un oggetto in 3 modi:

Posizionamento nell'editor delle proprietà
Script Placement con y/p/r, Matrix e la sua API.
Pannello azioni di Posizionamento

Forme di posizionamento

Il posizionamento viene memorizzato internamente come posizione e rotazione (asse di rotazione e angolo trasformati in un quaternione). Sebbene esistano diversi moduli per specificare una rotazione, ad esempio con un centro di rotazione, questo viene utilizzato solo per influenzare il calcolo della rotazione e non viene memorizzato per operazioni successive. Allo stesso modo, se viene specificato un asse di rotazione di (1,1,1), può essere normalizzato quando memorizzato nel quaternione e apparire come (0.58, 0.58, 0.58) quando si esplora successivamente l'oggetto.

Angolo, Asse e Posizione

Placement=[Angle, Axis, Position]

La prima forma di Placement stabilisce la Posizione di un oggetto nello spazio e descrive il suo orientamento come una singola rotazione attorno ad un asse.

Angle = r è uno scalare che indica la quantità di rotazione dell'oggetto attorno allAsse. Inserito come gradi, ma memorizzato internamente come radianti.

Axis = (ax,ay,az) : è un vettore unitario che descrive un asse di rotazione (vedere Nota relativa all'asse di rotazione). Esempi:

       (1,0,0)       ==> sull'asse X
   (0,1,0)       ==> sull'asse Y
   (0,0,1)       ==> sull'asse Z
   (0.71,0.71,0) ==> sulla linea y=x

Notare che è anche possibile traslare (spostare) un oggetto lungo questo asse di rotazione (movimento assiale) inserendo la distanza dello spostamento nella casella di selezione Assiale e facendo clic sul pulsante Applica assiale. Un modo per immaginare lo spostamento assiale è pensare a un aeroplano con un'elica che gira sul suo naso - l'elica gira attorno a un asse di rotazione mentre l'aereo si sposta lungo quello stesso asse . I valori nel vettore possono essere pensati come la quantità relativa di movimento che deve essere applicata in quella direzione. Ad esempio, nel caso y = x (0,71,0,71,0) il valore contenuto nello spinbox assiale viene applicato in misura uguale alle direzioni X e Y, e non si applica nessun movimento nella direzione Z.

Position = (x,y,z) è un vettore che descrive il punto da cui sarà calcolata la geometria dell'oggetto (di fatto, una "origine locale" per l'oggetto). Notare che negli script, Placement.Base è usato per indicare il componente di Posizione di un Placement. Il Property Editor chiama questo valore "Position" e la finestra di dialogo Placement lo chiama "Traslazione".

Position = (x,y,z) is a Vector describing the point from which the object's geometry will be calculated (in effect, a "local origin" for the object). Note that in scripts, Placement.Base is used to denote the Position component of a placement. The property editor calls this value Position and the Placement task panel calls it Translation.

Position and Yaw, Pitch and Roll

Posizione con Imbardata, Beccheggio e Rollio

Placement Dialogo per gli Angoli di Eulero

Placement = [Position, Yaw-Pitch-Roll]

Placement = [Position, Yaw-Pitch-Roll]

La seconda forma di Placement fissa la posizione di un oggetto nello spazio con Position (come nella prima forma), ma descrive il suo orientamento con gli angoli di imbardata, beccheggio e rollio. Questi angoli sono anche denominati angoli Tait-Bryan o angoli di Eulero. Imbardata, beccheggio e rollio sono termini comuni nel settore dell'aviazione per descrivere l'orientamento (assetto) del veicolo.

Position = (x,y,z) è un vettore che descrive il punto da cui sarà calcolata la geometria dell'oggetto (di fatto, una "origine locale" per l'oggetto).

Yaw-Pitch-Roll = (y,p,r) è una tupla che definisce l'assetto dell'oggetto. I valori di y, p, r, specificano i gradi di rotazione intorno agli assi z, y, x, vedere le Note.

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

App.Rotation(10,20,30) = Angoli di Eulero

Yaw = 10 gradi (Z)

Pitch = 20 gradi (Y)

Roll = 30 gradi (X)


Yaw è la rotazione intorno all'asse Z, destra sinistra e viceversa.
Angolo Psi ψ.

Pitch è la rotazione intorno all'asse Y, alzare o abbassare il naso.
Angolo Phi φ.

Roll è la rotazione intorno all'asse X, dondolare le ali.
Angolo Thêta θ.

Matrix

Matrice

Placement = Matrix

La terza forma di Placement descrive la posizione dell'oggetto e l'orientamento con una matrice 4x4 di Trasformazione Affine.

Matrix =

((r11,r12,r13,t1),

   (r21,r22,r23,t2),
   (r31,r32,r33,t3),
   (0,0,0,1)) , dove rij specifica la rotazione e ti specifica la traslazione. 

The Placement Dialog

La finestra di dialogo Posizionamento

La finestra di dialogo Posizionamento viene richiamata dal menu Modifica. E' utilizzata per ruotare o traslare con precisione gli oggetti. E' anche usata quando si deve creare uno schizzo su un piano "non standard" o per modificare l'orientamento di un disegno in un nuovo piano.

La sezione Traslazione regola la posizione degli oggetti nello spazio.

La sezione Centro imposta singolarmente gli assi di rotazione che non passano attraverso il punto di riferimento dell'oggetto.

La sezione Rotazione imposta l'angolo, o gli angoli di rotazione e il metodo per specificare tali angoli.

  • The Translation section adjusts the object's location in space.
  • 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.

Ma mentre gli elementi all'interno di ciascuna sezione si applicano generalmente alle finalità di quella sezione, ci sono anche alcuni elementi in una sezione che possono influenzare gli elementi in un'altra sezione. Ad esempio, facendo clic sul pulsante Punti selezionati nella sezione Centro con 2 punti selezionati nella vista 3D si ottiene non solo il popolamento delle caselle di selezione delle coordinate Centro con le coordinate del punto medio tra i 2 punti selezionati, ma nella sezione Rotazione si crea anche un asse personalizzato lungo la linea definita dai 2 punti selezionati. In un altro esempio, posizionando un valore nella casella di selezione Assiale e facendo clic sul pulsante Applica assiale nella sezione Traslazione si trasla (sposta) l'oggetto lungo l'asse definito nella sezione Rotazione.

Selezionare la casella Applica le modifiche incrementali al posizionamento dell'oggetto è utile quando le traslazioni o le rotazioni devono essere effettuate rispetto alla posizione o all'assetto relativo corrente dell'oggetto, invece che rispetto alla posizione o all'assetto originale. Quando questa casella viene selezionata i valori dei campi di input della finestra di dialogo vengono reimpostati a zero, ma non si modifica l'orientamento dell'oggetto o la sua posizione. Successivi reimpostamenti modificano l'orientamento o la posizione, ma vengono applicati a partire dalla posizione corrente dell'oggetto. L'attivazione di questa casella di controllo è utile anche quando si utilizza il pulsante Punti selezionati in quanto a volte può impedire modifiche indesiderate al posizionamento.

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: poiché la versione 0.17 introduce un nuovo oggetto Part, questo oggetto ha un suo Posizionamento e l'oggetto Posizionamento creato nell'oggetto Part viene incrementato con il Posizionamento di Part. disponibile dalla versione 0.17 Per ottenere il posizionamento di un oggetto Part usare questo codice:

To obtain the Part Placement use this code:

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("____________________")

Il pulsante Punti selezionati viene utilizzato per popolare le coordinate nelle caselle di selezione delle coordinate di Centro e (quando sono selezionati 2 o 3 punti) in aggiunta per creare un asse di rotazione personalizzato (definito dall'utente) nella sezione Rotazione. Un punto può essere un vertice, ma può anche essere qualsiasi punto lungo un bordo o su una faccia. Quando si seleziona un bordo o una faccia, viene selezionato l'intero bordo o la faccia, ma FreeCAD ricorda anche il punto su quella faccia o bordo su cui era posizionato il puntatore del mouse quando quel bordo o quella faccia era selezionata. Sono le coordinate di questo punto che vengono utilizzate nella finestra di dialogo Posizionamento quando si fa clic sul pulsante Punti selezionati. Si può pensare che questo non sia un modo molto preciso di selezionare un punto ed è vero, ma in molti casi è sufficiente che il punto selezionato sia sicuramente su quel bordo o faccia. Nei casi in cui è necessario designare con precisione un punto da utilizzare, è necessario selezionare un vertice. Quando non è presente alcun vertice nella posizione desiderata, prendere in considerazione la possibilità di crearne uno, magari in uno schizzo temporaneo attaccato a quella faccia o bordo, magari utilizzando un oggetto Draft, come una linea o un punto, ecc.

Consideriamo innanzitutto il caso semplice di selezione di 1 punto. Il flusso di lavoro consiste innanzitutto nel selezionare il punto desiderato, quindi fare clic sul pulsante Punti selezionati. Le coordinate del punto selezionato vengono utilizzate per popolare i campi X, Y e Z all'interno della sezione Centro. Ora qualsiasi rotazione fatta sull'oggetto sarà fatta attorno a questo centro di rotazione.

Ora consideriamo il caso in cui si selezionano 2 punti. Bisogna selezionare i 2 punti desiderati, quindi fare clic sul pulsante Punti selezionati. Le coordinate del punto medio tra i 2 punti selezionati vengono posizionate nei campi X, Y e Z all'interno della sezione Centro. Ora qualsiasi rotazione fatta sull'oggetto sarà fatta attorno a questo centro di rotazione. Ma oltre a impostare le coordinate della sezione Centro viene aggiunto un asse personalizzato (definito dall'utente) all'elemento Asse all'interno della sezione Rotazione. (Nota: se si era in modalità Eulero, la modalità viene commutata su asse di rotazione con angolo e il nuovo asse personalizzato viene selezionato come asse di rotazione corrente.) Ora qualsiasi rotazione eseguita utilizzando il nuovo asse personalizzato riguarderà questo asse di rotazione. Come bonus aggiuntivo, la distanza viene misurata tra i 2 punti selezionati e queste informazioni vengono fornite nella vista report. (Nota: tenere premuto il tasto Maiusc mentre si fa clic sul pulsante Punti selezionati per copiare la misurazione della distanza negli Appunti.) Inserendo questa distanza nella casella di selezione assiale nella sezione Traslazione e facendo clic sul pulsante Applica assiale è possibile traslare (spostare) l'oggetto in modo che il primo punto selezionato occupi ora le coordinate occupate dal secondo punto selezionato (al momento in cui è stato fatto clic sul pulsante Punti selezionati ).

Ora consideriamo il caso di selezione di 3 punti. Bisogna selezionare i 3 punti desiderati, quindi fare clic sul pulsante Punti selezionati. Le coordinate del primo punto selezionato (qui l'ordine di selezione è molto importante) vengono posizionate nei campi X, Y e Z all'interno della sezione Centro. Poiché 3 punti definiscono un piano FreeCAD è in grado di trarne vantaggio e di utilizzare i 3 punti per creare un nuovo asse di rotazione personalizzato (definito dall'utente) che è normale (perpendicolare) al piano definito. Come per 2 punti selezionati, la distanza tra i punti viene mostrata nella vista report, ma questa volta è la distanza tra il 2o e il 3o punto selezionato. (Nota: tenere premuto il tasto Maiusc mentre si fa clic sul pulsante Punti selezionati - Maiusc + clic - per copiare la misurazione dell'angolo negli Appunti.) Inoltre, viene misurato anche l'angolo tra il 2o e il 3o punto e visualizzato nella vista report. Inserendo questo angolo nella casella Angolo all'interno della sezione Rotazione si può ruotare con precisione l'oggetto in modo tale che ora il secondo punto selezionato sia allineato con le coordinate occupate dal terzo punto selezionato . (Nota: per aumentare il numero di cifre utilizzate andare nel menu Modifica -> Preferenze -> Generale -> Unità -> Numero di decimali se si desidera maggiore precisione.)

Examples

Esempi

Rotazione su un singolo asse:

Rotazione con scostamento del punto centrale:

After Rotation about Z
After Rotation about Z

After Rotation about Z (top view)

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

After Rotation about y=x (right view)

Rotation with offset centre point:

Rotazione con impiego degli angoli di Eulero:

After Rotation about Z
After Rotation about Z

After Rotation about Z (top view)

Rotation using Euler angles:

Before Rotation
Before Rotation

Before Rotation

After Rotation
After Rotation

After Rotation

Placement.Base vs Shape Definition

Placement.Base vs Shape Definition

Placement non è l'unico modo per posizionare una forma nello spazio. Notare la console Python in questa immagine:

2 Forme con Stesso Placement

Entrambi i cubi hanno lo stesso valore per il Placement, ma si trovano in luoghi diversi! Questo perché le due forme sono definite da differenti vertici (curve in forme complesse). Per le due forme della figura sopra:

 >>> 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
 >>>

The Vertices (or Vectors) that define the shape use the Placement.Base attribute as 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).

Using "Center" to Control Axis of Rotation

 >>> 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
 >>> 

I Vertices (o Vectors) che definiscono la forma usano gli attributi Placement.Base per la loro origine.

Quindi, se si desidera spostare una forma di 10 unità lungo l'asse X, si può aggiungere 10 alla coordinata X di tutti i Vertices oppure è possibile impostare Placement.Base a (10,0,0).

Controllare l'asse di rotazione con Centro di Posizionamento

Per impostazione predefinita, l'asse di rotazione non è effettivamente l'asse x, y o z. Si tratta di una linea parallela all'asse selezionato che passa per il punto definito da Placement.Base dell'oggetto da ruotare. Questa impostazione può essere modificata utilizzando i campi Centro della finestra di dialogo Posizionamento oppure, negli script, utilizzando il parametro centre nella costruzione di FreeCAD.Placement.

Si supponga, ad esempio, di avere un cubo (figura sotto) posizionato in (20,20,10).

Prima della rotazione

Volendo ruotare il cubo attorno al proprio asse verticale (l'asse locale Z), mantenendolo nella stessa posizione. E' possibile ottenere facilmente questo specificando nei campi Centro un valore corrispondente alle coordinate del punto centrale del cubo (25,25,15).

Dopo la rotazione
Before Rotation

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).

After Rotation

In a script, we would do:

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

Alcuni script con i file di esempio: RotateCoG2.fcstd (discussion on the 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

Using Placement in expressions

In expressions it is possible to use the components of the placement for example to access the x-component of the object labeled "Cube":

<<Cube>>.Placement.Base.x

You can access the angle of the rotation by

<<Cube>>.Placement.Rotation.Angle

The axis of rotation can be accessed with

<<Cube>>.Placement.Rotation.Axis.x
<<Cube>>.Placement.Rotation.Axis.y
<<Cube>>.Placement.Rotation.Axis.z

where often one of these values is 1 while the others are 0.

You can also use the whole Placement in a single expression:

Right click on Placement property in the property editor, select "show all" then extra properties will show. If you then right click on Placement again the context menu will include Expression, select Expression then the Expression dialogue will open and whatever you type will go into the Placement property rather than its child properties.

To make the placement of "Sketch" equal to that of "Cylinder", you would enter in that way for Sketch the expression

<<Cube>>.Placement
Setting the whole Placement in one expression

NOTE: It's also possible to create Placement objects in expressions. See the Expressions page for details.

Notes

Note

  • Assi e Angolo possono anche essere espressi con un quaternione.
  • Il punto di riferimento di un oggetto varia a seconda dell'oggetto. Alcuni esempi di oggetti di uso comune:
Oggetto Punto di riferimento
Part.Box vertice sinistro (minimo x), frontale (minimo y), in basso (minimo z)
Part.Sphere centro della sfera (centro del suo contenitore cubico)
Part.Cylinder centro della faccia di base
Part.Cone centro della faccia di base (o superiore se il raggio della faccia di base vale 0)
Part.Torus centro del toro
Caratteristiche derivate ​​da Sketch la caratteristica eredita la posizione dello schizzo sottostante. Lo schizzo inizia sempre con Position = (0,0,0).
Object Reference Point
Part.Box left (minx), front (miny), bottom (minz) vertex
Part.Sphere center of the sphere (ie centre of bounding box)
Part.Cylinder center of the bottom face
Part.Cone center of bottom face (or apex if bottom radius is 0)
Part.Torus center of the torus
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.

Per saperne di più

  • Il tutorial Aeroplano tratta ampiamente sul meccanismo di modifica dell'assetto di un oggetto.
  • Una descrizione dettagliata della funzione Placement si trova nella pagina Azioni di Posizionamento.