Es ist noch viel Arbeit - aber es zeichnet sich doch ab, wo die Reise hingeht..
Ich möchte einfach das Thema Fenster komplett neu betrachten - um von der unübersichtlichen Fülle der einstellbaren Parametern der Standardfenster "wegzukommen".
Alles "was irgendwie geht", sollte automatisch ablaufen - ohne nötigen Eingriff durch den Anwender - oder - dann direkt im Zeichungseditor durch möglichst wenig Anfasserpunkte.
Es gibt noch ungelöste Probleme dabei, weil es Graphisoft dem GDL-Programmierer nicht gerade einfach macht, an die Daten der Wand "zu kommen". Was im 2D problemlos auszulesen ist - ist im 3D nicht so einfach zu bekommen. Die Anschalgformen, welche Graphisoft in seinen Fenstern verwendet, scheinen Firmengeheimnisse zu sein , da komm ich zumindest nicht an die nötigen Informationen -bzw - denke ich sogar, dass hier Graphisoft bisher nur rechteckige Öffnungen angedacht hat.
Mit Wallhole und Wallniche sind allerdings polygonale Formen zumindest durchzustanzen möglich - wenn auch mit Einschränkungen.
Aus diesen oben genannten Gründen habe ich bisher mein Fenster mit eigenen umlaufenden Tubes gelöst...
Arbeitsfortschritt am Multifenster - GDL:
Strukturdarstellungen funktionieren im 2D und 3D,
Schichteinzüge im Grundriss, 3D und somit Schnitt funktionieren - jetzt einmal für 2 Außenschichten - Putz und WD - (im Gegensatz zu den Darstellungen der mitgelieferten GS-Bibliothek im Schnitt - Sturzdarstellung)
Im Grundriss - bei Wandanschluß können wichtige Werte direkt mit Anfassern gezogen werden. (geht in der Gs-Bibliothek auch komplett ab!)
Noch zu tun:
Logische Lösung für Fensterbank bei polygonaler Form - innen und aussen..
Fensterfaschen
Innenraster mit Angabe von Paneel und Flügel - analog zu Glasfassaden - Werkzeug
Ausrichtung des Fensters in der Wand bei Einsatz von anderer Wandseite.
Das noch kommende Innenraster könnte man in verschiedner Art und Weise herstellen:
Entweder man Rastert das Ganze - mit verstellbaren Rasterbreiten und schaltet die Sprossen im Raster ein oder aus - oder man erstellt beliebig zu verschiebende Körper und schiebt sie an die gewünschten Stellen.
Im Raster wären Fensterflügel wesentlich einfacher einzupassen.
Wenn man selber Sprossen einsetzt, muß man auch selber Fensterrahmen einsetzen und anpassen - müßte aber auch funktionieren..
Jetzt habe ich das Rahmenprofil auch als Profilmanager-Profil hinzugefügt.
(Noch habe ich die Abfrage nicht eingebaut, aber ich will das Rechteckprofil als Alternative mal im Code vorhanden lassen.)
Dann dachte ich, dass es eine gute Idee sein könnte, wenn man auch Fensterbänke einbauen könnte. Da allerdings die Form ja vollkommen frei gehalten und somit programmtechnisch "unvorhersehbar" ist, muss hier der Anwender mit Anfassern eingreifen, wo genau die Fensterbank in der Kontur beginnen und enden soll.
Deshalb gibt es jetzt eine Kontur mit 5 Punkten um die gesamte Form herum, wo man die unnötige Fensterbank wegschneiden kann.
(Dabei wäre es theoretisch möglich, auch die Umkehrung des Wegschnittes für das Normalprofil anzuwenden, aber dies bringt dann zusätzliche Probleme mit der Wallhole, weil ein Stockprofil in Real "höher" ist, als ein Seitenprofil und somit der Anschluss innen beim Glas nicht passt. )
Jetzt schon merkt man Performance-Probleme im Bildaufbau in 3D - kommt wahrscheinlich auch aus dem Umstand, dass ich die Wallhole im Ablauf für die Fensterbank ein 2. Mal drinhabe - das nehm ich noch raus.
Nun habe ich den Code nochmals ein wenig umgestellt, um Doppelgleisigkeiten zun entfernen und die Performance erhöht, indem ich die direkte Mit-Rechnerei während des Editierens rausgenommen habe.
Dann habe ich die Cutpolybefehle mit Anfassern verbunden, um das Dreieck zum alternativen Wegschnitt - "Fensterbank nicht Fensterbank - Profil" zueinander besser zu regeln.
Es ergeben sich einige Problemsituationen, weil die Profilhöhe eines Fenster-Rahmens mit und ohne Fensterbank natürlich unterschiedlich ist.
Grundsätzlich funktioniert es schon mal recht gut.
einige Gedanken zur Weiterentwicklung:
Angleichung der Anzahl der erzeugten Bogen-Segmente an die Archicad-Grundeinstellung für Bogenformen. Zusätzliche Anfasser zum nachträglichen Editieren der Position der Polygon-Randpunkte? Man kann das X-Y-Ausmaß des Pfad-Profiles auslesen und das sollte dann A und B des Fensters überschreiben. Grundrissdarstellung des Profiles mit Anfasser zum Anpassen der Laibungstiefen und der Glasposition.
Für eine korrekte Darstellung des Fensters im Grundriss wäre es ohnehin nötig, die 2D-Darstellung von "Symbolisch" auf "Projiziert mit Untersicht" zu stellen - Stichwort Meterschnitt, aber für die Darstellung der Modelldarstellung gibt es dann noch sehr viel Arbeit.
Abzugskörper für den Schnitt zwischen Profil mit und ohne Fensterbank ist nun beim Ziehen an den Anfasserpunkten sichtbar. - Dies kann nun auch in der zuschaltbaren 2D-Darstellung geschehen.
Einen Ablauffehler habe ich korrigiert: Wenn am Ende des Randpolygones ein Bogen lag, wurde der letzte Dummy-Punkt für die Tube falsch reingeschrieben.
Ich würde gerne die Boundingboxmaße meines Randprofiles als neues A und B für das Fenster übernehmen, um eine stimmende 2D-Symboldarstellung programmieren zu können.
leider funktioniert der Profilaufruf aus dem Parameterscript nicht wirklich.
if FensterrandPfad then. !!! FensterrandPfad = Profil-Parameter
Gibts da überhaupt eine Lösung oder geht das gar nicht?
Sonst muss ich wohl die A+B-Maße auf 0 stellen und im 2D einfach eine Fläche über die Wand drüberzeichnen lassen mit neuen Randpunkten, was ich eigentlich vermeiden will.
Verdammt!. Schon wieder muss ich einen Umweg mit der Kirche ums Kreuz machen - grins!
Die Verantwortlichen bei Graphisoft, die sowas unmöglich machen, sollte man mal ein wenig bei den Ohren...... oder übers Knie... sorry, natürlich NICHT.
Ja, naja, es ist ärgerlich insofern, wenn man die Größe des Objekts auswerten will. Das geht dann nicht wirklich. Aber! Die Ungarn haben sich schon was dabei gedacht. Denn es hätte keine 5 Minuten gedauert, und jemand hätte sich über einen Absturz beschwert, weil man so nämlich leicht ausversehen eine unendliche Schleife erzeugt. Wenn "A" und "B" nämlich auch zur Eingabe genutzt werden?....