Code: Selecteer alles
for i:=1 to vBoxNbrMax Do// alles naar de plaatsings array kopieren
vDrawBoxArray[i].boxX:=vPattern.Layer[vLayout][i].PlacePosX ;
vDrawBoxArray[i].boxY:=vPattern.Layer[vLayout][i].PlacePosY ;
vDrawBoxArray[i].boxNr:=i ;
end_for;
Sorted := 0;
While Sorted=0 Do
Sorted := 1;
For i := 1 To vBoxNbrMax-1 Do
If vDrawBoxArray[i].boxY >= vDrawBoxArray[i+1].boxY & vDrawBoxArray[i].boxX > vDrawBoxArray[i+1].boxX Then
TempDrawArray:=vDrawBoxArray[i+1];
vDrawBoxArray[i+1]:=vDrawBoxArray[i];
vDrawBoxArray[i]:=TempDrawArray;
Sorted := 0;
End_If
end_for;
end_while;
ik heb/had nu dit bovenstaande verhaal, en dat werk goed... althans... het doet het zelfde als die routine die alle pixels van de pallet bekeek, en dus 1200x1000x50 duurde..
hier kopieer ik de x,y in een andere array welke bestaat uit nummerdoosje, xdoosje, ydoosje...
dan die for-next lus, is nu maar het echte aantal doosje per laag lang... en het grootste aantal dozen wat ik heb per laag is 33... maar meestal zit het rond de 25...
en in de for-next lus, worden steeds 2 waarden vergeleken, en gewisseld van plaats...
hoevaak die do-while lus doorlopen word is een beetje afhankelijk van de data... maar dit werkt super snel...
Maar ik zit weer met een nieuw probleem.....
zo'n pallet gaat goed:
https://www.dropbox.com/s/mkm7zyzdtm83a ... d.PNG?dl=0
maar zo'n pallet:
https://www.dropbox.com/s/9t5uyg2mx0cn5 ... t.PNG?dl=0
gaat fout..... toestand.... en ik weet ook wel waarom....
https://www.dropbox.com/s/34zr8ghwise1g ... g.PNG?dl=0
omdat sommige doosjes gedraaid zijn, gaat dat verhaal met van voor naar achter verhaal niet helemaal op...
ik heb er ff getallen op gezet in de volgorde van tekenen... en als doos 8 getekend wordt, tekent hij over de hoek van doos 3...
eigenlijk had 7 en 8, eerder getekend moeten worden... en 3 ,4,5,6 later...
ik heb een 1 doosje zwart gemarkeerd.... dat teken ik dus van achter naar voor....
maar ik heb eigenlijk geen idee hoe ik dit nu weer op moet lossen..... pfffff...