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
GELÖST!

verschiebliche Hotspots mit Dynamischem Array

JonasSP
Booster

Hallo zusammen 
ich würde gerne verschiebliche Hotspot generieren. Dies gelingt auch so weit. allerdings ist die Anzahl der Hotspots Dynamisch. 
im Parameterscript initalisiere ich die Parameter

    DIM x[]
    DIM y[]
    FOR i = 1 to points
        x[i]=i
        y[i]=i
    NEXT i
   PARAMETERS  x=x
  PARAMETERS y=y

Und im 2D Script erstelle ich die Hotspots

    unid=0
    FOR i=1 to points
        !x control
        HOTSPOT2 0,y[i],        unID,x[i],1+128     :unID=unID+1        !BASE
        HOTSPOT2 x[i],y[i],     unID,x[i],2         :unID=unID+1        !MOVE
        HOTSPOT2 -1,y[i],       unID,x[i],3         :unID=unID+1        !REF
    NEXT i

Jetzt habe ich Einfach das Problem, das im Parameter Script x[i]=i steht und ich entsprechend die Hotspots nicht verschieben kann da i ein Fixer wert ist und nicht auf einen Parameter verweist. 
ich hoffe es kann mir jemand helfen

Operating system used: Windows 10

13 ANTWORTEN 13

Hurra Jetzt schein alles zu Funktionieren herzlichen Dank. 
Dennoch eine weitere Frage: 
die manuelle Verschiebung der Hotspots soll nur ermöglicht werden wenn dies vom User gewünscht ist. Ansonsten sollen sie einfach regelmässig auf der Linie verteilt werden. Dies Funktiniert soweit auch einwandfrei. Die Frage ist nun kann ich für x[i] einen wert defnieren so das wenn auf verschieblich gewechselt wird ihre Ausgangsposition gleich ist wie die wenn sie nicht verschieblich sind. Sozusagen wie ein Reset alle regelmässig verteilt aber verschieblich.

Ich hoffe es ist ungefähr verständlich

! ##################
! PARAMETER SKRIPT

if manuell then

  n = vardim1(x)
  if n < points then
    for i = n+1 to points
      parameters x[i] = x[n] + (i-n) , y[i] = y[n]
    next i
  endif

  else

  abstand = SQR( (EndeX-StartX)^2 + (EndeY-StartY)^2 ) / (points+1)

  for i = 1 to points
    parameters x[i] = abstand*i
  next i

  endif

 

oder so ähnlich.

bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Frank Beister
Moderator

Genau so einen Dialog habe ich vor ein paar Tagen für ein VBA Skript mit einer KI gehabt und in 5min ein astreines Skript bekommen.

bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Lösung

Herzlichen Dank jetzt scheint alles wie gewünscht zu funktionieren 

Setup info provided by author