abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Ab dem 6. August 2024 wird TLS 1.2 die mindestens erforderliche Protokollversion für Graphisoft-Produkte und -Dienste sein, die eine Internetverbindung benötigen, ein Update des Lizenz Manager Tools ist erforderlich. Weiter lesen…
Programmierung
Alles über Programmierung in GDL und Python

Die richtige Formel ?!

Anonymous
Nicht anwendbar
Hallo;
Ich bin auf der Suche nach der richtigen Formel; so eine art " FOR.. NEXT-Schleife "

Wenn mein Korpuss in der Höhe größer wird, dann soll das auch die darin
befindliche Schublade machen;
Aber: Die Schublade darf nur in einem bestimmten Raster wachsen,
und ab einer gewissen höhe dann sich gar nicht mehr vergrößern.
Frage: geht das mit einer bestimmten Formel, oder gibt es sogar dafür einen
eigenen Befehl?

(zb.: Raster der Schubladengröße = 20mm / und bei größe 500mm ist dann schluss )

Kann mir da jemand weiterhelfen ? 🙄

Gruß Wolfgang
7 ANTWORTEN 7
Hmooslechner
Rockstar
Kein eigener Befehl.. Du mußt nur einen Weg finden, Deine Bedingungen mit normalen If then und for next-Schleifen zu bestimmen.

Versuche es zuvor an kleinen einfachen Beispielen mit Linien im 2D, damit Dich die 3D Umgebung nicht sört, bis Du "es drauf hast"..
AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia
Anonymous
Nicht anwendbar
Welche Einbauteile hat der Korpus ?
Genau eine Schublade mit Höhe hs (Sprünge im 20 mm Raster) + ein Restfeld mit Höhe hb als Blende oder Tür ? Oder soll da noch mehr sein - z.B. mehrere Schubladen?

Annahme:
kh = Korpushöhe gesamt
hs = Schubladenhöhe
hb = Höhe Blende
hs+hb =kh
Anonymous
Nicht anwendbar
"hmooslechner" wrote:
Kein eigener Befehl.. Du mußt nur einen Weg finden, Deine Bedingungen mit normalen If then und for next-Schleifen zu bestimmen.

Versuche es zuvor an kleinen einfachen Beispielen mit Linien im 2D, damit Dich die 3D Umgebung nicht sört, bis Du "es drauf hast"..



For next-Schleifen gibt mir doch nur die möglichkeit Elemente hinzuzufügen, und
nicht ein Element wachsen zu lassen; oder ?!
Hmooslechner
Rockstar
Der Folgende Code macht sowas für Stiegenberechnungen - Auch ein Schwellenwert (MaxSTHoehe), der nicht überschritten werden darf und eine neue zusätzliche Stufe auslöst..



!!! Testobjektfür Programmierreihenfolgen für  Stiegenfunktionen
gosub "Vorgaben"
gosub "Höhenangabe überAnfasser"

gosub "berechne"

gosub "verschiebe"

gosub "zeichne"


end: !-------------------------------------------------------------------------------------------!!!



"Höhenangabe überAnfasser":

HOTSPOT2 0, 0, hsid, zzyzx, 1: hsid = hsid+1
HOTSPOT2 0, -0.1, hsid, zzyzx, 3: hsid = hsid+1
HOTSPOT2 0, zzyzx, hsid, zzyzx, 2: hsid = hsid+1

return




"berechne":

Anzahlkomma = zzyzx/ MaxSTHoehe
Anzahl = CEIL (Anzahlkomma)
StuHoehe = zzyzx / Anzahl
STuBreite = 0.63 - (2*StuHoehe)

return






"verschiebe":


MTXY[1][1] = 0
MTXY[1][2] = 0

for ii=2 to Anzahl+1


MTXY[ii][1] = MTXY[ii-1][1] + STuBreite
MTXY[ii][2] = MTXY[ii-1][2] + StuHoehe

next II

