Beim Arbeiten mit Längen/Koordinaten wäre es für mich hilfreich, wenn man diese gezielt weiterverarbeiten kann. In meinem aktuellen Vorhaben ist folgendes umzusetzen.
Gegeben ist eine variable Liste mit Fließkommazahlen (values) und ein variabler Abstand (x). Die Liste soll so angepasst werde, dass zwischen den Werten der Mindestabstand X eingehalten wird. Die Werte sollen nur gegebenenfalls vergrößert aber nie verkleinert werden. X ist immer positiv.
Hier ein Beispiel:
Liste [0, 1.2, 2.0, 2.5, 4.3, 5.1, 7.6, 7.9, 9.0]
Abstand 0.8
Ergebnis [0, 1.2, 2.0, 2.8, 4.3, 5.1, 7.6, 8.4, 9.2]
Abstand 1.2
Ergebnis [0, 1.2, 2.4, 3.6, 4.8, 6.0, 7.6, 8.8, 10.0]
Was Python-Programmierung betrifft bin ich noch Anfänger, aber ich denke das lässt sich gut mit einer Schleife lösen:
x = 0.8 values = [0, 1.2, 2.0, 2.5, 4.3, 5.1, 7.6, 7.9, 9.0] values.sort() loop_count = 0 for item in values: if loop_count == 0: loop_count += 1 elif values[loop_count] - values[loop_count - 1] < x: values[loop_count] = values[loop_count - 1] + x loop_count += 1 else: loop_count += 1
Für den Fall, dass die Liste negative Werte enthält und oder nicht aufsteigend sortiert ist, wird zuerst eine Sortierung durchgeführt.
Der erste/kleinste Wert soll nie verändert werden, daher überspringt das if den ersten loop.
Ist es möglich eine solche Auswertung in Visual Scripting vorzunehmen?
Mit den einfachen Math Operators-Nodes scheint das nicht zu funktionieren.
Aber es gibt das Node ExecPythonScript.
Laut Beschreibung kann man hiermit ein Python-Script ausführen. Leider finde ich keine Infos darüber, wie man das richtig einsetzt. Man kann Parameter übergeben und laut Eigenschaftenfeld eine Funktion definieren. Gibt es dazu irgendwo eine Anleitung?
Gruß Felix
Allplan 2024-0-1