Draft PathArray/cs

Popis
Nástroj TrasovéPole umístí vybraný tvar na vybranou trasu. Trasa může být drát nebo jedna nebo více hran. Tvary na trase mohou být volitelně zarovnány podle trasy. Podle potřeby může být specifikován Vektor pro posunutí tvaru tak, že těžiště tvaru bude na trase. Pokud není vybrán žádný objekt, budete vyzváni k jeho výběru.



Použití

 * 1) Vyberte objekt tvaru, který chcete kopírovat.
 * 2) Vyberte objekt trasy, po které chcete tvar kopírovat -nebo-
 * 3) Vyberte nějaké hrany pro určení trasy.
 * 4) Stiskněte tlačítko.

Volby

 * Pole začne s kopiemi tvaru, které nejsou zarovnány podle trasy ani defaultně posunuty na novou pozici. Ve vlastnostech můžete měnit počet, zarovnání a/nebo vektor posunutí.

Vlastnosti

 * : Objekt tvaru
 * : Objekt trasy
 * : Subelementy(hrany) objektu trasy, které budou použity jako trasa
 * : Počet kopií tvaru
 * : Vektor posunutí
 * : Hodnota True pro zarovnání tvarů podle trasy, False pro ponechání tvarů podle jejich původní orientace.

Skriptování
Nástroj TrasovéPole může být využit v makrech a z konzoly Pythonu použitím následující funkce:


 * Rozloží požadovaný počet (count) kopií objektu shapeobject podél trasy pathobject nebo subobject (vybrané hrany) pathobjectu. Volitelně posune každou kopii ve směru a vzdálenosti podle FreeCAD.Vectoru pro nastavení rozdílu mezi středem tvaru a referenčním bodem tvaru. Volitelně zarovná baseobject tangenciálně/normálně/binormálně k trase.

Příklad:

Usage Notes

 * Align + Xlate: When Align is True, the Xlate vector is relative to the local (tangent/normal/binormal) coordinates. When Align is False, the Xlate vector is relative to the global (XYZ) coordinates.

Omezení

 * Tento nástroj je dostupný až od verze 0.14
 * Vlastnost PathSubs se zatím nezobrazuje v seznamu vlastností.

Technical Explanation
When "Align = false", PathArray's logic is quite easy to understand.

When "Align = true" the logic is a bit harder to grasp:
 * 1) Construct Frenet coordinate systems on the path (X is tangent, Z is normal, Y is binormal).
 * 2) Copy the original object to every on-path coordinate system, so that the global origin is matched with the on-path coordinate system origin.

It is much easier to understand with pictures. The following images show how the array is produced, depending on which plane is the path.



Path on XY Plane



Path on XZ Plane



Path on YZ Plane

The clear advantage of this logic is that as you reorient the path but not the object, the result is consistent - object remains aligned to the path the way it was before reorienting the path.

(Thanks to @DeepSOIC for this explanation)