Allplan Fórum

[Otázka] OffsetLine3DByDistance setzt Linie bei Entfernung 0 auf den Richtungspunkt [Vyřešeno]

Tagy:
  • Visual
  • Scripting
  • Allplan
  • 2021

Ich wollte in einem Script eine Bezugslinie als Parallele einer anderen Linie erstellen. Dazu habe ich das Node OffsetLine3DByDistance verwendet. Ich habe erwartet, dass bei einer Entfernung gleich NULL die erzeugte parallele Linie gleich der gegebenen Linie ist.

Jetzt ist es aber so: Stellt man bei Distance 0 ein, wird die Entfernung zwischen dem Punkt (der die Versatzrichtung definiert) und der Ausgangslinie angenommen. Die neue Linie wird also auf den Punkt gesetzt bzw. in dessen Flucht.

Soll das so sein?

Ich habe das Problem im Script vorerst umgangen.

Allplan 2021-1-0

Gruß Felix
Allplan 2024-0-1

Přílohy (1)

Type: image/png
Staženo 49
Size: 53,66 KiB

Show solution Hide solution

In der zugrundeliegenden Geometrie-Bibliothek steht folgendes zur Erläuterung:

If the "dist" value is zero, the "point" arg is used as a base to parallel. In other case, the "dist" would be the distance from the source and the point represents the orientation.

Also ich fürchte: "Das muss so is"!

In der zugrundeliegenden Geometrie-Bibliothek steht folgendes zur Erläuterung:

If the "dist" value is zero, the "point" arg is used as a base to parallel. In other case, the "dist" would be the distance from the source and the point represents the orientation.

Also ich fürchte: "Das muss so is"!

Aber vermutlich nicht das, was man erwartet hat. Ich werde mit dem Team darüber sprechen.

Product Owner API, Allplan GmbH

Danke für die schnelle Antwort.
Erläuterungen aus der Geometrie-Bibliothek lesen zu können ist natürlich eine feine Sache.

Grüße Felix

Gruß Felix
Allplan 2024-0-1

Ich denke, bei der überbordenden Komplexität vieler Nodes braucht es unbedingt mehr Dokumentation!
Der Name des Nodes reicht einfach nicht aus, um zu beschreiben, was dieser tut (s. node_doku.png).

Andere Visual-Scripting-Ansätze (z.B. Dynamo) haben die Dokumentation vorbildlich im Framework integriert (s.Dynamo.png)!

Přílohy (2)

Type: image/png
Staženo 46
Size: 69,18 KiB
Type: image/png
Staženo 47
Size: 70,46 KiB

Danke Nemo für den Hinweis.

Das Problem mit der Dokumentation ist uns bekannt. Wir werden es auf jeden Fall verbessern. Nodes, die Ähnliche Funktionen haben, sollten auch besser zusammengefasst werden. (z.B. verschiedene Offset Nodes zu vereinheitlichen, usw...)

Product Owner API, Allplan GmbH

Also "Vereinheitlichen" ist genau der falsche Weg (für Visual-Scripting), da es zu größerer Komplexität führt!

Die Andere Richtung wäre richtig! Brutale Vereinfachung!
Jeder Node sollte (wie jede gute Funktion auch) genau eine einzige Aufgabe erledigen!
Und nicht zwei, wie der oben genannte Node OffsetLine3DByDistance!

Dieser hat nämlich eigentlich 2 Funktionen: Er versetzt die Linie senkrecht durch einen Punkt und/oder mit einem Abstand in Richtung des Punktes!

Die Linie durch einen Punkt zu versetzen würde völlig ausreichen! Wozu braucht es noch den Abstand?

Oder nur "mit Abstand" versetzen, dann braucht es eigentlich nur einen Vector! Na gut, der Vector muss senkrecht auf der Linie stehen.

Und wenn man sich das einzig zugelassen Eingabeelement "3D-Linie" so anschaut, dann gibt es schon Nodes die genau das machen:
MoveByPoints oder MoveByVector

Also was soll dieser Node?
Er bingt nichts, was man nicht mit "grundlegenderen" Nodes auch schon schafft!

Anders wäre es, wenn der Node einen Path3D oder ein Curve3D als Ausgangselement akzeptieren würde.
Aber da wird's dann schwierig, weil da auch "planare" Kurven wie ein Kreisbogen drin sein können, die man nicht in jede belibige Richtung versetzen kann!

Ich fände es gut, wenn man nicht (nur) die Funktionen der Geometrie-Bibliothek 1:1 in Nodes verpackt! (Dann kommt nämlich genau so etwas heraus!)
Besser wäre es, sich bei anderen Mitbewerbern (Grasshopper, Dynamo) anzuschauen, welche Nodes die für die Geometrie-Erzeugung so anbieten. Die werden leider durch den Vorsprung, den sie auf uns haben, nicht ganz falsch liegen...

Wahrscheinlich habe ich ein falsches Wort verwendet. Was ich meine ist fast genau was du schreibst.
Egal wie der Geometrie-Bibliothek aussieht, sollte alle Nodes so gebaut werden, dass mögliche viel ähnliche Aktionen in einen Node gepackt werden.

z.B. ein Node wie "offset curve via point" sollt für alle mögliche Kurven verwendet werden, egal ob es ein Linie3D, Arc3D, Polyline3D, Polygon3D, Spline3D oder Bspline3D ist. Nicht wie OffsetLineByPoint, OffsetPolylineByPoint, usw...

Product Owner API, Allplan GmbH