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

Etikett ausbauen - Problem mit Array

Anonymous
Nicht anwendbar
hallo liebe Leute,

möchte die Balkenetikette etwas ausbauen - hab aber nur beschränkte GDL Kenntnisse...

hier mal das Orig. Script:

eps= 0.0001

DIM iText[1]

x_size = STR(BEAM_THICKNESS*1000, 1, 0)
y_size = STR(BEAM_HEIGHT*1000, 1, 0)
z_size = STR(BEAM_LENGTH_RIGHT*1000, 1, 0)


itext[1] = ""
IF X_dim AND NOT(Y_dim) AND NOT(Z_dim) THEN itext[1] = x_size
IF NOT(X_dim) AND Y_dim AND NOT(Z_dim) THEN itext[1] = y_size
IF NOT(X_dim) AND NOT(Y_dim) AND Z_dim THEN itext[1] = z_size
IF X_dim AND Y_dim AND NOT(Z_dim) THEN itext[1] = x_size+gs_sep+y_size
IF X_dim AND NOT(Y_dim) AND Z_dim THEN itext[1] = x_size+gs_sep+z_size
IF X_dim AND NOT(Y_dim) AND Z_dim THEN itext[1] = x_size+gs_sep+z_size
IF NOT(X_dim) AND Y_dim AND Z_dim THEN itext[1] = y_size+gs_sep+z_size
IF X_dim AND Y_dim AND Z_dim THEN itext[1] = x_size+gs_sep+y_size+gs_sep+z_size


mirr= -2*SYMB_MIRRORED+1


If glob_context=1 Then
LABEL_FONT_NAME=gs_FontType
LABEL_TEXT_SIZE=2.5
LABEL_FONT_STYLE=0
LABEL_TEXT_pen=3
EndIf

DEFINE STYLE "textstyle" LABEL_FONT_NAME, LABEL_TEXT_SIZE, 5, LABEL_FONT_STYLE
STYLE "textstyle"


qq= REQUEST ("Height_of_style","textstyle", txt_hgt)
text_hgt= txt_hgt*GLOB_SCALE/1000

alph0= (-mirr*SYMB_ROTANGLE+360) MOD 360


! * a leghosszabb szovegsor hossza *
nRows= VARDIM1 (iText)
tLen= STW (iText[1])
FOR w=2 TO nRows
tLen= MAX (tLen, STW (iText[w]))
NEXT w
tLen= tLen*GLOB_SCALE/1000


ADD2 label_position[2][1]+label_position[3][1]+symb_a_size/2,label_position[2][2]+label_position[3][2]+symb_b_size/2

! *** interaktiv hotspotok ***
! * eltolás *
HOTSPOT2 textPos[1][1], 0, 1, textPos[1][2], 1+128
HOTSPOT2 textPos[1][1], -0.1, 2, textPos[1][2], 3
HOTSPOT2 textPos[1][1], textPos[1][2], 3, textPos[1][2], 2
HOTSPOT2 0, textPos[1][2], 4, textPos[1][1], 1+128
HOTSPOT2 -0.1, textPos[1][2], 5, textPos[1][1], 3
HOTSPOT2 textPos[1][1], textPos[1][2], 6, textPos[1][1], 2

! * elforgatas *
ADD2 textPos[1][1], textPos[1][2]
ROT2 alph0*(relToZero=0)
HOTSPOT2 0, 0, 7, textRot, 6
HOTSPOT2 tLen*COS(BEAM_DIRECTION)/2, tLen*SIN(BEAM_DIRECTION)/2, 8, textRot, 4+128
HOTSPOT2 tLen*COS(textRot)/2, tLen*SIN(textRot)/2, 9, textRot, 5
DEL 2

! * szovegblokk szoge *
textRot0= (textRot-alph0*(relToZero)+360) MOD 360
textRot= textRot-180*autoRot*(textRot0>90+eps*mirr)*(textRot0<=270+eps*mirr)
alpha= ((alph0*(relToZero=0)+textRot) MOD 360 +360) MOD 360

ADD2 textPos[1][1], textPos[1][2]
ROT2 alpha
ADD2 0, text_hgt*(nRows-1)/2


IF GLOB_CONTEXT = 22 THEN
ADD2 -tLen/2, -text_hgt/2
RECT2 0,0, tLen,nRows*text_hgt
DEL 1
ELSE
FOR w=0 TO nRows-1
TEXT2 0, -w*text_hgt, iTExt[w+1]
NEXT w

ADD2 -tLen/2, -text_hgt/2
PEN gs_cont_pen
IF gs_frame=1 THEN RECT2 0,0, tLen,nRows*text_hgt

FILL gs_fill_type
POLY2_b 5, 2,gs_fill_pen,gs_back_pen,
0,0,1,
tLen,0,1,
tLen,nRows*text_hgt,1,
0,nRows*text_hgt,1,
0,0,-1

DEL 1

ENDIF
DEL 1
DEL 3

END

soweit ich weiß wird mit DIM iText[1] ein Array definiert. nun möchte ich, dass das Array 3(oder4) Zeilen erhält, in denen dann zusätzliche Angaben (UK, Material, ID-Nr.,...) stehen können und die mittels Parameter ein bzw. ausgeschaltet werden...

also DIM iText[1] zuerst 'befüllen', und dann mit TEXT2 0,0, iText[1] ausgeben.

Ich scheitere z.Z. daran, dass ich das mit den Indezies o.ä. nicht kapier (also die [1][3]... die die Position im Array angeben ... 🙂

hoffe auf Hilfe,

liebe Grüße, Klaus

[ 22. Januar 2009, 10:56: Beitrag editiert von: klaus ]
1 ANTWORT 1
Anonymous
Nicht anwendbar
Du kannst 1-dimensionale Arrays definieren,
z.B. DIM ar[10], was 10 Einzeladressen in 10 Zeilen hätte.
Und Du kannst 2-dimensionale Arrays definieren, die dann quasi wie eine Excel-Tabelle aufgebaut sind:
DIM ar[10][20] definiert so eine Array-Tabelle mit 10 Zeilen und 20 Spalten.
Du greifst z.B. mit ar[5][12] auf den Wert in Zeile 5, Spalte 12 zu.

Neben der Defintion mit DIM kannst Du auch Array-Parameter definieren, indem Du auf das Tabellensymbol im geöffneten Objekt neben dem Parameter-Typ klickst.

[ 22. Januar 2009, 11:56: Beitrag editiert von: Jochen Suehlo ]