Draft PathArray/it: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
 
(51 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{Docnav/it|[[Draft_LinkArray/it|Serie di link]]|[[Draft_PathLinkArray/it|Serie di link su tracciato]]|[[Draft_Module|Draft]]|IconL=Draft_LinkArray.svg|IconC=Workbench_Draft.svg|IconR=Draft_PathLinkArray.svg}}


{{Docnav/it
{{GuiCommand/it|Name=Draft_PathArray|Name/it=Serie su tracciato|Workbenches=[[Draft_Module/it|Draft]], [[Arch_Module/it|Arch]]|MenuLocation=Modifiche → Strumenti serie → Serie su tracciato|SeeAlso=[[Draft_OrthoArray/it|Serie ortognale]], [[Draft_PolarArray/it|Serie polare]], [[Draft_CircularArray/it|Serie circolare]], [[Draft_PathLinkArray/it|Serie di link su tracciato]], [[Draft_PointArray/it|Serie su punti]], [[Draft_Clone/it|Clone]]|Version=0.14 }}
|[[Draft_CircularArray/it|Serie circolare]]
|[[Draft_PathLinkArray/it|Serie di link su tracciato]]
|[[Draft_Workbench/it|Draft]]
|IconL=Draft_CircularArray.svg
|IconR=Draft_PathLinkArray.svg
|IconC=Workbench_Draft.svg
}}


{{GuiCommand/it
==Descrizione==
|Name=Draft_PathArray
|Name/it=Serie su tracciato
|MenuLocation=Modifiche → Strumenti serie → Serie su tracciato
|Workbenches=[[Draft_Workbench/it|Draft]], [[Arch_Workbench/it|Arch]]
|Version=0.14
|SeeAlso=[[Draft_OrthoArray/it|Serie ortogonale]], [[Draft_PolarArray/it|Serie polare]], [[Draft_CircularArray/it|Serie circolare]], [[Draft_PathLinkArray/it|Serie di link su tracciato]], [[Draft_PointArray/it|Serie su punti]], [[Draft_PointLinkArray/it|Serie di link su punti]]
}}


<span id="Description"></span>
Lo strumento {{Button|[[Image:Draft_PathArray.svg|16px]] [[Draft_PathArray/it|Serie su tracciato]]}} posiziona le copie di una forma selezionata lungo un percorso selezionato, che può essere una [[Draft Wire/it|Polilinea]], una [[Draft BSpline/it|B-spline]], e bordi simili.
==Descrizione==


Il comando [[Image:Draft_PathArray.svg|24px]] '''Serie su tracciato''' crea una serie (array) regolare da un oggetto selezionato posizionando copie lungo un percorso. Utilizzare invece il comando [[Draft_PathLinkArray/it|Serie di link su tracciato]] per creare una serie di [[App_Link/it|Link]] più efficiente. Fatta eccezione per il tipo di serie creato, Serie di link o Serie normale, il comando [[Draft_PathLinkArray/it|Serie di link su tracciato]] è identico a questo comando.
Questo strumento può essere utilizzato su qualsiasi oggetto che abbia una [[Part_TopoShape/it|Part TopoShape]], che significa forme 2D create con [[Draft_Workbench/it|Draft]], ma anche solidi 3D creati con altri ambienti, ad esempio [[Part_Workbench/it|Part]], [[PartDesign_Workbench/it|PartDesign]] o [[Arch_Workbench/it|Arch]].


Entrambi i comandi possono essere utilizzati su oggetti 2D creati con [[Draft_Workbench/it|Draft]] o [[Sketcher_Workbench/it|Sketcher]], ma anche su molti oggetti 3D come quelli creati con gli ambienti [[Part_Workbench/it|Part]], [[PartDesign_Workbench/it|PartDesign]] o [[Arch_Workbench/it|Arch]].
* Per creare delle serie ortogonali, polari o circolari, utilizzare il corrispondente comando {{Button|[[File:Draft_OrthoArray.svg|16px]] [[Draft_OrthoArray/it|Serie ortogonale]]}}, {{Button|[[File:Draft_PolarArray.svg|16px]] [[Draft_PolarArray/it|Serie polare]]}}, o {{Button|[[File:Draft_CircularArray.svg|16px]] [[Draft_CircularArray/it|Serie circolare]]}}.
* Per posizionare delle copie [[App_Link/it|Link]] lungo un percorso usare {{Button|[[File:Draft_PathLinkArray.svg|16px]] [[Draft_PathLinkArray/it|Serie di link su tracciato]]}}.
* Per posizionare delle copie in punti specifici usare {{Button|[[File:Draft_PointArray.svg|16px]] [[Draft_PointArray/it|Serie su punti]]}} o {{Button|[[File:Draft_PointLinkArray.svg|16px]] [[Draft_PointLinkArray/it|Serie di link su punti]]}}.
* Per creare copie e posizionarle manualmente utilizzare {{Button|[[File:Draft_Move.svg|16px]] [[Draft_Move/it|Sposta]]}} o {{Button|[[File:Draft_Rotate.svg|16px]] [[Draft_Rotate/it|Ruota]]}}.
* Per creare copie esatte e posizionarle o ridimensionarle manualmente, utilizzare {{Button|[[File:Draft_Clone.svg|16px]] [[Draft_Clone/it|Clona]]}} o {{Button|[[File:Std_LinkMake.svg|16px]] [[Std_LinkMake/it|Crea link]]}}.


