HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









Autore Topic: moltiplicare ordinatamente oggetti su un'area  (Letto 5279 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

ilovedoom

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 45
moltiplicare ordinatamente oggetti su un'area
« il: 25 Gennaio 2010, 16:40 »
salve a tutti!

sono in una fase critica nella programmazione con gdl per poter fare un bell'oggettino che permetterebbe di avere delle scatole di quantità variabile, da inserire, disposte su un'area definita in larghezza e lunghezza.

di per sè mi sembrava semplice applicando il for_next loop ma come risultato non mi dava il numero esatto di scatole ma solo un completamento della questione con l'errore di farne sino a completamento di riga.

a riflettere mi sembra interessante il fatto che si possano fare righe ma una volta andando a capo il risultato sembra che possa essere moltiplicarle solo completate. come è possibile???

al momento saltando di forum in forum sono arrivato a questo punto
Citazione
obj_width = 3
obj_lenght = 2
obj_height = 0.5

obj_total_number = 8

area_width = 10
area_length = 15
area_thickness = 0.1

x_objcts_on_area = int (area_width/obj_width)
y_objects_rows_on_area = int (obj_total_number/x_objcts_on_area)

for k = 0 to y_objects_rows_on_area step 1
      for j = 1 to x_objcts_on_area step 1
         block obj_width,obj_lenght,obj_height
         addx obj_width
      next j
   del j-1
   addy obj_lenght
next k

del top
mulz -1
block area_width,area_length,area_thickness

questo è quello che mi hanno suggerito ma non è propriamente l'idea iniziale.

suggerimenti a riguardo? :bandierabianca:
« Ultima modifica: 25 Gennaio 2010, 17:00 da ilovedoom »
3ds Max - Rhino - Alias - AutoCAD - ArchiCAD 13
win7 pro - Nokia 5800xm

claudio-aster

  • MODERATOR
    ...non tutti i supereroi indossano il mantello
  • *
  • Post: 880
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #1 il: 25 Gennaio 2010, 17:36 »
obj_width = 3
obj_lenght = 2
obj_height = 0.5

obj_total_number = 8

area_width = 10
area_length = 15
area_thickness = 0.1

x = int (area_width/obj_width)
print x
y = int (obj_total_number/x)
print y
for k = 0 to y
for j=1 to x
brick 3,2,0.5
addx obj_width
next j
del j-1
addy obj_lenght
next k

del top
mulz -1
block area_width,area_length,area_thickness

claudio-aster

  • MODERATOR
    ...non tutti i supereroi indossano il mantello
  • *
  • Post: 880
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #2 il: 25 Gennaio 2010, 17:52 »
scusami ilovedoom... e benvenuto
la risposta precedente è dovuta a bizze di cpu che a volte mi fanno essere troppo stringato
in sostanza non ho capito bene cosa vorresti ed allora ho copiato ed incollato il tuo listato e l'ho fatto funzionare perchè conteneva alcune incompatibilità almeno sulla versione di archicad che uso
magari dacci un cenno
ciao,
claster

ZioBob

  • Che pacchia un forum senza spocchia!
  • ADMIN
    ...ho creato questo spazio e lo amo
  • *
  • Post: 5.099
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #3 il: 25 Gennaio 2010, 20:49 »
Anche io, come altri, non sono sicuro di aver capito esattamente il risultato che vuoi ottenere, ma immagino che si aquesto: dato un numero n di elementi, e uno spazio in cui sistemarli, mettere tutti quelli che ci entrano in una fila, poi passarea alla fila successiva, e così via, fino a terminare gli elementi. Secondo i casi, l'ultima fila può essere completa, oppure no.

Prova a sostituire l'intero ciclo FOR...NEXT del tuo script con questo qui:

FOR k=1 TO obj_total_number
    BLOCK obj_width, obj_lenght, obj_height
    ADDx obj_width
    IF k MOD x_objcts_on_area <.001 THEN
        DEL x_objcts_on_area
        ADDy obj_width
    ENDIF
