Support Forum

3D Flächen vereinigen (Bool), Geschwindigkeit


Hallo,

Derzeit versuche ich 3D-Flächen für die Erstellung eines 3D-Körpers für ein DGM zu vereinigen, als Test habe ich mal versucht, einen nur winzigsten Teil meines DGMs mit ca. 30.000 Flächen zu vereinigen, nach einer halben Stunde hängt Allplan immer noch. Bisher habe ich es mit ca. maximal 5.000 Flächen geschafft, einen 3D-Körper zu erstellen.
Hat jemand Erfahrung, mit wievielen Punkten/Kanten/Flächen der Parasolid-Kern so maximal zurechtkommt?
Ich würde sagen, bei der heutigen Technik sollten bis zu einer Million Flächen problemlos und blitzschnell bearbeitbar sein. Andere Programm wie MeshLab, CloudCompare oder ähnliche Freeware haben auch bei 10 Millionen Dreiecke kein Problem.

Ist der Kern überhaupt Multithread-fähig?

Gruß
Peter

Hilfreichste Antwort anzeigen Hilfreichste Antwort verbergen

Es gibt mit dem Add-On Geometry Tool folgenden Trick.
1. Export viele einzelne 3D Flächen als OBJ File
2. Import wieder dieses OBJ File mit dem Geometrie Tool

Somit bekommst du am einfachsten eine vereinte Fläche.

Gruss Thierry

http://www.cds-bausoftware.ch

...so wird das nix!
Warum dauert das so lange?
Zunächst mal handelt es sich um ebene Flächen. Da ist der Parasolid-Kern gar nicht beteiligt. Der kommt erst bei gekrümmten Flächen (BREps) in's Spiel.
Und Due versuchst die Boolsche Operation "Vereinigen"! Bestandteil diese Algorithmus ist eine
Prüfung auf minimalen Abstand aller Punkte (jeder gegen jeden) und der Coplanarität der Flächen.
Da die Anzahl der Punkte und Flächen mit jeder hinzugefügten Fläche zunimmt, steigt die Zeit
für den Algorithmus mit dem doppelten Quadrat an.

Im vorliegenden ist zumindest die Prüfung der Coplanarität der Flächen unnötig, da es ja schon mal
eine zusammenhängende Oberfläche war.

Da kommen wir schon zur Lösung:
Können die vielen Flächen mit dem Autorenprogramm nicht als zusammenhängender Körper exportiert werden, anstatt einzelner Flächen?

Ansonsten würde ich versuchen, immer kleine Inseln zu bilden. Dafür ist die Ausführungszeit sicher noch akzeptabel. Und dann in einem 2. Schritt die Inseln zu verbinden.

Ich weiss ja nicht, was Du dann mit diesem Körper aus 30.000 Flächen machen willst.
Aber jede nachfolgende Boolsche Operation wird dann ebenfalls wieder sehr lange dauern!

Am besten man extrahiert die Punkte, und vermascht das ganze mit dem DGM in Allplan neu...

Hallo Nemo!

Ja das mit den Inseln funktioniert super, ist zwar extrem aufwändig, aber zumindestens kommt man ans Ziel!
Ich habe dann noch versucht, anstatt die einzelnen 3D-Flächen zu vereinigen, diese abschnittsweise mit einem Zylinder zu vereinigen, dann entsteht anstatt einer 3D-Fläche eine 3D-Fläche allgemein, die Vereinigung ist dann um ein Vielfaches schneller. Kann es sein, dass dadurch der Modellierkern aktiviert wurde?

Den 3D-Körper habe ich somit mal erstellt, er wird auch als 3D-Körper Allgemein erkannt und hat ein Volumen, zwar nur mit 30.000 von den ca. 300.000 Flächen des DGMs aber 30.000 ist schon mal ein brauchbarer Anfang.

Allerdings zum nächsten Problem: Wenn ich einen Schnitt durch das Gelände lege stürzt das Programm ab, und das bereits bei 17.000 Punkten, 50.000 Kanten und 32.000 Flächen. Hast Du vielleicht eine Ahnung, wie komplex in Allplan diese Körper sein können um noch zu funktionieren? Bzw. ab wann ist hier Schluss?

Vor einigen Jahren gab es mal einen Beitrag zur CDS Buaugrube wo drinnen stand: Ab 5.000 Flächen wird es in Allplan schwierig, also wurde das Addon auf 5000 limitiert.

Ich leg mal das DGM bei

Anhänge (1)

Typ: application/octet-stream
636-mal heruntergeladen
Größe: 16,50 MiB

Die in der NOI definierten GRenzen für das Polyhedron lauten:

MaxCountOfPoints() = 715.827.882
MaxCountOfEdges() = 2.147.483.647 = 2^31-1
MaxCountOfFaces() = 536.870.911

Das sind aber die absoluten Grenzen!
Ein Test hat gezeigt, dass bei CountOfFaces ~ 1.290.531 bei der Erzeugung des Polyhedrons in der Datenbank die Grenze erreicht ist!
Wo diese Grenze beim Generieren von Schnitten gezogen wird, kann ich nicht sagen.

Voraussetzung ist aber in jedem Fall ein topologisch korrektes Polyhedron.
Wenn dort Fehler drin sind, kann es schon mal zu Abstürzen kommen.
Ggf. sollte man testen, in den Optionen den minimalen Punktabstand hochzusetzen.
Damit wird die Toleranz für das Finden "gleicher Punkte" und die für Koplanarität erhöht.

Bei Dir handelt es sich aber durch die Vereinigung mit einem BREp um einen "3D-Körper allgemein", also ein BRep. Dafür ist dann der Prasolid-Kern beim Schnitt zuständig. Und glaub mir, dafür ist der nicht gemacht!
Wenn überhaupt geht, würde ich es mit einem Polyhedron, also einem "3D-Körper" versuchen!
Vergiss die Vereinigung mit einem Zylinder! (Wozu war die eigentlich gut???)

Es gibt mit dem Add-On Geometry Tool folgenden Trick.
1. Export viele einzelne 3D Flächen als OBJ File
2. Import wieder dieses OBJ File mit dem Geometrie Tool

Somit bekommst du am einfachsten eine vereinte Fläche.

Gruss Thierry

http://www.cds-bausoftware.ch

Ja mit dem 3D-Körper funktionieren die Schnitte recht gut.
Die Vereinigung mit dem Zylinder habe ich mal versucht, um das Ganze als temporäres BREP zu modellieren, die Vereinigung von Flächen war dann um ein Vielfaches schneller, bzw. überhaupt erst möglich. Dann wie du sagst habe ich das Ganze wieder in 3D-Körper umgewandelt um die Schnitte zu generieren.
Insgesamt hat das Funktioniert, es ist halt nicht durchgängig und etwas aufwändig, aber man kommt irgendwie zum Ziel.

Allerdings eine weitere Frage: UVS sind nicht für BREPs geeignet?