abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
DE
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Hmooslechner
Moderator

2D-GDL Kreise verteilen

Ich hatte vor Jahren schon mal ein GDL gestrickt, welches Kreise einigermaßen gleichmäßig in einer rechteckigen Fläche verteilt, aber das war nicht besonders gut gelöst und man erkannte das dahinter liegende Raster.

Das alte Teil:
https://bimcomponents.com/GSM/Details/24116

 

 

Ich habe nun Gemini 3.1 genutzt, um mir eine gleichmäßigere Verteilung herzustellen und nach X Versuchen hat es geklappt:

 
 

Screenshot 2026-02-20 102653.png

Habs mal auf Bimcomponents hochgeladen - dauert sicherlich noch einige Tage, bis es dort aufscheint.

 

AC29EduAut:
https://www.dropbox.com/scl/fi/hpw91huipdudxo3fiw7p0/Kreise-verteilen.pln?rlkey=jdrfq2l2sjqr3tnnvxxv...



AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia
18 ANTWORTEN 18
Frank Beister
Moderator

Geht es dir um die Verteilung oder echtes Circle-Packing? Mit letzterem hatte ich mich vor langer Zeit auch mal beschäftigt. Allerdings nur mit einer iterativen Herangehensweise. Von Lösung will ich nicht sprechen, da es anscheinend keinen 100% zielführenden Algorithmus gibt. 

bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Hmooslechner
Moderator

Mein Prompt an Gemini:

 

"Aufgabe an Dich: ich will die Kreise vollkommen zufällig verteilt bekommen. Man soll als Mensch dann kein sich wiederholendes Muster erkennen können. Ich möchte einen kleinsten Durchmesser angeben und einen größten Durchmesser angeben aber die Kreise dürfen sich nicht berühren oder überlagern. Ich möchte einen Mindestabstand zwischen den Kreisen angeben können Ich benötige keine Farben, sondern nur die Darstellung der Kreise in der Fläche."

 

Nach mehreren "Fehlversuchen" das Ergebnis:

 

Gemini:

"Um eine sehr hohe Dichte (wie in Deinem Ursprungsbild) ohne Raster zu erreichen, müssen wir den Algorithmus umdrehen: Wir suchen uns zuerst einen blinden Punkt und schauen dann, wie viel Platz dort noch ist.


Der neue Algorithmus macht Folgendes:

 

  • Wähle eine zufällige Koordinate.
  • Miss den Abstand zum nächsten Nachbarn (oder zum Rand).
  • Wenn der Abstand kleiner als minR ist, verwerfe den Punkt.
  • Wenn genug Platz ist, mache den Kreis exakt so groß, dass er die Lücke füllt (aber maximal so groß wie maxD).

    Dadurch wird wirklich jeder gültige Versuch zu einem Treffer, und kleine Lücken werden automatisch mit perfekt passenden kleinen Kreisen gefüllt. Das Ergebnis wird extrem dicht und zellular wirken!"
AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia
Frank Beister
Moderator

Ja, sehr cool, aber durch die zufällige Platzsuche steigt der Aufwand exorbitant, weil immer mehr Punkte verworfen werden:

circles.png

1000, 2000, 4000 Versuche mit je max. 10 Unterversuchen.

Da könnte man sich auch andere Varianten überlegen, die iterativ in zufälligen Minischritten vorgehen. Oder nach einem gewissen Füllgrad gezielt Lücken suchen. Aber vielleicht hat Gemini da ja noch eine Idee dazu? 😉

bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Hmooslechner
Moderator

Gemini: "You've reached your rate limit. Please try again later".  Solange es mir keiner zahlt - dauertzs halt.. und ich bin auch nicht immer "greifbar".   😇

AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia
Hmooslechner
Moderator

Jetzt ging wieder eine Frage.. Ich wollte das alte Esteban Ramos Polygonobjekt als Umrandung nutzen - und er soll mir die Fläche mit dieser neuen Funktion füllen.

Ein Randproblem was Gemeni 3.1 derzeit noch hat: er schluckt bei der Übermittlung die eckigen Klammern für Arrays, weil die Browserdarstellung dies als externen Verweis rausfiltert. Also habe ich ihm geraten, {  } - Klammern zu verwenden und ich tausch die dann einfach aus. Funktioniert.

Was schreibt er doch lustig zurück?

Zu deinem grandiosen GDL-Projekt: Das ist eine fantastische Idee!
Wir nehmen jetzt den dynamischen Polygonzug und machen daraus eine "intelligente Grenze" für unsere organische Kreisverteilung.

