C4DLounge.eu - Cinema 4D Gebruikers Forum

C4DLounge.eu - Cinema 4D Gebruikers Forum (http://www.c4dlounge.eu/forum/index.php)
-   Plugins & Scripts/Python/Coffee/Xpresso (http://www.c4dlounge.eu/forum/forumdisplay.php?f=31)
-   -   Bin packaging (http://www.c4dlounge.eu/forum/showthread.php?t=8080)

pgrooff 11th January 2019 09:28

Bin packaging
 
Heeft iemand ervaring met Bin Packaging?
Ik wil een aantal rechthoeken met verschillende afmetingen optimaal over een plane verdelen.

douwe 11th January 2019 17:11

Quote:

Originally Posted by pgrooff (Post 57751)
Heeft iemand ervaring met Bin Packaging?
Ik wil een aantal rechthoeken met verschillende afmetingen optimaal over een plane verdelen.

Heb wat dit soort uitdagingen betreft enkel met circle packing gespeeld, lang geleden.

Maar je bent handig met Python.
Ken je rectpack ? Dat is een collectie algo's voor knapsacking.

Dat zou je vlot een packing moeten kunnen opleveren.

Wel benieuwd wat je er van gaat maken !

pgrooff 12th January 2019 09:38

Goede tip, bedankt.
Alleen een external python module installeren lukt me nog niet.
Ik kan python in een command window opstarten, maar python setup.py install geeft dan een melding dat setuptools niet gevonden kan worden.
Nu lijkt het mij dat cinema 4d python dit toch moet hebben, maar ik weet niet waar en niet hoe.
Heb jij misschien wat aanwijzingen?

douwe 12th January 2019 10:09

Zit nu niet in de buurt van cinema, maar deze link brengt wellicht raad : http://www.plugincafe.com/forum/foru...+python+module

pgrooff 12th January 2019 15:00

1 Attachment(s)
De door jou aangegeven post snap ik niet helemaal.
rectpack lijkt een aantal source packages, dus misschien hoef ik geen set-up te doen?
Hoewel de doc wel aangeeft setup.py wel te doen.

De post geeft een verwijzing naar een andere nieuwere post, die iets doet met localimport. Maar dan is het mij onduidelijk hoe de rectpack packages heet of waar die staat.

with localimport('res/modules'):
import some_package
assert 'some_package' not in sys.modules

Hier een stukje code, die de volgende message geeft:
Code:

File "C:\Program Files\MAXON\CINEMA 4D R20.038\plugins\bin\bin command v01.pyp", line 56, in Execute
    from rectpack import newPacker
ImportError: No module named rectpack

Code:


import c4d
from c4d import plugins, gui
import os, sys
#import

PLUGIN_ID_BIN_COMMAND = 1039121978
pluginString = "Bin Command v01"
 
# localimport-v1.7.3-blob-mcw99
import base64 as b, types as t, zlib as z; m=t.ModuleType('localimport');
m.__file__ = __file__; blob=b'\
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'
exec(z.decompress(b.b64decode(blob)), vars(m)); _localimport=m;localimport=getattr(m,"localimport")
del blob, b, t, z, m; 

   
class BINLIB(c4d.plugins.CommandData):

    def Execute(self, doc):
        with localimport(''):
            import rectpack
        assert rectpack not in sys.modules
       
        from rectpack import newPacker

        rectangles = [(100, 30), (40, 60), (30, 30),(70, 70), (100, 50), (30, 30)]
        bins = [(300, 450), (80, 40), (200, 150)]

        packer = newPacker()

        # Add the rectangles to packing queue
        for r in rectangles:
            packer.add_rect(*r)

        # Add the bins where the rectangles will be placed
        for b in bins:
            packer.add_bin(*b)

        # Start packing
        packer.pack()

        print "Bin Command executed."
        return True

if __name__ == '__main__':
   
    bmp = c4d.bitmaps.BaseBitmap()
    dir, file = os.path.split(__file__)
    fn = os.path.join(dir, "res", "BinCommand.png")
    bmp.InitWith(fn)
 
    okyn = plugins.RegisterCommandPlugin(PLUGIN_ID_BIN_COMMAND, pluginString, 0, bmp, "", BINLIB())
    if (okyn): print pluginString + " initialized."
    else: print "Error initializing " + pluginString



All times are GMT +2. The time now is 02:58.

Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
(c) C4DLounge.eu . All documents on this forum are owned by their respective creators and may not be sold or republished in any way.