forked from jerry800416/3D-bin-packing
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample1.py
69 lines (64 loc) · 3.29 KB
/
example1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
from py3dbp import Packer, Bin, Item, Painter
import time
start = time.time()
# init packing function
packer = Packer()
# init bin
box = Bin('example1', (5.6875, 10.75, 15.0), 70.0,0,0)
packer.addBin(box)
# add item
packer.addItem(Item('50g [powder 1]', 'test','cube',(3.9370, 1.9685, 1.9685), 1,1,100,True,'red'))
packer.addItem(Item('50g [powder 2]', 'test','cube',(3.9370, 1.9685, 1.9685), 2,1,100,True,'blue'))
packer.addItem(Item('50g [powder 3]', 'test','cube',(3.9370, 1.9685, 1.9685), 3,1,100,True,'gray'))
packer.addItem(Item('50g [powder 4]', 'test','cube',(3.9370, 1.9685, 1.9685), 3,1,100,True,'orange'))
packer.addItem(Item('50g [powder 5]', 'test','cube',(3.9370, 1.9685, 1.9685), 3,1,100,True,'lawngreen'))
packer.addItem(Item('50g [powder 6]', 'test','cube',(3.9370, 1.9685, 1.9685), 3,1,100,True,'purple'))
packer.addItem(Item('50g [powder 7]', 'test','cube',(5.1240, 1.1350, 1.5435), 3,1,100,True,'yellow'))
packer.addItem(Item('250g [powder 8]', 'test','cube',(7.8740, 3.9370, 1.9685), 4,1,100,True,'pink'))
packer.addItem(Item('250g [powder 9]', 'test','cube',(7.8740, 3.9370, 1.9685), 5,1,100,True,'brown'))
packer.addItem(Item('250g [powder 10]', 'test','cube',(7.8740, 3.9370, 1.9685), 6,1,100,True,'cyan'))
packer.addItem(Item('250g [powder 11]', 'test','cube',(7.8740, 3.9370, 1.9685), 7,1,100,True,'olive'))
packer.addItem(Item('250g [powder 12]', 'test','cube',(7.8740, 3.9370, 1.9685), 8,1,100,True,'darkgreen'))
packer.addItem(Item('250g [powder 13]', 'test','cube',(7.8740, 3.9370, 1.9685), 9,1,100,True,'orange'))
# calculate packing
packer.pack(bigger_first=True,distribute_items=False,fix_point=True,number_of_decimals=0)
# print result
b = packer.bins[0]
volume = b.width * b.height * b.depth
print(":::::::::::", b.string())
print("FITTED ITEMS:")
volume_t = 0
volume_f = 0
unfitted_name = ''
for item in b.items:
print("partno : ",item.partno)
print("color : ",item.color)
print("position : ",item.position)
print("rotation type : ",item.rotation_type)
print("W*H*D : ",str(item.width) +'*'+ str(item.height) +'*'+ str(item.depth))
print("volume : ",float(item.width) * float(item.height) * float(item.depth))
print("weight : ",float(item.weight))
volume_t += float(item.width) * float(item.height) * float(item.depth)
print("***************************************************")
print("***************************************************")
print("UNFITTED ITEMS:")
for item in b.unfitted_items:
print("partno : ",item.partno)
print("color : ",item.color)
print("W*H*D : ",str(item.width) +'*'+ str(item.height) +'*'+ str(item.depth))
print("volume : ",float(item.width) * float(item.height) * float(item.depth))
print("weight : ",float(item.weight))
volume_f += float(item.width) * float(item.height) * float(item.depth)
unfitted_name += '{},'.format(item.partno)
print("***************************************************")
print("***************************************************")
print('space utilization : {}%'.format(round(volume_t / float(volume) * 100 ,2)))
print('residual volumn : ', float(volume) - volume_t )
print('unpack item : ',unfitted_name)
print('unpack item volumn : ',volume_f)
print("gravity distribution : ",b.gravity)
stop = time.time()
print('used time : ',stop - start)
# draw results
painter = Painter(b)
painter.plotBoxAndItems()