NEXT k
-Roberto Corona-
archiradar  Staff



ilovedoom

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 45
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #4 il: 27 Gennaio 2010, 10:01 »
 :bowing: mi inchino a tale aiuto!
certe parti del linguaggio gdl mi sfuggono tra le pagine della reference guide e dei vari cookbook che sto studiando!
ora funziona!  :shoked02:
3ds Max - Rhino - Alias - AutoCAD - ArchiCAD 13
win7 pro - Nokia 5800xm

ilovedoom

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 45
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #5 il: 27 Gennaio 2010, 10:37 »
[...]
FOR k=1 TO obj_total_number
    BLOCK obj_width, obj_lenght, obj_height
    ADDx obj_width
    IF k MOD x_objcts_on_area <.001 THEN
        DEL x_objcts_on_area
        ADDy obj_width
    ENDIF
NEXT k


volevo capire il MOD utilizzato. sulla guida non compare e neanche sul cookbook. a cosa si riferisce? :blink:
oggi leggo degli altri libri e incrocio i dati che non ho con me.
3ds Max - Rhino - Alias - AutoCAD - ArchiCAD 13
win7 pro - Nokia 5800xm

ZioBob

  • Che pacchia un forum senza spocchia!
  • ADMIN
    ...ho creato questo spazio e lo amo
  • *
  • Post: 5.099
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #6 il: 27 Gennaio 2010, 12:43 »
MOD è la funzione matematica MODULO, che restituisce il resto di una divisione.
Per esempio, il risultato di (44 MOD 6) è 2, perchè, come dice la canzone:
44 gatti, in fila per sei, col resto di DUE...   :laughing:

Si potevano usare metodi più semplici, magari con una variabile da usare come contatore, ma questo mi è sembrato il metodo più pulito.
Per essere rigorosi, bisognerebbe cambiare riga quando il resto è zero. Ma per evitare problemi dovuti agli arrotondamenti (anche se non dovrebbero esserci) di solito si fa il confronto con un numero abbastanza piccolo, ma diverso da zero (.001)
« Ultima modifica: 27 Gennaio 2010, 12:46 da ZioBob »
-Roberto Corona-
archiradar  Staff



ilovedoom

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 45
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #7 il: 27 Gennaio 2010, 13:10 »
stavo quasi ignorando la matematica....
mi leggerò meglio i capitoli oggi.

comunque ora anche se non sembra pulito a parer tuo è molto rapido nella creazione dell'oggetto. prima ci riflettava tanto.
3ds Max - Rhino - Alias - AutoCAD - ArchiCAD 13
win7 pro - Nokia 5800xm

ilovedoom

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 45
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #8 il: 27 Gennaio 2010, 13:15 »

[....]
        ADDy obj_width
  [...]


riguardando il modello mi era venuto il dubbio....si erano invertiti i dati  :2funny:


        ADDy obj_obj_lenght
 


così si distanziano esattamente della loro lunghezza e non di larghezza...sennò sarebbero stati a base quadrata  :wondering:
3ds Max - Rhino - Alias - AutoCAD - ArchiCAD 13
win7 pro - Nokia 5800xm

ZioBob

  • Che pacchia un forum senza spocchia!
  • ADMIN
    ...ho creato questo spazio e lo amo
  • *
  • Post: 5.099
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #9 il: 27 Gennaio 2010, 20:41 »
giusto. :D


        ADDy obj_obj_lenght
 


-Roberto Corona-
archiradar  Staff



ilovedoom

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 45
Re: moltiplicare ordinatamente oggetti su un'area
« Risposta #10 il: 28 Gennaio 2010, 17:52 »
ora ne ho uno più critico di problema ma con un altro script..... :specchio:

appena riesco a semplificarlo ci riprovo!
3ds Max - Rhino - Alias - AutoCAD - ArchiCAD 13
win7 pro - Nokia 5800xm