[[Image:Draft_PathArray_Example.png|400px]]
[[Image:Draft_PathArray_Example.png|400px]]
{{Caption|Oggetto disposto lungo un percorso}}
{{Caption|Serie su tracciato}}


<span id="Usage"></span>
==Utilizzo==
==Utilizzo==


# Selezionare un oggetto che si desidera distribuire.
# Selezionare l'oggetto che si desidera allineare.
# Aggiungere l'oggetto tracciato alla selezione. È anche possibile selezionare invece dei bordi. I bordi devono appartenere allo stesso oggetto e devono essere collegati.
# Selezionare un oggetto percorso o alcuni bordi lungo i quali si vuole distribuire l'oggetto.
# Esistono diversi modi per invocare il comando:
# Premere il pulsante {{Button|[[Image:Draft_PathArray.svg|16px]] [[Draft PathArray/it|Serie su tracciato]]}}.
#* Premere il pulsante {{Button|[[Image:Draft_PathArray.svg|16px]] [[Draft_PathArray/it|Serie su tracciato]]}}.
# L'oggetto Array viene creato immediatamente. È necessario modificare le proprietà dell'array per modificare il numero e la direzione delle copie create.
#* Selezionare l'opzione {{MenuCommand|Modifiche → Strumenti serie → [[Image:Draft_PathArray.svg|16px]] Serie su tracciato}} dal menu.
# La serie viene creata.
# Facoltativamente, modificare le [[#Proprietà|proprietà]] della serie nell'[[property_editor/it|Editor delle proprietà]].


<span id="Alignment"></span>
Ogni elemento della serie è un clone esatto dell'oggetto originale, ma l'intera serie è considerata una singola unità in termini di proprietà e aspetto.
==Allineamento==


L'allineamento degli elementi in una Serie su tracciato dipende dalle proprietà della serie e dall'orientamento dell'oggetto sorgente. La posizione dell'oggetto sorgente viene ignorata: ai fini della serie {{Value|x}}, {{Value|y}} e {{Value|z}} sono impostati su {{Value|0}}. Se la proprietà {{PropertyData|Align}} della serie è impostata su {{FALSE}} l'orientamento degli elementi della serie è identico a quello dell'oggetto sorgente. Se è impostata su {{TRUE}}, l'asse X del sistema di coordinate locale di ciascun posizionamento dell'elemento è tangente al percorso. Gli assi Y e Z dei sistemi di coordinate locali dipendono dalla proprietà {{PropertyData|Align Mode}} della serie. Altre proprietà della serie coinvolte nell'allineamento includono {{PropertyData|Tangent Vector}}, {{PropertyData|Force Vertical}} e {{PropertyData|Vertical Vector}}.
{{Emphasis|Nota:}} se l'oggetto {{PropertyData|Base}} non sembra posizionato correttamente nel percorso, controllare che il suo {{PropertyData|Placement}} sia nell'origine {{Value|(0,0,0)}}. Alcuni oggetti possono essere posizionati in qualsiasi punto dello spazio 3D se utilizzati con lo strumento [[Image: Draft_PathArray.svg|16px]] '''Serie su tracciato''', ma altri devono trovarsi all'origine, in particolare quelli creato utilizzando [[File: Part_Extrude.svg|16px]] [[Part_Extrude/it|Estrudi]] di Part con un profilo 2D come uno schizzo.


[[Image:Draft_PathArray_example2.png|600px]]
== Opzioni ==
{{Caption|3 serie basate sullo stesso percorso non planare. Da sinistra a destra: Align è falso, Align è vero con Align Mode Original e Align è vero con Align Mode Frenet}}.


<span id="Align_Mode"></span>
Non ci sono opzioni per questo strumento. O funziona con l'oggetto selezionato o non funziona.
===Modalità allineamento===


Sono disponibili tre modalità:

<span id="Original"></span>
====Originale====

