fischertechnik-box-foundation

OpenSCAD sorting box construction foundation for Fischertechnik parts

View the Project on GitHub proggi64/fischertechnik-box-foundation

DeployHorizontal

Verteilt die angegebenen Children-Elemente mit gleichem Abstand auf die angegebene Strecke auf der Y-Position Null. Dabei werden auch die Drehungen der einzelnen Elemente angegeben und berücksichtigt. Optional kann eine vertikale Ausrichtung der Elemente relativ zueinander angegeben werden.

Use

use <../Base/Deployment.scad>
include <../Base/PlacementOptions.scad>

Syntax

DeployHorizontal(
  width=0, 
  spaces=[], 
  rotations=[NoRotation],
  alignY=NoAlign)
  {children}
Parameter Typ Beschreibung
width Decimal Strecke, über die die angegebenen Elemente verteilt werden. Wird hier Null angegeben, werden die Elemente direkt ohne Abstand aneinander gesetzt.
spaces [[x,y],[x,y],…] Liste von Wertpaaren (Liste mit x- und y-Wert) mit den Flächen der Children-Elemente. Hier sollten die jeweiligen getElementNameSpace()-Funktionen angegeben werden, und zwar in der Reihenfolge, die der der Children-Elemente entspricht. Standard ist eine leere Liste, damit depth weggelassen werden kann. Die Liste darf aber nicht leer sein.
rotations [RotateX, RotateX, …] Gibt für jedes Children-Element an, wie es vor dem Verteilen gedreht werden soll. Mögliche Werte sind Rotate0, Rotate90, Rotate180 und Rotate270. Die Reihenfolge entspricht der der Children-Elemente. Die Liste kann ganz weggelassen werden, dann gelten für alle Elemente NoRotation. Ist die Liste unvollständig, wird für die restlichen Elemente NoRotation angenommen.
alignY Integer (Enum) Vertikale Ausrichtung der Children-Elemente zueinander. Grundlage sind die in spaces angegebenen Flächen, sowie die in rotations angegebenen Drehungen der einzelnen Elemente. AlignBottom richtet auf der unteren Linie aus (wie NoAlign), AlignTop am höchsten Y-Wert der Elemente, AlignCenter zentriert alle Elemente um das Zentrum des tiefsten Elements.

Beispiele

Ohne Ausrichtung

Das Beispiel ist ein Ausschnitt aus der Testdatei Test/Base/DeploymentTestDeployHorizontal.scad:

use <../../Base/Deployment.scad>
use <../../Base/Placement.scad>

include <../../Base/PlacementOptions.scad>

use <../TestHelper.scad>

PlacementBase();

DeployHorizontal(
    getPlacementBaseSpace().x, 
    [getCubeSpace(), getCubeSpace(), getCubeSpace()],
    [NoRotation, Rotate90, Rotate180]) {
    Cube();
    Cube();
    Cube();
}<

Das Beispiel verteilt drei gelbe Elemente Cube auf der grünen PlacementBase, die hier zur Veranschaulichung unter die Elemente gelegt wird. Die Rotationen zeigen, dass die richtige Breite nach der jeweiligen Rotation berücksichtigt wird. Die Abstände sind identisch.

DeployHorizontalSample

Zentriert ausgerichtet

use <../../Base/Deployment.scad>
use <../../Base/Placement.scad>

include <../../Base/PlacementOptions.scad>

use <../TestHelper.scad>

PlacementBase();

DeployHorizontal(
    getPlacementBaseSpace().x, 
    [getCubeSpace(), getCubeSpace(), getCubeSpace()],
    [NoRotation, Rotate90, Rotate180],
    alignY=AlignCenter) {
    Cube();
    Cube();
    Cube();
}

Wie das vorige Beispiel, aber der optionale Parameter alignY wird auf AlignCenter gesetzt.

DeployHorizontal_Center

Ohne Abstand mit Ausrichtung oben

use <../../Base/Deployment.scad>
use <../../Base/Placement.scad>

include <../../Base/PlacementOptions.scad>

use <../TestHelper.scad>

PlacementBase();

DeployHorizontal(
    0, 
    [getCubeSpace(), getCubeSpace(), getCubeSpace()],
    [NoRotation, Rotate90, Rotate180],
    alignY=AlignTop) {
    Cube();
    Cube();
    Cube();
}

Die Elemente werden direkt aneinander platziert. Bei Frame-Elementen werden die Zwischenwände doppelt so dick wie eine einzelne Wand. Um in solchen Fällen die Zwischenwände auf die Einzelstärke zu reduzieren, muss stattdessen [MergeRow}(MergeRow.md) verwendet werden.

DeployHorizontal_Zero

Rotationsliste weglassen

use <../../Base/Deployment.scad>
use <../../Base/Placement.scad>

include <../../Base/PlacementOptions.scad>

use <../TestHelper.scad>

PlacementBase();

DeployHorizontal(
    getPlacementBaseSpace().x, 
    [getCubeSpace(), getCubeSpace(), getCubeSpace()],
    alignY=AlignTop) {
    Cube();
    Cube();
    Cube();
}

DeployHorizontal_DefRot