for ii=2 to Anzahl+1
add2 MTXY[ii][1], 0
HOTSPOT2 0, 0, hsid, MTX[ii], 1: hsid = hsid+1
HOTSPOT2 -0.1, 0, hsid, MTX[ii], 3: hsid = hsid+1
HOTSPOT2 MTX[ii], 0, hsid, MTX[ii], 2: hsid = hsid+1
del 1
next II


for ii=2 to Anzahl+1

if MTX[ii] > eps then
MTXY[ii][1]=MTXY[ii][1] + STuBreite
for iii= ii to Anzahl+1
MTXY[iii+1][1]=MTXY[iii][1] + STuBreite
next iii
else
endif


next II



return




"zeichne":


text2 0,0, str(Anzahl, 1,0) + " STG., " + str(StuHoehe,5, 3) + "/" + str(STuBreite , 5, 2)

for ii=1 to Anzahl


hotspot2 MTXY[ii][1], MTXY[ii][2]
line2 MTXY[ii][1], MTXY[ii][2], MTXY[ii+1][1], MTXY[ii][2]
line2 MTXY[ii+1][1], MTXY[ii][2], MTXY[ii+1][1], MTXY[ii+1][2]


next ii




return



"Vorgaben":

hsid =101
eps=0.0001
DEFINE STYLE Beschriftungsatextart arial, 1, 1, 0
style Beschriftungsatextart

return
AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia
Anonymous
Nicht anwendbar
"Egon" wrote:
Welche Einbauteile hat der Korpus ?
Genau eine Schublade mit Höhe hs (Sprünge im 20 mm Raster) + ein Restfeld mit Höhe hb als Blende oder Tür ? Oder soll da noch mehr sein - z.B. mehrere Schubladen?

Annahme:
kh = Korpushöhe gesamt
hs = Schubladenhöhe
hb = Höhe Blende
hs+hb =kh


Normaler Standard-Korpuss mit nur einer Schublade.
Korpuss ist 200mm hoch
Schublade ist 100mm hoch
Wenn man den Korpuss um zb. 50mm erhöht, dann soll sich aber
die Schublade nur im Raster; also 40mm erhöhen.
Ich kann das natürlich auch mit IF THEN ELSE erzwingen, aber
da müsste ich dann für jeden 20mm Schritt das tun und meine
Schublade soll ja bis 500mm wachsen können!
Anonymous
Nicht anwendbar
Vorschlag:




Parameter die in der Parameterliste unter anderen definiert werden müssen:
kh = Korpushöhe
kb = Korpusbreite
k = Stärke der Korpusplatten
e = Rasterabstand (Sprungmaß der Schubladenhöhe - gewünscht z.B. 0.02 m )

Daraus ergibt sich:
kh-2*k = Korpusinnenmaß


a) Ermittlung der im Rasterabstand maximal möglichen Schubladenhöhe durch einen Hilfsparameter
yy = (Korpusinnenmaß / Rastermaß - Nachkommastellen des Ergebnisses) x Rastermaß

Allgemein mit Parametern:
yy = ( (kh-2*k)/e - FRA ((kh-2*k)/e) ) * e

b) Randbedingungen
• Schubladenhöhe sh min. 10 cm (z.B. konstruktionsbedingte min. Schubladenhöhe)
IF yy < (0.10+e) THEN sh = 0.10
ENDIF
• Schubladenhöhe sh max. 50 cm (z. B. wie vorgegeben)
IF yy >= 0.50 THEN sh = 0.50
• Schubladenhöhe sh wenn vorige Bedingungen nicht zutreffen
IF (0.10+e) <= yy < 0.50 THEN sh = yy
ENDIF

Zusammenfassung:
yy - Tatsächlich mögliche Ladenhöhe im Rastermaß aber sonst vorerst ohne Randbedingungen berechnen
sh - Endgültige Ladenhöhe unter Berücksichtigung der Randbedingungen festlegen
Ab dann im weiteren Skript mit Ladenhöhe sh arbeiten.

PS: Die Minimumhöhe der Schublade habe ich im Beispiel mit 10 cm angenommen. Das bedingt natürlich eine entsprechende Korpusinnenhöhe.
Anonymous
Nicht anwendbar
Funktioniert !

Danke vielmals für die Hilfe
😄