abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

Dynamisches Parameter Script

Anonymous
Nicht anwendbar
Eine Frage und Hallo:

Möchte mal in die GDL-Runde fragen, ob es möglich ist ein Parameter Script dynamisch zu generieren???

Vorgeschichte:

habe eine Array mit einer Ausdehnung von ca. 350 "Einheiten"(pro Array genau 17 per TABS getrennte "Variablen")

in der Umsetzung kann ich natürlich genau per SPLIT diese "Variablen" auswerten um umsetzen - nun aber der Punkt, dass ich im Menu / in den Eigenschaften des Objekts eine Auswahl haben muss - im Bereich der normalen Programmierung bzw. im Internet könnte man ein sogenantes "dynamisches Include" generieren - aber wie mach ich das im GDL ??? Ziel wäre eine dynamische Füllung der Parameter, aber ich habe ja keine SQL Abfrage um die Auswahl zu füllen, sondern nur ein Array. Nun also die Frage: Kann ich im Parameter Scriptdynamisch agieren oder nur statisch? - Versteht wahrscheinlich jetzt keiner, deshalb die Zusatzinfo: Möchte ein Stahl-Profil generieren mit hinterlegten Daten der kompletten "Stahltabelle" - die Daten kommen aus einer SQL / XMLl Datei und ich möchte diese in ein GDL einfügen - aber nur im Master Script und die Programmierung soll so sein, dass das Parameter-Script diese Daten automatisch umsetzt und ich nicht wieder "aufs neue" manuell alle möglichen Varianten neu eingebe. - Hoffe es war einigermassen schlüssig erklärt.

Grusss AR
6 ANTWORTEN 6
Anonymous
Nicht anwendbar
Was möchtest Du genau dynamisch erzeugen im Parameter-Script?

Werte einlesen von extern kannst Du auf mehrere Weisen.
Z.B. per GDL TEXT (oder DATA) Addon Werte aus einer tab-getrennten Text-Datei (was im Prinzip auch mit einer SQL-Datei gehen müsste) oder aus einem Makro, welches ab ArchiCAD 10 auch Werte zurückgeben kann per RETURNED PARAMETERS, so dass Du das Array komplett im Makro erklären kannst.

Und Array können auf jeden Fall dynamisch gefüllt werden.
Anonymous
Nicht anwendbar
so jetzt bin ichs noch mal wieder 🙂

also möchte mein problem noch mal "anders" erklären.

im master script habe ich ein array - dazu kurz ein beispiel:

!l_p = Länge Profil
!a_p = Aeussere Kantenlänge a - mm
!b_p = Aeussere Kantenlänge b - mm
!t_p = Wanddicke - mm
!r_p = Aeusseere Eckrundung - mm
!q_p = Querschnittsflaeche - cm2
!g_p = Gewicht pro Meter - kg/m
!o_p = Oberfläche - m2/m
!ly_p = Statische Werte fuer die Biegeachse - cm4
!wy_p = Statische Werte fuer die Biegeachse - cm3
!iy_p = Statische Werte fuer die Biegeachse - cm
!lz_p = Statische Werte fuer die Biegeachse - cm4
!wz_p = Statische Werte fuer die Biegeachse - cm3
!iz_p = Statische Werte fuer die Biegeachse - cm
!lt_p = Statische Werte fuer die Verdrehung - cm4
!wt_p = Statische Werte fuer die Verdrehung - cm3
!wply_p = Plastisches Wiederstandsmoment - cm3
!wplz_p = Plastisches Wiederstandsmoment - cm3
!a_a = ausgewaehlte Aeussere Kantenlänge a - mm
!b_a = ausgewaehlte Aeussere Kantenlänge b - mm
!t_a = ausgewaehlte Wanddicke - mm
!======================================================================================
!Ende - Erklärung der verwendeten Variablen
!======================================================================================
!======================================================================================
!Start - Definition der möglichen Profile
!======================================================================================
p[1]=" 40 40 2.9 2.9 4.23 3.32 0.155 9.66 4.83 1.51 0 0 0 15.0 7.97 5.86 0 "
p[2]=" 40 40 3.2 3.2 4.62 3.63 0.155 10.4 5.19 1.50 0 0 0 16.2 8.65 6,35 0 "


das array "p" hat ca. 350 "zeilen"

mit der folge:

split_p = SPLIT (p, "%n %n %n %n %n %n %n %n %n %n %n %n %n %n %n %n %n", a_p, b_p, t_p, r_p, q_p, g_p, o_p, ly_p, wy_p, iy_p, lz_p, wz_p, iz_p, lt_p, wt_p, wply_p, wplz_p)


kann ich das eine definierte zeile im array wunderbar meinen parametern zuweisen.

das ganze muss aber irgendwie passieren, indem ich im parameter script ein stahlprofil auswähle - dies würde im normalfall so aussehen:

!values "art" "quadratisch",
"rechteckig"