Questa modalità si avvicina di più alla singola {{PropertyData|Align Mode}} disponibile nella versione 0.18. Si basa su un vettore normale fisso. Se il percorso è planare questo vettore è perpendicolare al piano del percorso, altrimenti viene utilizzato un vettore predefinito, l'asse Z positivo. Da questo vettore normale e dal vettore tangente locale (l'asse X locale) viene calcolato un [https://en.wikipedia.org/wiki/Cross_product cross product]. Questo nuovo vettore viene utilizzato come asse Z locale. L'orientamento dell'asse Y locale è determinato dagli assi X e Z locali.

====Frenet====

Questa modalità utilizza il vettore normale locale derivato dal percorso in corrispondenza di ciascun posizionamento dell'elemento. Se questo vettore non può essere determinato (ad esempio nel caso di un segmento retto) viene utilizzato un vettore predefinito, sempre l'asse Z positivo. Con questo vettore e il vettore tangente locale si determina il sistema di coordinate locale utilizzando la stessa procedura del paragrafo precedente.

<span id="Tangent"></span>
====Tangente====

Questa modalità è simile a {{PropertyData|Align Mode}} {{Value|Original}} ma include la possibilità di pre-ruotare l'oggetto sorgente specificando un {{PropertyData|Tangent Vector}}.

<span id="Force_Vertical_and_Vertical_Vector"></span>
===Forza Verticale e Vettore Verticale===

Queste proprietà sono disponibili solo se {{PropertyData|Align Mode}} è {{Value|Original}} o {{Value|Tangent}}. Se {{PropertyData|Force Vertical}} è impostato su {{TRUE}} il sistema di coordinate locale viene calcolato in modo diverso. Il {{PropertyData|Vertical Vector}} viene utilizzato come vettore normale fisso. Da questo vettore normale e dal vettore tangente locale (l'asse X locale) viene nuovamente calcolato un prodotto incrociato. Ma ora questo vettore è usato come asse Y locale. L'orientamento dell'asse Z locale è determinato dagli assi X e Y locali.

L'utilizzo di queste proprietà può essere richiesto se uno degli spigoli del percorso è (quasi) parallelo alla normale predefinita del percorso.

<span id="Properties"></span>
== Proprietà ==
== Proprietà ==


Vedere anche: [[Property_editor/it|Editor delle proprietà]].
Una '''Serie su tracciato''' deriva da una [[Part_Feature/it|Part Feature]] (classe {{incode|Part::Feature}}), quindi condivide tutte le proprietà di quest'ultima. Oltre alle proprietà descritte in [[Part_Feature/it|Funzione Part]], Serie su tracciato ha le seguenti proprietà nell'[[property_editor/it|editor delle proprietà]].

Un oggetto Serie su tracciato è derivato da un oggetto [[Part_Feature/it|Part Feature]] e ne eredita tutte le proprietà (ad eccezione di alcune proprietà View che non sono ereditate da Serie di Link). Le seguenti proprietà sono aggiuntive se non diversamente specificato:

===Data===

{{TitleProperty|Link}}

Le proprietà in questo gruppo sono disponibili solo per le serie di link. Vedere [[Std_LinkMake/it#Proprietà|Crea link]] per ulteriori informazioni.

* {{PropertyData|Scale|Float}}
* {{PropertyData|Scale Vector|Vector|Hidden}}
* {{PropertyData|Scale List|VectorList}}
* {{PropertyData|Visibility List|BoolList|Hidden}}
* {{PropertyData|Placement List|PlacementList|Hidden}}
* {{PropertyData|Element List|LinkList|Hidden}}
* {{PropertyData|_ Link Touched|Bool|Hidden}}
* {{PropertyData|_ Child Cache|LinkList|Hidden}}
* {{PropertyData|Colored Elements|LinkSubHidden|Hidden}}
* {{PropertyData|Link Transform|Bool}}


{{TitleProperty|Alignment}}
{{TitleProperty|Alignment}}

* {{PropertyData|Align|Bool}}: se è {{TRUE}} le copie sono allineate al percorso; altrimenti vengono lasciate nel loro orientamento predefinito.
* {{PropertyData|Align|Bool}}: specifica se gli elementi nella serie sono allineati o meno lungo il percorso. Se è {{FALSE}} tutte le altre proprietà in questo gruppo, eccetto {{PropertyData|Extra Translation}}, non si applicano e sono nascoste.
:{{Emphasis|Nota:}} in alcuni casi la forma appare piatta, in realtà potrebbe essersi spostata nello spazio 3D, quindi, anziché utilizzare una vista piatta, cambiare la vista in assonometrica.
* {{PropertyData|Align Mode|Enumeration}}: tre modalità, {{Value|Original}}, {{Value|Frenet}}, {{Value|Tangent}}.
* {{PropertyData|Align Mode|Enumeration}}: specifica la modalità di allineamento, che può essere {{Value|Original}}, {{Value|Frenet}} o {{Value|Tangent}}.
* {{PropertyData|End Offset|Length}}: specifica la lunghezza dalla fine del percorso all'ultima copia. Deve essere inferiore alla lunghezza del percorso meno {{PropertyData|Start Offset}}. {{Version/it|0.21}}
* {{PropertyData|Extra Translation|VectorDistance}}: vettore di spostamento aggiuntivo {{Value|(x, y, z)}} che verrà applicato a ciascuna copia lungo il percorso. Questo è utile per apportare piccole modifiche alla posizione delle copie, ad esempio, quando il suo punto di riferimento non corrisponde al punto centrale della sua forma.
* {{PropertyData|Extra Translation|VectorDistance}}: specifica uno spostamento aggiuntivo per ogni elemento lungo il percorso.
* {{PropertyData|Force Vertical|Bool}}: se è {{TRUE}}, il valore di {{PropertyData|Vertical Vector}} verrà utilizzata come direzione Z locale, quando {{PropertyData|Align Mode}} è {{Value|Original}} o {{Value|Tangent}}. {{Version/it|0.19}}
* {{PropertyData|Tangent Vector|Vector}}: il valore predefinito è {{Value|(1, 0, 0)}}; vettore unità di allineamento che verrà utilizzato quando {{PropertyData|Align Mode}} è {{Value|Tangent}}. {{Version/it|0.19}}
* {{PropertyData|Force Vertical|Bool}}: specifica se sovrascrivere la direzione normale predefinita con il valore di {{PropertyData|Vertical Vector}}. Utilizzato solo se {{PropertyData|Align Mode}} è {{Value|Original}} o {{Value|Tangent}}.
* {{PropertyData|Vertical Vector|Vector}}: il valore predefinito è {{Value|(0, 0, 1)}}; vettore unitario della direzione Z locale che verrà utilizzato quando {{PropertyData|Vertical Vector}} è {{TRUE}}. {{Version/it|0.19}}
* {{PropertyData|Start Offset|Length}}: specifica la lunghezza dall'inizio del percorso alla prima copia. Deve essere inferiore alla lunghezza del percorso. {{Version/it|0.21}}
* {{PropertyData|Tangent Vector|Vector}}: specifica il vettore di allineamento. Utilizzato solo se {{PropertyData|Align Mode}} è {{Value|Tangent}}.
* {{PropertyData|Vertical Vector|Vector}}: specifica l'override per la direzione normale predefinita. Utilizzato solo se {{PropertyData|Vertical Vector}} è {{TRUE}}.


{{TitleProperty|Objects}}
{{TitleProperty|Objects}}
* {{PropertyData|Base|LinkGlobal}}: specifica l'oggetto da duplicare nel percorso.
* {{PropertyData|Count|Integer}}: specifica il numero di copie da creare nel percorso.
* {{PropertyData|Path Object|LinkGlobal}}: specifica l'oggetto lungo il quale verranno distribuite le copie. Deve contenere degli {{Value|'Edges'}} nella sua [[Part_TopoShape/it|topologia]]; ad esempio, potrebbe essere una {{Button|[[File:Draft_Wire.svg|16px]] [[Draft_Wire/it|polilinea]]}} o una {{Button|[[File:Draft_BSpline.svg|16px]] [[Draft_BSpline/it|BSpline]]}}.
* {{PropertyData|Path Subelements|LinkSubListGlobal}}: specifica i sottoelementi (bordi) del {{PropertyData|Path Object}} su cui verranno create le copie. Le copie verranno create solo su questi bordi. Se questa proprietà è vuota, le copie verranno distribuite sull'intero
{{PropertyData|Path Object}}.


* {{PropertyData|Base|LinkGlobal}}: specifica l'oggetto da duplicare nella serie.
== Script ==
* {{PropertyData|Count|Integer}}: specifica il numero di elementi nella serie.
{{Emphasis|Vedere anche:}} [[Draft API/it|Draft API]] e [[FreeCAD Scripting Basics/it|Nozioni di base sugli script di FreeCAD]].
* {{PropertyData|Expand Array|Bool}}: specifica se espandere la serie nella [[Tree_view/it|Vista ad albero]] per abilitare la selezione dei suoi singoli elementi. Disponibile solo per le serie di Link.
* {{PropertyData|Fuse|Bool}}: specifica se gli elementi sovrapposti nell'array sono fusi o meno. Non utilizzato per le serie di Link. {{Version/it|0.22}}
* {{PropertyData|Path Object|LinkGlobal}}: specifica l'oggetto da utilizzare per il percorso. Deve contenere {{Value|Edges}} nella sua [[Part_TopoShape/it|Part TopoShape]].
* {{PropertyData|Path Subelements|LinkSubListGlobal}}: specifica un elenco di spigoli dell'{{PropertyData|Path Object}}. Se forniti solo questi bordi vengono utilizzati per il percorso.


===View===
Lo strumento PathArray può essere utilizzato nelle [[macros/it|macro]] e dalla console [[Python/it|Python]] utilizzando la seguente funzione:


{{TitleProperty|Link}}
Chiamata più vecchia

{{Code|code=
Le proprietà in questo gruppo, ad eccezione della proprietà ereditata, sono disponibili solo per le serie di link. Vedere [[Std_LinkMake/it#Proprietà|Crea link]] per ulteriori informazioni.
path_array = makePathArray(base_object, path_object, count, xlate=None, align=False, pathobjsubs=[])

}}
* {{PropertyView|Draw Style|Enumeration}}
* {{PropertyView|Line Width|FloatConstraint}}
* {{PropertyView|Override Material|Bool}}
* {{PropertyView|Point Size|FloatConstraint}}
* {{PropertyView|Selectable|Bool}}: questa è una proprietà ereditata che appare nel gruppo Selezione per altre serie
* {{PropertyView|Shape Material|Material}}

{{TitleProperty|Base}}

Le proprietà in questo gruppo, ad eccezione della proprietà ereditata, sono disponibili solo per le serie di link. Vedere [[Std_LinkMake/it#Proprietà|Crea link]] per ulteriori informazioni.

* {{PropertyView|Child View Provider|PersistentObject|Hidden}}
* {{PropertyView|Material List|MaterialList|Hidden}}
* {{PropertyView|Override Color List|ColorList|Hidden}}
* {{PropertyView|Override Material List|BoolList|Hidden}}
* {{PropertyView|Proxy|PythonObject|Hidden}}: questa è una proprietà ereditata.

{{TitleProperty|Display Options}}

Le proprietà in questo gruppo sono proprietà ereditate. Vedere [[Part_Feature#Properties|Part Feature]] per ulteriori informazioni.

* {{PropertyView|Bounding Box|Bool}}: questa proprietà non è ereditata dalle serie di link.
* {{PropertyView|Display Mode|Enumeration}}: per le serie di link può essere {{value|Link}} o {{value|ChildView}}. Per altre serie può essere: {{value|Flat Lines}}, {{value|Shaded}}, {{value|Wireframe}} o {{value|Points}}
* {{PropertyView|Show In Tree|Bool}}
* {{PropertyView|Visibility|Bool}}

{{TitleProperty|Draft}}

* {{PropertyView|Pattern|Enumeration}}: not used.
* {{PropertyView|Pattern Size|Float}}: not used.

{{TitleProperty|Object style}}

Le proprietà in questo gruppo non vengono ereditate dalle serie di link.

<span id="Scripting"></span>
==Script==

Vedere anche: [https://freecad.github.io/SourceDoc/ Autogenerated API documentation] e [[FreeCAD Scripting Basics/it|Script di base per FreeCAD]].

Per creare una serie su tracciato utilizzare il metodo {{incode|make_path_array}} ({{Version/it|0.19}}) del modulo Draft. Questo metodo sostituisce il metodo deprecato {{incode|makePathArray}}.


Nuova chiamata
{{Code|code=
{{Code|code=
path_array = make_path_array(base_object, path_object,
path_array = make_path_array(base_object, path_object,
Line 70: Line 171:
align=False, align_mode="Original", tan_vector=App.Vector(1, 0, 0),
align=False, align_mode="Original", tan_vector=App.Vector(1, 0, 0),
force_vertical=False, vertical_vector=App.Vector(0, 0, 1),
force_vertical=False, vertical_vector=App.Vector(0, 0, 1),
use_link=True):
use_link=True)
}}
}}


* Crea un oggetto {{incode|"PathArray"}} da un {{incode|base_object}}, inserendo fino a {{incode|count}} copie lungo un {{incode|path_object}}.
* {{incode|base_object}} è l'oggetto da disporre in serie. Può anche essere la {{incode|Label}} (string) di un oggetto nel documento corrente.
** Invece di un riferimento a un oggetto, {{incode|base_object}} e {{incode|path_object}} possono anche essere delle {{incode|Labels}} (stringhe) di oggetti esistenti nel documento corrente.
* {{incode|path_object}} è l'oggetto percorso. Può anche essere la {{incode|Label}} (string) di un oggetto nel documento corrente.
* {{incode|count}} è il numero di elementi nella serie.
** Se viene fornito un {{incode|extra}}, esso è un vettore che sposta ciascuna delle singole copie di una piccola quantità.
* {{incode|extra}} è un vettore che sposta ogni elemento.
** Se vengono forniti dei {{incode|subelements}}, è un elenco di bordi di {{incode|path_object}}, per esempio, {{incode|['Edge1', 'Edge2']}}; le copie verranno create lungo questo percorso più breve.
** Se {{incode|align}} è {{incode|True}}, le copie sono allineate lungo il {{incode|path_object}} a seconda del valore di {{incode|align_mode}}, che può essere {{incode|"Original"}}, {{incode|"Frenet"}} o {{incode|"Tangent"}}.
* {{incode|subelements}} è un elenco di bordi di {{incode|path_object}}, ad esempio {{incode|["Edge1", "Edge2"]}}. Se forniti solo questi bordi vengono utilizzati per il percorso.
** Se viene fornito un {{incode|tan_vector}}, è un vettore unitario che definisce la direzione tangente locale della copia lungo il percorso. Viene utilizzato quando {{incode|align_mode}} è {{incode|"Tangent"}}.
* Se {{incode|align}} è {{incode|True}} gli elementi sono allineati lungo il percorso a seconda del valore di {{incode|align_mode}}, che può essere {{incode|"Original"}}, {{incode|"Frenet"}} o {{incode|"Tangent"}}.
** Se {{incode|force_vertical}} è {{incode|True}}, il valore di {{incode|vertical_vector}} viene utilizzato per determinare la direzione Z locale della copia lungo il percorso. Viene utilizzato quando {{incode|align_mode}} è {{incode|"Original"}} o {{incode|"Tangent"}}.
* {{incode|tan_vector}} è un vettore unitario che definisce la direzione tangente locale degli elementi lungo il percorso. Viene utilizzato quando {{incode|align_mode}} è {{incode|"Tangent"}}.
* Se {{incode|force_vertical}} è {{incode|True}} {{incode|vertical_vector}} viene utilizzato per la direzione Z locale degli elementi lungo il percorso. Viene utilizzato quando {{incode|align_mode}} è {{incode|"Original"}} o {{incode|"Tangent"}}.
** Se {{incode|use_link}} è {{incode|True}}, il tipo di serie creata sarà una [[Draft_PathLinkArray/it|Serie di link su tracciato]], i cui elementi sono delle istanze [[App_Link/it|App Link]] invece di normali copie.
* Se {{incode|use_link}} è {{incode|True}} gli elementi creati sono [[App_Link/it|App Links]] invece di normali copie.
* {{incode|path_array}} viene restituito con l'oggetto serie creato.

Esempio:


Esempio:
{{Code|code=
{{Code|code=
import FreeCAD as App
import FreeCAD as App
Line 104: Line 208:
}}
}}


==Spiegazione tecnica per la proprietà Allinea==
Quando {{PropertyData|Align}} è {{FALSE}}, il posizionamento delle forme copiate è facile da capire; sono semplicemente spostati in una posizione diversa nel loro orientamento originale.
[[Image:patharray_NoAlign.png|600px|left|Align false]]
{{clear}}
{{Caption|Oggetto disposto lungo un percorso chiuso nell'orientamento originale}}


{{Docnav/it
Quando {{PropertyData|Align}} è {{TRUE}}, il posizionamento delle forme diventa un po' più complesso :
|[[Draft_CircularArray/it|Serie circolare]]
# Prima, i sistemi di coordinate di Frenet sono costruiti sul percorso: X è tangente, Z è normale, Y è binormale.
|[[Draft_PathLinkArray/it|Serie di link su tracciato]]
# Dopo l'oggetto originale viene copiato su ogni sistema di coordinate su percorso, in modo che l'origine globale sia abbinata all'origine del sistema di coordinate sul percorso.
|[[Draft_Workbench/it|Draft]]
[[Image:patharray alignment annotated.png|600px|left]]
|IconL=Draft_CircularArray.svg
{{clear}}
|IconR=Draft_PathLinkArray.svg
{{Caption|Oggetto disposto lungo un percorso chiuso; descrizione di componenti e percorso}}
|IconC=Workbench_Draft.svg

}}
Le immagini seguenti mostrano come viene prodotto l'array, a seconda del piano del percorso.

Percorso nel piano XY:
[[Image:patharray_alignment.png|600px|left]]
{{clear}}
{{Caption|Oggetto disposto lungo un percorso chiuso allineato al piano XY}}

Percorso nel piano XZ:
[[Image:patharray_alignment-XZ.png|600px|left]]
{{clear}}
{{Caption|Oggetto disposto lungo un percorso chiuso allineato al piano XZ}}

Percorso nel piano YZ:
[[Image:patharray_alignment-YZ.png|600px|left]]
{{clear}}
{{Caption|Oggetto disposto lungo un percorso chiuso allineato al piano YZ}}

Quando si riorienta il percorso ma non l'oggetto, il risultato è coerente: l'oggetto rimane allineato al percorso nel modo in cui era prima di riorientare il percorso.

{{Emphasis|Editor:}} Grazie a DeepSOIC per questa spiegazione.

==Modalità di allineamento aggiuntive e opzioni introdotte in v0.19==

La modalità '''Originale''' (impostazione predefinita) è la modalità di allineamento storica come nella versione 0.18.
Non è proprio l'allineamento di Frenet. La modalità originale utilizza il parametro normale di Draft.getNormal (o il valore predefinito) come costante - non calcola la curva normale. X segue la curva tangente, Y è il parametro normale, Z è X.Cross(Y).

La modalità '''Tangente''' è simile a '''Originale''', ma include una rotazione per allineare la X dell'oggetto Base al TangentVector prima di posizionare le copie. Dopo la rotazione, Tangente si comporta come l'originale. Nelle versioni precedenti questa rotazione si sarebbe eseguita manualmente prima di invocare PathArray.

La modalità '''Frenet''' orienta le copie su un sistema di coordinate lungo il percorso. X è tangente alla curva, Y è la curva normale, Z è la curva binormale. Se non è possibile calcolare una normale (ad esempio per una linea retta), viene utilizzata l'impostazione predefinita.

L'opzione ForceVertical si applica alle modalità Originale e Tangente. Quando si applica questa opzione, il parametro normale di Draft.getNormal viene ignorato. X segue la curva tangente, Z è la proprietà VerticalVector e Y è X.Cross(Z).

Catena di bicicletta con la versione 18 - Modalità Originale
[[Image:patharray_cycleChain.png|600px|left|Align false]]
{{clear}}

Traversine ferroviarie - Modalità Tangente + ForceVertical
[[Image:patharray_railwayTies.png|600px|left|Align false]]
{{clear}}

Modalità Frenet
[[Image:patharray_FrenetMode.png|600px|left|Align false]]
{{clear}}


{{Docnav/it|[[Draft_LinkArray/it|Serie di link]]|[[Draft_PathLinkArray/it|Serie di link su tracciato]]|[[Draft_Module|Draft]]|IconL=Draft_LinkArray.svg|IconC=Workbench_Draft.svg|IconR=Draft_PathLinkArray.svg}}


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

Latest revision as of 19:54, 31 March 2024

Serie su tracciato

Posizione nel menu
Modifiche → Strumenti serie → Serie su tracciato
Ambiente
Draft, Arch
Avvio veloce
Nessuno
Introdotto nella versione
0.14
Vedere anche
Serie ortogonale, Serie polare, Serie circolare, Serie di link su tracciato, Serie su punti, Serie di link su punti

Descrizione

Il comando Serie su tracciato crea una serie (array) regolare da un oggetto selezionato posizionando copie lungo un percorso. Utilizzare invece il comando Serie di link su tracciato per creare una serie di Link più efficiente. Fatta eccezione per il tipo di serie creato, Serie di link o Serie normale, il comando Serie di link su tracciato è identico a questo comando.

Entrambi i comandi possono essere utilizzati su oggetti 2D creati con Draft o Sketcher, ma anche su molti oggetti 3D come quelli creati con gli ambienti Part, PartDesign o Arch.

Serie su tracciato

Utilizzo

  1. Selezionare l'oggetto che si desidera allineare.
  2. Aggiungere l'oggetto tracciato alla selezione. È anche possibile selezionare invece dei bordi. I bordi devono appartenere allo stesso oggetto e devono essere collegati.
  3. Esistono diversi modi per invocare il comando:
    • Premere il pulsante Serie su tracciato.
    • Selezionare l'opzione Modifiche → Strumenti serie → Serie su tracciato dal menu.
  4. La serie viene creata.
  5. Facoltativamente, modificare le proprietà della serie nell'Editor delle proprietà.

Allineamento

L'allineamento degli elementi in una Serie su tracciato dipende dalle proprietà della serie e dall'orientamento dell'oggetto sorgente. La posizione dell'oggetto sorgente viene ignorata: ai fini della serie x, y e z sono impostati su 0. Se la proprietà DatiAlign della serie è impostata su false l'orientamento degli elementi della serie è identico a quello dell'oggetto sorgente. Se è impostata su true, l'asse X del sistema di coordinate locale di ciascun posizionamento dell'elemento è tangente al percorso. Gli assi Y e Z dei sistemi di coordinate locali dipendono dalla proprietà DatiAlign Mode della serie. Altre proprietà della serie coinvolte nell'allineamento includono DatiTangent Vector, DatiForce Vertical e DatiVertical Vector.

3 serie basate sullo stesso percorso non planare. Da sinistra a destra: Align è falso, Align è vero con Align Mode Original e Align è vero con Align Mode Frenet

.

Modalità allineamento

Sono disponibili tre modalità:

Originale

Questa modalità si avvicina di più alla singola DatiAlign Mode disponibile nella versione 0.18. Si basa su un vettore normale fisso. Se il percorso è planare questo vettore è perpendicolare al piano del percorso, altrimenti viene utilizzato un vettore predefinito, l'asse Z positivo. Da questo vettore normale e dal vettore tangente locale (l'asse X locale) viene calcolato un cross product. Questo nuovo vettore viene utilizzato come asse Z locale. L'orientamento dell'asse Y locale è determinato dagli assi X e Z locali.

Frenet

Questa modalità utilizza il vettore normale locale derivato dal percorso in corrispondenza di ciascun posizionamento dell'elemento. Se questo vettore non può essere determinato (ad esempio nel caso di un segmento retto) viene utilizzato un vettore predefinito, sempre l'asse Z positivo. Con questo vettore e il vettore tangente locale si determina il sistema di coordinate locale utilizzando la stessa procedura del paragrafo precedente.

Tangente

Questa modalità è simile a DatiAlign Mode Original ma include la possibilità di pre-ruotare l'oggetto sorgente specificando un DatiTangent Vector.

Forza Verticale e Vettore Verticale

Queste proprietà sono disponibili solo se DatiAlign Mode è Original o Tangent. Se DatiForce Vertical è impostato su true il sistema di coordinate locale viene calcolato in modo diverso. Il DatiVertical Vector viene utilizzato come vettore normale fisso. Da questo vettore normale e dal vettore tangente locale (l'asse X locale) viene nuovamente calcolato un prodotto incrociato. Ma ora questo vettore è usato come asse Y locale. L'orientamento dell'asse Z locale è determinato dagli assi X e Y locali.

L'utilizzo di queste proprietà può essere richiesto se uno degli spigoli del percorso è (quasi) parallelo alla normale predefinita del percorso.

Proprietà

Vedere anche: Editor delle proprietà.

Un oggetto Serie su tracciato è derivato da un oggetto Part Feature e ne eredita tutte le proprietà (ad eccezione di alcune proprietà View che non sono ereditate da Serie di Link). Le seguenti proprietà sono aggiuntive se non diversamente specificato:

Data

Link

Le proprietà in questo gruppo sono disponibili solo per le serie di link. Vedere Crea link per ulteriori informazioni.

  • DatiScale (Float)
  • Dati (Hidden)Scale Vector (Vector)
  • DatiScale List (VectorList)
  • Dati (Hidden)Visibility List (BoolList)
  • Dati (Hidden)Placement List (PlacementList)
  • Dati (Hidden)Element List (LinkList)
  • Dati (Hidden)_ Link Touched (Bool)
  • Dati (Hidden)_ Child Cache (LinkList)
  • Dati (Hidden)Colored Elements (LinkSubHidden)
  • DatiLink Transform (Bool)

Alignment

  • DatiAlign (Bool): specifica se gli elementi nella serie sono allineati o meno lungo il percorso. Se è false tutte le altre proprietà in questo gruppo, eccetto DatiExtra Translation, non si applicano e sono nascoste.
  • DatiAlign Mode (Enumeration): specifica la modalità di allineamento, che può essere Original, Frenet o Tangent.
  • DatiEnd Offset (Length): specifica la lunghezza dalla fine del percorso all'ultima copia. Deve essere inferiore alla lunghezza del percorso meno DatiStart Offset. disponibile dalla versione 0.21
  • DatiExtra Translation (VectorDistance): specifica uno spostamento aggiuntivo per ogni elemento lungo il percorso.
  • DatiForce Vertical (Bool): specifica se sovrascrivere la direzione normale predefinita con il valore di DatiVertical Vector. Utilizzato solo se DatiAlign Mode è Original o Tangent.
  • DatiStart Offset (Length): specifica la lunghezza dall'inizio del percorso alla prima copia. Deve essere inferiore alla lunghezza del percorso. disponibile dalla versione 0.21
  • DatiTangent Vector (Vector): specifica il vettore di allineamento. Utilizzato solo se DatiAlign Mode è Tangent.
  • DatiVertical Vector (Vector): specifica l'override per la direzione normale predefinita. Utilizzato solo se DatiVertical Vector è true.

Objects

  • DatiBase (LinkGlobal): specifica l'oggetto da duplicare nella serie.
  • DatiCount (Integer): specifica il numero di elementi nella serie.
  • DatiExpand Array (Bool): specifica se espandere la serie nella Vista ad albero per abilitare la selezione dei suoi singoli elementi. Disponibile solo per le serie di Link.
  • DatiFuse (Bool): specifica se gli elementi sovrapposti nell'array sono fusi o meno. Non utilizzato per le serie di Link. disponibile dalla versione 0.22
  • DatiPath Object (LinkGlobal): specifica l'oggetto da utilizzare per il percorso. Deve contenere Edges nella sua Part TopoShape.
  • DatiPath Subelements (LinkSubListGlobal): specifica un elenco di spigoli dell'DatiPath Object. Se forniti solo questi bordi vengono utilizzati per il percorso.

View

Link

Le proprietà in questo gruppo, ad eccezione della proprietà ereditata, sono disponibili solo per le serie di link. Vedere Crea link per ulteriori informazioni.

  • VistaDraw Style (Enumeration)
  • VistaLine Width (FloatConstraint)
  • VistaOverride Material (Bool)
  • VistaPoint Size (FloatConstraint)
  • VistaSelectable (Bool): questa è una proprietà ereditata che appare nel gruppo Selezione per altre serie
  • VistaShape Material (Material)

Base

Le proprietà in questo gruppo, ad eccezione della proprietà ereditata, sono disponibili solo per le serie di link. Vedere Crea link per ulteriori informazioni.

  • Vista (Hidden)Child View Provider (PersistentObject)
  • Vista (Hidden)Material List (MaterialList)
  • Vista (Hidden)Override Color List (ColorList)
  • Vista (Hidden)Override Material List (BoolList)
  • Vista (Hidden)Proxy (PythonObject): questa è una proprietà ereditata.

Display Options

Le proprietà in questo gruppo sono proprietà ereditate. Vedere Part Feature per ulteriori informazioni.

  • VistaBounding Box (Bool): questa proprietà non è ereditata dalle serie di link.
  • VistaDisplay Mode (Enumeration): per le serie di link può essere Link o ChildView. Per altre serie può essere: Flat Lines, Shaded, Wireframe o Points
  • VistaShow In Tree (Bool)
  • VistaVisibility (Bool)

Draft

  • VistaPattern (Enumeration): not used.
  • VistaPattern Size (Float): not used.

Object style

Le proprietà in questo gruppo non vengono ereditate dalle serie di link.

Script

Vedere anche: Autogenerated API documentation e Script di base per FreeCAD.

Per creare una serie su tracciato utilizzare il metodo make_path_array (disponibile dalla versione 0.19) del modulo Draft. Questo metodo sostituisce il metodo deprecato makePathArray.

path_array = make_path_array(base_object, path_object,
                             count=4, extra=App.Vector(0, 0, 0), subelements=None,
                             align=False, align_mode="Original", tan_vector=App.Vector(1, 0, 0),
                             force_vertical=False, vertical_vector=App.Vector(0, 0, 1),
                             use_link=True)
  • base_object è l'oggetto da disporre in serie. Può anche essere la Label (string) di un oggetto nel documento corrente.
  • path_object è l'oggetto percorso. Può anche essere la Label (string) di un oggetto nel documento corrente.
  • count è il numero di elementi nella serie.
  • extra è un vettore che sposta ogni elemento.
  • subelements è un elenco di bordi di path_object, ad esempio ["Edge1", "Edge2"]. Se forniti solo questi bordi vengono utilizzati per il percorso.
  • Se align è True gli elementi sono allineati lungo il percorso a seconda del valore di align_mode, che può essere "Original", "Frenet" o "Tangent".
  • tan_vector è un vettore unitario che definisce la direzione tangente locale degli elementi lungo il percorso. Viene utilizzato quando align_mode è "Tangent".
  • Se force_vertical è True vertical_vector viene utilizzato per la direzione Z locale degli elementi lungo il percorso. Viene utilizzato quando align_mode è "Original" o "Tangent".
  • Se use_link è True gli elementi creati sono App Links invece di normali copie.
  • path_array viene restituito con l'oggetto serie creato.

Esempio:

import FreeCAD as App
import Draft

doc = App.newDocument()

p1 = App.Vector(500, -1000, 0)
p2 = App.Vector(1500, 1000, 0)
p3 = App.Vector(3000, 500, 0)
p4 = App.Vector(4500, 100, 0)
spline = Draft.make_bspline([p1, p2, p3, p4])
obj = Draft.make_polygon(3, 500)

path_array = Draft.make_path_array(obj, spline, 6)
doc.recompute()

wire = Draft.make_wire([p1, -p2, -p3, -p4])
path_array2 = Draft.make_path_array(obj, wire, count=3, extra=App.Vector(0, -500, 0), subelements=["Edge2", "Edge3"], align=True, force_vertical=True)
doc.recompute()