Das erfordert mathematisch einiges an GDL-Zauberei:

  1. Polygonzug schließen: Das ist der einfachste Teil (eine Linie vom letzten zum ersten Punkt).

  2. Überschneidungs-Prüfung (Self-Intersection): Wir müssen jede Linie des Polygons mathematisch gegen jede andere Linie prüfen. Wenn sie sich kreuzen -> Fehlertext anzeigen.

  3. Punkt-in-Polygon-Test (Raycasting): Wenn wir zufällige Kreise generieren, müssen wir prüfen, ob der generierte Mittelpunkt überhaupt innerhalb der gezeichneten Fläche liegt.

  4. Randabstands-Prüfung: Der Kreis darf nicht über den Polygonrand hinausragen. Wir müssen also berechnen, ob der Abstand des Mittelpunkts zu jeder Außenkante mindestens so groß ist wie der Radius.

Ich habe das alles in deinen 2D-Script eingebaut. Damit du mit deinem Suchen-und-Ersetzen-Trick perfekt arbeiten kannst, habe ich im gesamten 2D-Skript (auch in deinem alten Code) jede eckige Klammer durch geschweifte Klammern { und } ersetzt.

Wichtig: Vergiss nicht, die Parameter minDmaxDminDist und maxVersuche in den Parametern deines neuen Objekts anzulegen, sonst gibt das Skript eine Warnung aus.

Hier ist das komplette, neue 2D-Script. (Einfach kopieren und in ArchiCAD Strg+H bzw. Cmd+H drücken, um { durch `` zu ersetzen):

 

Und es ging aufs erste Mal !

Hatte ich noch nie.

 

Screenshot 2026-02-20 143639.png

 Der alte Link - hab ich bei der Datei einfach Estebans Polygon hinzugefügt..
https://www.dropbox.com/scl/fi/hpw91huipdudxo3fiw7p0/Kreise-verteilen.pln?rlkey=jdrfq2l2sjqr3tnnvxxv...

AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia
Hmooslechner
Moderator

Jetzt habe ich mal Deeepseek (China-KI) genomen:

https://chat.deepseek.com/share/scxy3toyfd4ptl8u8q

Zuerst habe ich ihn zu GDL befragt, angetestet, dann die Aufgabe gegeben - den Randabstand zu implementieren und dann, den Algorithmus effizienter zu gestalten. Den Randabstand hat er sehr schnell implementiert, den Algorithmus zu verbessern schickte uns in eine ähnliche Fehlerkorrektur-Prozedur wie bei Gemini aber schlussendlich hat derCode dann funktioniert, wenn er mir auch nicht performanter vorkommt, als der vorige Code.

 
 
 

Deepseek2.jpg

 

AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia
Hmooslechner
Moderator

Hab mal das Teil noch vollkommen anders denken lassen - als Voroni-ähnliche Aufteilung und mit 3D:

 

Die Chinesische DeepSeek- KI hat mich da nicht mehr "verstanden" aber Google Gemini3.1 schon.

 

Voroni.jpg

 ist nun im ursprünglichen Dropbox-Link enthalten..

AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia
torben_wadlinger
Virtuoso

Es würde schneller gehen, wenn man über die freien Flächen Buch führt und die Berechnungen für die kleineren Kreise nur noch auf diesen Flächen ausführt. Quasi wie ein Sieb. Dafür müsste man ein Raster über die zu füllende Fläche legen und die belegten Zellen kennzeichnen. In der Folge würde die Anzahl der Teilflächen ansteigen, während sie gleichzeitig kleiner werden. Im Idealfall sind zum Schluß nur noch die Teilflächen übrig, in die genau ein Kreis mit dem kleinsten Durchmesser reinpasst. Das würde die Ausführung dramatisch beschleunigen.

Archicad seit v5.0 bis v29 | macOS und Windows | BIMCloud selbst gehostet | BIM-zertifiziert gemäß BAK und BIngK | BIM-Referent AK RLP
Hmooslechner
Moderator

Torben - Dein Gedanke - die KI hat mir das auch vorgeschlagen und ich habs versucht - aber es wirkt sich nicht "schneller" aus. Im File sind die einzelnen Stufen der Entwicklung als extra GDLs drin. Kann natürlich daran liegen, daß die KI hier noch nicht genügend optimiert hatte. Dies ist ja kein versuch, sowas herzustellen, sondern vielmehr ein Versuch, wie weit die KI derzeit entwickelt ist und ob sie schon sinnvoll auch für komplexe Aufgaben nutzbar ist. 

Beispielsweise habe ich zum jetzigen Zeitpunkt herausgefunden, daß Deepseek und Gemini3.1 auf sehr ähnlichem Niveau agieren - aber Gemini3.1 noch einen Tick weiter ist. Deepseek kann leider keine Bilder erkennen, sondern nur OCR auf Bilder machen - Gemini kann das sehr wohl schon länger usw..

 

Beide KI`s erkennen den Sinn einer GDL ohne, daß ich ihn erklären muss und schlagen Verbesserungen vor.

AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia

Keine Antwort gefunden?

Andere Beiträge
im Board ansehen

Zurück zum Board

Neueste Lösungen durchsuchen

Akzeptierte Lösungen zeigen

Eine neue Diskussion starten!

Neues Thema erstellen