Draft: Serie su tracciato

From FreeCAD Documentation
Revision as of 14:19, 1 December 2020 by FuzzyBot (talk | contribs) (Updating to match new version of source page)

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 ortognale, Serie polare, Serie circolare, Serie di link su tracciato, Serie su punti, Clone

Descrizione

Lo strumento Serie su tracciato posiziona le copie di una forma selezionata lungo un percorso selezionato, che può essere una Polilinea, una B-spline, e bordi simili.

Questo strumento può essere utilizzato su qualsiasi oggetto che abbia una Part TopoShape, che significa forme 2D create con Draft, ma anche solidi 3D creati con altri ambienti, ad esempio Part, PartDesign o Arch.

Oggetto disposto lungo un percorso

Utilizzo

  1. Selezionare un oggetto che si desidera distribuire.
  2. Selezionare un oggetto percorso o alcuni bordi lungo i quali si vuole distribuire l'oggetto.
  3. Premere il pulsante Serie su tracciato.
  4. L'oggetto Array viene creato immediatamente. È necessario modificare le proprietà dell'array per modificare il numero e la direzione delle copie create.

Ogni elemento della serie è un clone esatto dell'oggetto originale, ma l'intera serie è considerata una singola unità in termini di proprietà e aspetto.

Nota: se l'oggetto DatiBase non sembra posizionato correttamente nel percorso, controllare che il suo DatiPlacement sia nell'origine (0,0,0). Alcuni oggetti possono essere posizionati in qualsiasi punto dello spazio 3D se utilizzati con lo strumento Serie su tracciato, ma altri devono trovarsi all'origine, in particolare quelli creato utilizzando Estrudi di Part con un profilo 2D come uno schizzo.

Opzioni

Non ci sono opzioni per questo strumento. O funziona con l'oggetto selezionato o non funziona.

Proprietà

Una Serie su tracciato deriva da una Part Feature (classe Part::Feature), quindi condivide tutte le proprietà di quest'ultima. Oltre alle proprietà descritte in Funzione Part, Serie su tracciato ha le seguenti proprietà nell'editor delle proprietà.

Alignment

  • DatiAlign (Bool): se è true le copie sono allineate al percorso; altrimenti vengono lasciate nel loro orientamento predefinito.
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.
  • DatiAlign Mode (Enumeration): tre modalità, Original, Frenet, Tangent.
  • DatiExtra Translation (VectorDistance): vettore di spostamento aggiuntivo (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.
  • DatiForce Vertical (Bool): se è true, il valore di DatiVertical Vector verrà utilizzata come direzione Z locale, quando DatiAlign Mode è Original o Tangent. disponibile dalla versione 0.19
  • DatiTangent Vector (Vector): il valore predefinito è (1, 0, 0); vettore unità di allineamento che verrà utilizzato quando DatiAlign Mode è Tangent. disponibile dalla versione 0.19
  • DatiVertical Vector (Vector): il valore predefinito è (0, 0, 1); vettore unitario della direzione Z locale che verrà utilizzato quando DatiVertical Vector è true. disponibile dalla versione 0.19

Objects

  • DatiBase (LinkGlobal): specifica l'oggetto da duplicare nel percorso.
  • DatiCount (Integer): specifica il numero di copie da creare nel percorso.
  • DatiPath Object (LinkGlobal): specifica l'oggetto lungo il quale verranno distribuite le copie. Deve contenere degli 'Edges' nella sua topologia; ad esempio, potrebbe essere una polilinea o una BSpline.
  • DatiPath Subelements (LinkSubListGlobal): specifica i sottoelementi (bordi) del DatiPath 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
DatiPath Object.

Script

Vedere anche: Draft API e Nozioni di base sugli script di FreeCAD.

Lo strumento PathArray può essere utilizzato nelle macro e dalla console Python utilizzando la seguente funzione:

Chiamata più vecchia

path_array = makePathArray(base_object, path_object, count, xlate=None, align=False, pathobjsubs=[])

Nuova chiamata

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):
  • Crea un oggetto "PathArray" da un base_object, inserendo fino a count copie lungo un path_object.
    • Invece di un riferimento a un oggetto, base_object e path_object possono anche essere delle Labels (stringhe) di oggetti esistenti nel documento corrente.
    • Se viene fornito un extra, esso è un vettore che sposta ciascuna delle singole copie di una piccola quantità.
    • Se vengono forniti dei subelements, è un elenco di bordi di path_object, per esempio, ['Edge1', 'Edge2']; le copie verranno create lungo questo percorso più breve.
    • Se align è True, le copie sono allineate lungo il path_object a seconda del valore di align_mode, che può essere "Original", "Frenet" o "Tangent".
    • Se viene fornito un tan_vector, è un vettore unitario che definisce la direzione tangente locale della copia lungo il percorso. Viene utilizzato quando align_mode è "Tangent".
    • Se force_vertical è True, il valore di vertical_vector viene utilizzato per determinare la direzione Z locale della copia lungo il percorso. Viene utilizzato quando align_mode è "Original" o "Tangent".
    • Se use_link è True, il tipo di serie creata sarà una Serie di link su tracciato, i cui elementi sono delle istanze App Link invece di normali copie.

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

Spiegazione tecnica per la proprietà Allinea

Quando DatiAlign è false, il posizionamento delle forme copiate è facile da capire; sono semplicemente spostati in una posizione diversa nel loro orientamento originale.

Align false
Align false

Oggetto disposto lungo un percorso chiuso nell'orientamento originale

Quando DatiAlign è true, il posizionamento delle forme diventa un po' più complesso :

  1. Prima, i sistemi di coordinate di Frenet sono costruiti sul percorso: X è tangente, Z è normale, Y è binormale.
  2. 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.

Oggetto disposto lungo un percorso chiuso; descrizione di componenti e percorso

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

Percorso nel piano XY:

Oggetto disposto lungo un percorso chiuso allineato al piano XY

Percorso nel piano XZ:

Oggetto disposto lungo un percorso chiuso allineato al piano XZ

Percorso nel piano YZ:

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.

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

Align false
Align false

Traversine ferroviarie - Modalità Tangente + ForceVertical

Align false
Align false

Modalità Frenet

Align false
Align false