[Otázka] Zylinder aus CSV erstellen


Hallo Zusammen,
ich versuche mich gerade mit VS an einem PYthonPart mit dem Zylinder anhand einer CSV-Datei erstellt werden sollen. Dabei sollen die Koordinaten (X,Y,Z), die Zylinderhöhe und eine individuelle Farbe (alternativ ein Attributwert) aus der CSV-Ausgelesen werden.
Ich habe dabei im Moment folgende Probleme:

  • Zum einlesen der CSV-Datei wird 2-mal der Befehl ReadPoints benötigt, da mit diesem jeweils nur 3 Werte eingelesen werden können. Dies führt dazu, dass bei der Erstellung der Zylinder 0-Werte vorhanden sind.
  • Beim Zuweisen der Farbe habe ich den Befehl Format verwendet. Der Wert aus der CSV-Datei wird allerdings nicht als integer erkannt und kann somit nicht mit dem Befehl verknüpft werden.
  • Bei der alternative statt der Farbe ein Attribut zu vergeben scheitere ich daran, dass die Zylinder keine Objekt-Liste sind

Für Tipps und Hinweise wäre ich sehr dankbar.
Ich verwende Allplan 2023.

Gruß
Jan

Brücken und Ingenieurbau
VIC Planen und Beraten GmbH

https://www.vic-gmbh.de/

Přílohy (2)

Type: application/x-sqlite3
Staženo 101
Size: 132,00 KiB
Type: image/jpeg
Staženo 31
Size: 52,24 KiB

Show most helpful answer Hide most helpful answer

In dem Fall würde ich die einzelnen Spalten der CSV-Datei "manuell" lesen (s. read_cylind_vs.png):
Tabelle lesen
Werte von String in double wandeln -> dabei wird die Tabelle zur eindimensionalen Liste
Indices für die Spaltenwerte berechnen
Werte aus Liste holen und in neue Listen tun
Mit 3 Koordinaten-Listen die Mittelpunkte erzeugen
Mit Mittelpunkt-Liste, Radius- und Höhen-Listen die Zylinder erzeugen
Mit Farb-Liste die Zylinder "einfärben"

Přílohy (3)

Type: image/png
Staženo 66
Size: 255,32 KiB
Type: image/png
Staženo 48
Size: 163,14 KiB
Type: text/plain
Staženo 98
Size: 130,00 B

In dem Fall würde ich die einzelnen Spalten der CSV-Datei "manuell" lesen (s. read_cylind_vs.png):
Tabelle lesen
Werte von String in double wandeln -> dabei wird die Tabelle zur eindimensionalen Liste
Indices für die Spaltenwerte berechnen
Werte aus Liste holen und in neue Listen tun
Mit 3 Koordinaten-Listen die Mittelpunkte erzeugen
Mit Mittelpunkt-Liste, Radius- und Höhen-Listen die Zylinder erzeugen
Mit Farb-Liste die Zylinder "einfärben"

Přílohy (3)

Type: image/png
Staženo 66
Size: 255,32 KiB
Type: image/png
Staženo 48
Size: 163,14 KiB
Type: text/plain
Staženo 98
Size: 130,00 B

..hier noch das VScript zum Testen.

PS: Und nicht vergessen, nach dem Auswahl der Datei auf "Weiter" zu klicken!

Přílohy (1)

Type: application/zip
Staženo 99
Size: 11,80 KiB

An die Zylinder noch Attribut-Werte zu vergeben, ist sinnlos,
da das Ergebnis des Visaul-Scriptes ein Makro ist.
Von Elementen auf der Makrofolie können keine Attribute ausgewertet werden.

Man müßte das Ganze in einem PytonPart machen, und einzelne Zylinder , Stützen
oder PythonParts erzeugen, und an diese die Attribute dranhängen.
Dazu braucht man dann aber ein Interactor-PythonPart (Fire & Forget) ohne die Möglichkeit
der nachträglichen Aktualisierung...

vielen Dank Nemo, funktioniert wie gewünscht. Die Möglichkeit einen Double Werte mittels Division + Aufrunden zu einem Integer zu wandeln kannte ich noch nicht.
Zur Attribuierung: Ein Interactor-PythonPart wäre kein Beinbruch, da die Informationen sowieso aus der csv-Datei kommen. Aber mit der Einfärbung habe ich eine Möglichkeit zu Filtern, das reicht fürs erste.
Danke dir.

Brücken und Ingenieurbau
VIC Planen und Beraten GmbH

https://www.vic-gmbh.de/

...habe mal noch ein Interactor-PythonPart "Geometrie-Import" gemacht.

Dieses kann man sehr leicht ändern/erweitern, sodass sich auch andere Formen mit anderen Parametern importieren lassen.
Die Reihenfolge der Spalten ist egal. Wichtig für's richtige Einlesen ist die Header-Zeile:
Dort wird nach den Parameter-Namen ("X","Y","Z",Radius","Height","Color") gesucht.

Eine beliebige Anzahl von Attributen kann ebenfalls aus der csv-Datei gelesen werden, und an die geometrischen Elemente geschrieben werden. Dabei dient der Header als Attribut-Name.

Könnte man auch noch dahingehend erweitern, sodass auch Excel-Dateien gelesen werden können.

Damit sollten die Leute, die hier ständig Bohrpfähle importieren müssen, sich erst mal nicht mehr
mit Visual-Scritping abmühen müssen...

Have fun!

Přílohy (3)

Type: image/png
Staženo 60
Size: 196,26 KiB
Type: application/zip
Staženo 93
Size: 5,13 KiB
Type: text/plain
Staženo 98
Size: 191,00 B

wow. Ganz schön beeindruckend, was du da geschrieben hast.
Ich habe derzeit noch das Problem, dass der Z-Vektor negativ sein sollte, da in der Regel der Kopfpunkt bekannt ist. Im Selbstversuch bin ich leider an den Eingabewerten für die Funktion ZDirection bzw. Vector3D gescheitert.

Brücken und Ingenieurbau
VIC Planen und Beraten GmbH

https://www.vic-gmbh.de/

...habe das PythonPart noch etwas erweitert und fehlertoleranter gemacht:

- xlsx-Dateien können verwendet werden
- "X" , "Y", "Radius" und "Height" sind als Spalten notwendig, und müssen Werte enthalten, damit ein Zylinder erstellt wird
- die anderen Spalten können fehlen oder teilweise leer sein
- wenn Spalte "Z" leer oder nicht vorhanden ist, dann wird für Z "0" angenommen
- wenn Spalte "Color" leer oder nicht vorhanden ist, wird die aktuelle Farbe verwendet
- die Höhe kann negativ sein -> in diesem Fall bezeichnet X,Y,Z den "Kopfpunkt", und der Zylinder "geht von dort aus nach unten"

Have fun!

Přílohy (1)

Type: application/zip
Staženo 93
Size: 5,97 KiB

Es klappt super und spart mir in meinem Projekt enorm Zeit. danke dir.

Brücken und Ingenieurbau
VIC Planen und Beraten GmbH

https://www.vic-gmbh.de/


https://campus.allplan.com/ používá cookies  -  Více informací

Souhlasím