HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









Autore Topic: Tubo 2D per le fognature - Hotspot Editabile  (Letto 2799 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

qoki55

  • Junior
    ...frequento ed imparo in fretta
  • *
  • Post: 282
Tubo 2D per le fognature - Hotspot Editabile
« il: 23 Ottobre 2011, 12:04 »
Ciao,
Ho fatto una modificazione dell´oggetto "drainage line 10.gsm" di Olivier Dentan per farlo sembrare come un tubo 2D.
Volevo attribuire gli hotspot editabili ai testi che mostrano l´elevazione del tubo ai due lati. Per questo ho letto il manuale
GDL del Zio, e dopo ci sono riuscito IN PARTE (il testo al inizio del tubo si sposta libaramente, quelo alla fine pero solamente
sul ase "y" - verticalmente su e giu!; mentre il cursore invece in tutte le direzioni).  :frusty: Non ne esco fuori.
Qualcuno mi sa dare una mano per favore?
Ho usato AC14.
« Ultima modifica: 23 Ottobre 2011, 12:06 da qoki55 »
ArchiCAD 11-20, DraftSight_64,
Windows 10 Pro_64

ZioBob

  • Che pacchia un forum senza spocchia!
  • ADMIN
    ...ho creato questo spazio e lo amo
  • *
  • Post: 5.099
Re: Tubo 2D per le fognature - Hotspot Editabile
« Risposta #1 il: 23 Ottobre 2011, 17:41 »
Il problema è che usi una variabile (xx_rt) il cui valore viene ridefinito nello Script Master, quindi anche se con il mouse gli si da un valore diverso, lo Script Master lo ricalcola subito dopo e gli assegna nuovamente il valore che aveva prima.

io l'ho risolto così (anche se il codice non è dei migliori):
Codice: [Seleziona]
!________________________Show Right Side Text (Višinska kota konca)-----Problem: MOVES ONLY IN "Y" DIRECTION!!!
DEFINE STYLE "lev_right_txt" fontType, lev_tx_ht, right_ap, 0
STYLE "lev_right_txt"

uid = uid+1 : HOTSPOT2       xx_rt,    y_rt,  uid,  x_rt, 1+128  ! base x
uid = uid+1 : HOTSPOT2  x_rt+xx_rt,    y_rt,  uid,  x_rt, 2      ! move x
uid = uid+1 : HOTSPOT2 x_rt+xx_rt-1,  y_rt,  uid,  x_rt, 3      ! ref x

uid = uid+1 : HOTSPOT2  x_rt+xx_rt,    0,     uid,  y_rt, 1+128 ! base y
uid = uid+1 : HOTSPOT2  x_rt+xx_rt,    y_rt,  uid,  y_rt, 2      ! move y
uid = uid+1 : HOTSPOT2  x_rt+xx_rt,    -1,    uid,  y_rt, 3      ! ref y

ADD2 (x_rt+xx_rt), y_rt
TEXT2 0, 0, lev_right           ! ----right level text
DEL 1
-Roberto Corona-
archiradar  Staff



ZioBob

  • Che pacchia un forum senza spocchia!
  • ADMIN
    ...ho creato questo spazio e lo amo
  • *
  • Post: 5.099
Re: Tubo 2D per le fognature - Hotspot Editabile
« Risposta #2 il: 23 Ottobre 2011, 22:12 »
C'era un'altra cosa che non funzionava a dovere, la freccia era sempre senza retino. Inoltre era spostata un po' a destra rispetto al centro del tubo.
Codice: [Seleziona]
300: !!!===== Arrow - Slope direction points 7-14 ========
!!POLY2 n, frame_fill, x1, y1, ... xn, yn
!!An open or closed polygon with n nodes. Restriction of parameters: n >= 2
!!frame_fill = j1 + 2*j2 + 4*j3.....where j1, j2, j3 can be 0 or 1.
!!j1 (1): contour only
!!j2 (2): fill only
!!j3 (4): close an open polygon

!!poly2_b 5, 2, s, fill_pen_arrow,back_pen_arrow,
IF lev_right>lev_left THEN mi=1 ELSE mi=-1

x[7] = xx + (COS(ang) * diameter*1.25 - diameter/4)*mi !!point 7
y[7] = yy + (SIN(ang) * diameter*1.25) + diameter/4
x[8] = x[7] - (SIN(ang) * diameter/10)*mi !!point 8
y[8] = y[7] + (COS(ang) * diameter/10)
x[9] = x[8] + (COS(ang) * diameter/2)*mi !!point 9
y[9] = y[8] + (SIN(ang) * diameter/2)
x[10] = x[9] - (SIN(ang) * diameter/10)*mi !!point 10
y[10] = y[9] + (COS(ang) * diameter/10)
x[11] = x[7] + (COS(ang) * diameter)*mi !!point 11
y[11] = y[7] + (SIN(ang) * diameter)
x[14] = x[7] + (SIN(ang) * diameter/10) *mi !!point 14
y[14] = y[7] - (COS(ang) * diameter/10)
x[13] = x[14] + (COS(ang) * diameter/2) *mi !!point 13
y[13] = y[14] + (SIN(ang) * diameter/2)
x[12] = x[13] + (SIN(ang) * diameter/10)*mi !!point 12
y[12] = y[13] - (COS(ang) * diameter/10)

ADD2 (-diameter*1.5)*mi,0
pen robPen
line_type robLine
line2 x[7], y[7], x[8], y[8]
line2 x[8], y[8], x[9], y[9]
line2 x[9], y[9], x[10], y[10]
line2 x[10], y[10], x[11], y[11]
line2 x[7], y[7], x[14], y[14]
line2 x[14], y[14], x[13], y[13]
line2 x[13], y[13], x[12], y[12]
line2 x[12], y[12], x[11], y[11]

FILL fill_type
POLY2_B 9, 2, fill_pen_arrow, back_pen_arrow,
x[7], y[7], 0,
x[8], y[8], 0,
x[9], y[9], 0,
x[10], y[10], 0,
x[11], y[11], 0,
x[12], y[12], 0,
x[13], y[13], 0,
x[14], y[14], 0,
x[7], y[7], -1
DEL 1

return

ho aggiunto anche un comando per invertire la freccia, se il livello di destra è più alto di quello a sinistra.
-Roberto Corona-
archiradar  Staff



qoki55

  • Junior
    ...frequento ed imparo in fretta
  • *
  • Post: 282
Re: Tubo 2D per le fognature - Hotspot Editabile
« Risposta #3 il: 28 Ottobre 2011, 18:36 »
Zio,

Ti ringrazio per il tuo aiuto. Ho modificato il codice e adesso tutti i testi si muovono liberamente.
La freccia pero ha anchora dei problemi:
1. se la quota della fine e maggiore di quella iniziale la freccia ruota, pero si sposta sul´asse fuori dal tubo
2. se sposto il nodo finale del tubo (stretch + rotate), la freccia cambia sua posizione e´ la rotazione (vedi il video "Tube 2D_Freccia ruotata_VIDEO_xvid")
3. se la quota della fine ha il prefisso "+" e quella iniziale "-" la freccia non ruota
ArchiCAD 11-20, DraftSight_64,
Windows 10 Pro_64

qoki55

  • Junior
    ...frequento ed imparo in fretta
  • *
  • Post: 282
Re: Tubo 2D per le fognature - Hotspot Editabile
« Risposta #4 il: 28 Ottobre 2011, 18:46 »
Il testo gel codice per la freccia:
   300:   !!!===== Arrow - Slope direction points 7-14 ========

IF right_lev > left_lev THEN mi= -1 ELSE mi= 1
    x[7] = xx * mi               !!point 7
    y[7] = yy
    x[8] = x[7]  - (SIN(ang) * fiCevi/6) *mi         !!point 8
    y[8] = y[7]  + (COS(ang) * fiCevi/6)   
    x[9] = x[8]  + (COS(ang) * fiCevi/2) *mi         !!point 9
    y[9] = y[8]  + (SIN(ang) * fiCevi/2)
   x[10] = x[9]  - (SIN(ang) * fiCevi/4) *mi         !!point 10
   y[10] = y[9]  + (COS(ang) * fiCevi/4)   
   x[11] = x[7]  + (COS(ang) * fiCevi) *mi         !!point 11
   y[11] = y[7]  + (SIN(ang) * fiCevi)
   x[14] = x[7]  + (SIN(ang) * fiCevi/6) *mi         !!point 14
   y[14] = y[7]  - (COS(ang) * fiCevi/6)
   x[13] = x[14] + (COS(ang) * fiCevi/2) *mi         !!point 13
   y[13] = y[14] + (SIN(ang) * fiCevi/2)   
   x[12] = x[13] + (SIN(ang) * fiCevi/4) *mi         !!point 12
   y[12] = y[13] - (COS(ang) * fiCevi/4)


!!   ADD2 xx * mi, 0
PEN robPen
line_type robLine
   LINE2 x[7], y[7], x[8], y[8]
   LINE2 x[8], y[8], x[9], y[9]
   LINE2 x[9], y[9], x[10], y[10]
   LINE2 x[10], y[10], x[11], y[11]
   LINE2 x[7], y[7], x[14], y[14]
   LINE2 x[14], y[14], x[13], y[13]
   LINE2 x[13], y[13], x[12], y[12]
   LINE2 x[12], y[12], x[11], y[11]

!! ---------Fill for the Arrow---------------
FILL fill_type
POLY2_B 9, 2, fill_pen_arrow, back_pen_arrow,
      x[7],  y[7],  0,
      x[8],  y[8],  0,
      x[9],  y[9],  0,
      x[10], y[10], 0,
      x[11], y[11], 0,
      x[12], y[12], 0,
      x[13], y[13], 0,
      x[14], y[14], 0,
      x[7],  y[7], -1
RETURN



E il video:
« Ultima modifica: 28 Ottobre 2011, 18:49 da qoki55 »
ArchiCAD 11-20, DraftSight_64,
Windows 10 Pro_64

ZioBob

  • Che pacchia un forum senza spocchia!
  • ADMIN
    ...ho creato questo spazio e lo amo
  • *
  • Post: 5.099
Re: Tubo 2D per le fognature - Hotspot Editabile
« Risposta #5 il: 30 Ottobre 2011, 11:22 »
Nella mia copia dell'oggetto non riscontro tutte le anomalie che mi segnali. Forse avevo modificato qualcosa in più...
In ogni caso è difficile mettere le mani nel codice scritto da un altro e modificato da un altro ancora. Ognuno ha le proprie procedure, e a me il metodo utilizzato sembra in molti casi inutilmente complicato (perché usare una serie di funzioni trigonometriche per trovare le coordinate di tutti i punti che interessano, quando è possibile ruotare il sistema di riferimento in modo che l'asse X corrisponda sempre con la direzione del tubo?). Mi è sembrato più semplice e veloce creare un oggetto nuovo.

Il campo "larghezza" dell'oggetto determina il diametro del tubo (ovvero la distanza tra le linee).
Modificando il campo "Lunghezza" si modificano le coordinate dell'estremo mobile dell'oggetto, mantenedo la stessa direzione che aveva in precedenza.
Il valore di quota (o profondità) può essere omesso per uno o entrambi gli estremi.
Modificando i valori di quota o la lunghezza, viene ricalcolata la pendenza.
Modificando il parametro della pendenza, viene aggiornata la quota del secondo estremo (il punto di arrivo del tubo).
I testi vengono capovolti se l'inclinazione è superiore a 90°e inferiore a 270° (non tiene in considerazione la rotazione dell'oggetto, ma solo le coordinate locali del secondo estremo rispetto al primo).
Un'opzione aggiunge due hotspot mobili agli estremi della linea inferiore, per permettere la giunzione fra più tubi con angolazione differente.
Dovrebbe funzionare anche l'inversione della freccia, se la quota del secondo estremo è superiore a quella del primo.

Non ho voluto aggiungere troppe opzioni (stili di testo, tipi e colori dei retini, ecc.) per mantenere l'oggetto più semplice e pratico da usare.
-Roberto Corona-
archiradar  Staff



qoki55

  • Junior
    ...frequento ed imparo in fretta
  • *
  • Post: 282
Re: Tubo 2D per le fognature - Hotspot Editabile
« Risposta #6 il: 02 Novembre 2011, 19:40 »
Zio,
ti ringrazio per il tuo aiuto e l´oggetto. Il mio lo faro senza la possibilita di ruotare la freccia.
   Ciao.
ArchiCAD 11-20, DraftSight_64,
Windows 10 Pro_64