Support Forum

[Frage] BSpline Parallele bilden für Fahwegsweep mit komplexer BSpline

Schlagworte:
  • Visual
  • Scripting
  • Bspline
  • 3D

Hallo,
Ich wollte einen Sweep mit einem BSpline(dieser muss in allen Ebenen gekrümmt sein) machen und folglich eine Parallele des BSplines machen um auch den Sweep mit Fahrwegen zu machen. Nun gibt es ja für BSplines nur die Möglichkeit über OffsetBSplines zu arbeiten und dieser verlangt einen sogenannten NormVector. Nun habe ich erstmal Versucht anhand der StartTangente der BSpline irgendwie eine Parallele zu modellieren, was nicht funktionierte und dann über den Node Vectornormalize den Vektoren entsprechend anzupassen. Beides funktionierte nicht..
Wo liegt mein Denkfehler ?
Und: Macht das Sinn wenn ich von der kopierten BSpline den ersten und den zweiten Punkt auf die Querschnittspunkte verlege oder macht dies auch der Node OffsetBSpline3DbyDistance ?

Danke!

Anhänge (2)

Typ: image/png
51-mal heruntergeladen
Größe: 8,56 KiB
Typ: image/png
75-mal heruntergeladen
Größe: 54,43 KiB

Hilfreichste Antwort anzeigen Hilfreichste Antwort verbergen

...ja, Du bist leider in die Dokumenationsfalle getappt!
Es ist leider nirgendswo beschrieben, was NormVector ist, und wie der Offset der BSpline erfolgt.

Hier die Hintergründe:

Der Node "OffsetBSpline3DByDistance" erzeugt eine versetzte BSpline in der Ebene, deren Normalen-Vector angegeben ist.
Voraussetzung ist, dass auch die Spline in dieser Ebene liegt. (Der Normalenvector einer Ebene steht immer senkrecht auf der Ebene.)

Mit diesen Randbedingungen ist der Node für dein "Vorhaben" scheinbar nicht zu gebrauchen!

Mit den Nodes "SweepRail", "SweepByPath" und "SweepByRaillPath" hast Du es schon versucht?

Alternativ könntest Du Folgendes versuchen:

Die Stützpunkte der BSpline senkrecht zum Tangenten-Vektor in diesem Punkt mit dem entspr. Abstand kopieren!
Durch die kopierten Punkte eine neue BSpline erzeugen. (s. bspline_offset.png)

2. Alternative:
Dichtere Punkte auf der Spline konstruieren, und diese mit um 90 Grad gedrehtem Tangentenvector versetzen.
(s.spline_offset.png)

Roter Pfeil: Schade, dass es noch immer keiner Slider als Controls in der Palette gibt

Anhänge (3)

Typ: image/png
104-mal heruntergeladen
Größe: 188,49 KiB
Typ: image/png
66-mal heruntergeladen
Größe: 69,01 KiB
Typ: image/png
61-mal heruntergeladen
Größe: 44,74 KiB
1 - 10 (11)

...ja, Du bist leider in die Dokumenationsfalle getappt!
Es ist leider nirgendswo beschrieben, was NormVector ist, und wie der Offset der BSpline erfolgt.

Hier die Hintergründe:

Der Node "OffsetBSpline3DByDistance" erzeugt eine versetzte BSpline in der Ebene, deren Normalen-Vector angegeben ist.
Voraussetzung ist, dass auch die Spline in dieser Ebene liegt. (Der Normalenvector einer Ebene steht immer senkrecht auf der Ebene.)

Mit diesen Randbedingungen ist der Node für dein "Vorhaben" scheinbar nicht zu gebrauchen!

Mit den Nodes "SweepRail", "SweepByPath" und "SweepByRaillPath" hast Du es schon versucht?

Alternativ könntest Du Folgendes versuchen:

Die Stützpunkte der BSpline senkrecht zum Tangenten-Vektor in diesem Punkt mit dem entspr. Abstand kopieren!
Durch die kopierten Punkte eine neue BSpline erzeugen. (s. bspline_offset.png)

2. Alternative:
Dichtere Punkte auf der Spline konstruieren, und diese mit um 90 Grad gedrehtem Tangentenvector versetzen.
(s.spline_offset.png)

Roter Pfeil: Schade, dass es noch immer keiner Slider als Controls in der Palette gibt

Anhänge (3)

Typ: image/png
104-mal heruntergeladen
Größe: 188,49 KiB
Typ: image/png
66-mal heruntergeladen
Größe: 69,01 KiB
Typ: image/png
61-mal heruntergeladen
Größe: 44,74 KiB

