Das Wissen aller Anwender nutzen

Im Allplan Connect Forum tauschen sich Anwender aus, geben wertvolle Tipps oder beraten sich bei ganz konkreten Aufgabenstellungen − auch international.
Und damit wirklich keine Frage unbeantwortet bleibt, unterstützen die Mitarbeiter des Technischen Supports ebenfalls aktiv das Forum.

Es erwarten Sie:

  • Foren-Vielfalt aus CAD Architektur, CAD Ingenieurbau uvm.
  • Tipps von User für User
  • international: Deutsch, Englisch, Italienisch, Französisch und Tschechisch

Melden Sie sich jetzt an und diskutieren Sie mit!

Zur Registrierung

[Frage] Umgang mit BReps3dList


Moin!

Ich hätte eine Frage zur Python Codierung bzw. habe die Vermutung, dass ich da etwas falsch verwende bzw. verstehe.

Ich habe eine Pfahlkopfplatte als Python Part geschrieben, bei der man Pfahlabstände und Neigungen ändern und die Abmessungen des Fundamentes anpassen kann (siehe Bild). So weit, so gut.

Dieses Python Part kann man entweder als Python Part oder als Geometrisches Objekt ablegen.
Wenn man es als Python Part ablegt, ich es eins (logisch, weil man es darüber im nachhinein noch anpassen kann). Wenn man es als Geometrisches Objekt ablegt, möchte ich, dass das Fundament und jeder Pfahl ein Objekt sind.

Das Fundament und die Pfähle habe ich nun schon voneinander trennen können, indem ich einfach auf das "MakeUnion" verzichtet habe.
Die Pfähle werden jedoch in einer Funktion über mehrere Schleifen erstellt und am Ende zusammengefügt und dann ausgegeben:

<Codeauszug Start>
pfaehle = None

[...]

#make Union
if pfaehle == None:
pfaehle = brep2
else:
pfaehle = AllplanGeo.MakeUnion(pfaehle, brep2)[1]

return pfaehle
<Codeauszug Ende>

Meine Idee war jetzt, statt mit "MakeUnion" zu arbeiten, eine BRep3DList zu erstellen und die einzelenen Pfähle jeweils über den "append"-Befehl hinzuzufügen und am Ende die ganze Liste ausgeben zu lassen:

<Codeauszug Start>
pfaehle = AllplanGeo.BRep3DList()

[...]

pfaehle.append(brep2)

return pfaehle
<Codeauszug Ende>

Dies führt leider dazu, das ich gar keine Pfähle mehr bekomme (siehe Bild). Ich vermute, dass ich den "BRep3dList"-Befehl bzw. den "append"-Befehl falsch verwende, kann aber auch kein Beispiel finden, das mir weiter hilft. Kann mir da jemand helfen?

Vielen Dank schonmal!

VG Melita

Anhänge (2)

Typ: image/png
47-mal heruntergeladen
Größe: 71,15 KiB
Typ: image/png
34-mal heruntergeladen
Größe: 2,68 KiB

..im ersten Fall wird ein einzelnes BRep zurückgegeben, im zweiten Fall eine Liste von BReps!
Da muss natürlich die aufrufende Funktion entspr. angepasst werden, um die ankommende Liste zu verarbeiten. Manchmal ist es eben doch Mist, wenn Python der Vereinfachung halber keine sauberen Funktions-Deklarationen fordert. Da kann man alles Mögliche in eine Funktion "reinreichen", und auch wieder zurückgeben, ohne daß man das beim Kompilieren merkt. Erst zur Laufzeit passiert dann irgendwas komisches :-)

if isinstance(pfaehle, BRep3DList):
   for pfahl in pfaehle:
     #make ModelElement with pfahl
if isinstance(pfaehle, BRep3D):
     #make ModelElement with pfaehle