!if art="quadratisch" then
! values "typ" "40 x 40",
! "50 x 50",
! "60 x 60",
! "70 x 70",
! "80 x 80",
! "90 x 90",
! "100 x 100",
! "110 x 110",
! "120 x 120",
! "140 x 140",
! "150 x 150",
! "160 x 160",
! "180 x 180",
! "200 x 200",
! "220 x 220",
! "250 x 250",
! "260 x 260"
!endif
!
!if art="rechteckig" then
! values "typ" "50 x 30",
! "60 x 40",
! "70 x 40",
! "80 x 40",
! "90 x 50",
! "100 x 50",
! "100 x 60",
! "110 x 60",
! "120 x 60",
! "120 x 80",
! "140 x 70",
! "140 x 80",
! "150 x 100",
! "160 x 80",
! "160 x 90",
! "180 x 100",
! "200 x 100",
! "200 x 120",
! "220 x 120",
! "250 x 150",
! "260 x 140",
! "250 x 180",
! "300 x 200"
!endif
!
!if typ="40 x 40" then
! values "wd" "2.9",
! "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1"
!endif
!
!if typ="50 x 50" then
!
!
!
!
!! values "wd" "2.9",
!! "3.2",
!! "3.6",
!! "4.0",
!! "4.5",
!! "5.0",
!! "5.6",
!! "6.3",
!! "7.1",
!! "8.0"
!endif
!
!if typ="60 x 60" then
! values "wd" "2.9",
! "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0"
!endif
!
!if typ="70 x 70" then
! values "wd" "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="80 x 80" then
! values "wd" "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="90 x 90" then
! values "wd" "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="100 x 100" then
! values "wd" "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="110 x 110" then
! values "wd" "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="120 x 120" then
! values "wd" "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="140 x 140" then
! values "wd" "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="150 x 150" then
! values "wd" "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="160 x 160" then
! values "wd" "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="180 x 180" then
! values "wd" "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="200 x 200" then
! values "wd" "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="220 x 220" then
! values "wd" "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="250 x 250" then
! values "wd" "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="260 x 260" then
! values "wd" "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0",
! "17.5"
!endif
!
!if typ="50 x 30" then
! values "wd" "2.9",
! "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1"
!endif
!
!if typ="60 x 40" then
! values "wd" "2.9",
! "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0"
!endif
!
!if typ="70 x 40" then
! values "wd" "2.9",
! "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0"
!endif
!
!if typ="80 x 40" then
! values "wd" "2.9",
! "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0"
!endif
!
!if typ="90 x 50" then
! values "wd" "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="100 x 50" then
! values "wd" "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="100 x 50" then
! values "wd" "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.,0",
! "11.0",
! "12.5"
!endif
!
!if typ="100 x 60" then
! values "wd" "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="110 x 60" then
! values "wd" "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="120 x 60" then
! values "wd" "3.2",
! "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="120 x 80" then
! values "wd" "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="140 x 70" then
! values "wd" "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="140 x 80" then
! values "wd" "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="150 x 100" then
! values "wd" "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="160 x 80" then
! values "wd" "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="160 x 90" then
! values "wd" "3.6",
! "4.0",
! "4.5",
! "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5"
!endif
!
!if typ="180 x 100" then
! values "wd" "5.0",
! "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="200 x 100" then
! values "wd" "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="200 x 100" then
! values "wd" "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="200 x 120" then
! values "wd" "5.6",
! "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="220 x 120" then
! values "wd" "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="250 x 150" then
! values "wd" "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="260 x 140" then
! values "wd" "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="260 x 180" then
! values "wd" "6.3",
! "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!
!if typ="300 x 200" then
! values "wd" "7.1",
! "8.0",
! "8.8",
! "10.0",
! "11.0",
! "12.5",
! "14.2",
! "16.0"
!endif
!!======================================================================================
!!Ende - Definition der Paramter im Menu
!!======================================================================================

meine frage war nun: kann ich das parameter script so automatisiert füllen, dass egal was im array steht, alles nötige im parameter script generiert wird???? - das war die ausgangsbasis.
nun hatte ich mir folgendes überlegt:

um bei auwahl "quadratisch" eine parameter liste zu haben:

FOR i = 1 TO VARDIM1(p)
split_p = SPLIT (p, "%n %n %n", var1, var2, var3)
IF var1 = var2 THEN
FOR j = 1 TO VARDIM1(tst)
!PRINT VARDIM1(tst) & " Anzahl"
IF tst[j] = var1 THEN
ELSE
tst[j+1]= var1
PRINT tst
ENDIF
NEXT j
ENDIF
NEXT i

aber so geht es difinitiv nicht, denn mein "neues" array kann ich nicht wirklich dynamisch aus dem ersten array füllen.......

jetzt die frage nach ideen???
zzyzx
Newcomer
mal eine frage am rande: das sind ja offenbar stahlrofile. wenn du daraus nun eine kleine halle baust, könnte es sein, dass die ganzen parameterzuweisungen das archicad stark ausbremsen (muss nicht sein, kann aber...). wenn das so ist, wäre das objekt nicht wirklich einsetzbar und der aufwand umsonst.

vielleicht erstmal testen, wie sich archicad mit 100 oder 1000 solcher objekte verhält.
Anonymous
Nicht anwendbar
völlig korrekter hinweis - danke. nur ist die frage auf welcher maschine ich es probieren soll..... werde es aber probieren
zzyzx
Newcomer
kommt drauf an, was du damit machen willst:

nur für den eigenbedarf:
- eigener rechner

verschenken:
- eigener rechner
- verschiedene andere rechner (büro/privat usw), eventuell mac und win

verkaufen (aktuelle archicad version):
- eigener rechner
- andere rechner (büro/privat usw), die die mindestanforderungen von archicad gerade so erfüllen
- mac und win
- das objekt in einer üblichen anzahl im projekt einsetzen, vergleich der geschwindigkeit mit standardelementen
- usability tests mit unvorbereiteten anwendern

verkaufen (verschiedene archicadversionen)
- wie eben, aber alles auch auf älteren versionen

:winken:
Anonymous
Nicht anwendbar
und da kann ich jetzt sagen: genau so werde ich es machen 🙂