Danke dir!
Die API-Dokumentation der PythonParts bietet da leider nur begrenzt Verständnis und erklärt den NormVector als den Normalenvector einer Fläche. Ich habe mir mal den "nächstgelegenen" Befehl in Allplan "Parallele zu Element" unter Freies Modellieren angeschaut. Dieser kann auch nur innerhalb einer Ebene Parallelen bilden..

Ich arbeite ja bereits mit SweepRail aber dieser braucht ja mindestens zwei Fahrwege. Mein Anwendungsfall Brückenbau erfordert das ich auch Querneigungen berücksichtigen muss, wodurch sich die ursprüngliche BSpline(welche normalerweise eine Achse des Vermessers ist) auch anzupassen hat..

Ich versuche es mal mit deinen Alternativen, die scheinen vielversprechend zu sein

Für Brücken und Strassenbau sollte man es so machen:

1. Auf der Strassenachse regelmäßig/unregelmäßig Stationierungspunkte erzeugen
2. Den Querschnitt/die Querschnitte an Start-und Endpunkt und die Stationierungspunkte kopieren
3. Horizontale Ausrichtung dieser Querschnitte (in X-Y-Ebene) mit der Tangente machen:
Tangentenwinkel in 2D messen, Querschnitt entspr. drehen
4. Querneigung an jedem Stationierungspunkt getrennt eingeben, und den 2D-gedrehten Querschnitt dann noch
um die X-Achse drenen/neigen
5. Spline-Curve durch die Ranpunkte der Querschnitte konstruieren
5. Den Körper durch Railsweepen der gedrehten Querschnitte erstellen.

Genau so hatte ich es auch vor..
Kurze Frage zu deinen Alternativen: Die Rotation der Vektoren ermittelt sich ja dann aus den Abständen die ich ihm vorgebe und später sich aus den Querschnittsentwicklungen nimmt, oder ?

Die Tangenten-Vektoren müssen 90 Grad (um die Z-Achse) an dem Punkt gedreht werden, in welchem der Vektor ermittelt wurde.
Vorher müßte man diese Tangentenvektoren noch "platt" machen, d.h. den Z-Anteil auf Null setzen.
Danach nochmals normalisieren, d.h. auf die Länge 1.0 bringen.
Die Querneigung durch Drehen des 90-Grad-gedrehten um den "platt"-gemachten Tangentenvektor hinzufügen.
Dann die Tangentenvektoren mit dem gewünschten Abstand multiplizieren, und zum obigen Punkt addieren.
Damit bekommst Du den zugeörigen Punkt auf der Rand-Curve.

Ich probiers mal aus und gebe dann Rückmeldung, Vielen Dank!

..ich hab das mal ausprobiert. Erst mal mit einer andere Visual-Script-Umgebung. (s.querneigung.mp4)

Es funktioniert ganz gut, wenn man an jeder Station die Querneigung separat einstellen kann.

Als Anregung mal das Flussdiagramm zu diesem Versuch.(s.Querneigung_fluss_diagramm.png)

Ich werde als nächstes das mal Probieren mit einem Allplan-Visual-Script umzusetzen.
Ich hoffe alle notwendigen Nodes sind dafür vorhanden.

Diese Art aus Achse und Querneigung einen Brückenkörper zu modellieren, ist aber genau das, was Allplan-Bridge macht!
Habt ihr euch das schon angesehen?

Anhänge (2)

Typ: video/mp4
1236-mal heruntergeladen
Größe: 3,16 MiB
Typ: image/png
83-mal heruntergeladen
Größe: 284,14 KiB

Es geht mit Allplan-Visual-Scripting auch (s. querneigung)

Anhänge (3)

Typ: image/png
111-mal heruntergeladen
Größe: 96,99 KiB
Typ: text/xml
1231-mal heruntergeladen
Größe: 22,14 KiB
Typ: text/xml
1235-mal heruntergeladen
Größe: 981,00 B

Zitiert von: Nemo

Diese Art aus Achse und Querneigung einen Brückenkörper zu modellieren, ist aber genau das, was Allplan-Bridge macht!

Habt ihr euch das schon angesehen?

Da ist vieles gerade in Evaluation, wie ich es einschätzen kann/darf.. Aber bis dahin will ich nicht auf die Parametrik verzichten, da diese (vor Allem) in frühen LPH enorme Zeiteinsparungen bedeuten kann.

Und danke dir! Starke Leistung!

1 - 10 (11)