am 2026-02-20 10:29 AM
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:
Habs mal auf Bimcomponents hochgeladen - dauert sicherlich noch einige Tage, bis es dort aufscheint.
am 2026-02-20 11:09 AM
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.
am 2026-02-20 12:08 PM
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:
2026-02-20 02:15 PM - bearbeitet 2026-02-20 02:17 PM
Ja, sehr cool, aber durch die zufällige Platzsuche steigt der Aufwand exorbitant, weil immer mehr Punkte verworfen werden:
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? 😉
am 2026-02-20 02:21 PM
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". 😇
2026-02-20 02:37 PM - bearbeitet 2026-02-20 02:40 PM
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:
Polygonzug schließen: Das ist der einfachste Teil (eine Linie vom letzten zum ersten Punkt).
Ü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.
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.
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 minD, maxD, minDist 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.
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...
2026-02-21 07:20 AM - bearbeitet 2026-02-21 07:21 AM
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.
2026-02-21 04:54 PM - bearbeitet 2026-02-21 05:04 PM
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.
ist nun im ursprünglichen Dropbox-Link enthalten..
am 2026-02-21 07:40 PM
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.
2026-02-22 08:27 AM - bearbeitet 2026-02-22 08:30 AM
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.