Pliki cookies pomagają ulepszać stronę. Możesz włączyć/wyłączyć obsługę plików cookies w swojej przeglądarce. Więcej informacji na temat Polityki Cookies.

Znajdowanie Trzeciego Wymiaru

Opis działania

Algorytm umożliwiający obliczenie jednego z wymiarów pojemnika. Do wykonania obliczeń należy podać wymiary przedmiotów do zapakowania oraz dwa znane wymiary pojemnika (na przykład szerokość i głębokość pojemnika).

Przykłady zastosowania algorytmu

Przykład 1:

Obliczenie wysokości stosu na jaką zostaną ułożone przedmioty – bez ograniczania szukanego wymiaru.

Hurtownia posiada przedmioty, które należy ułożyć w stos na pewnej powierzchni. Przed ułożeniem przedmiotów należy jednak sprawdzić jaką wysokość będą miały ułożone przedmioty.

Szczegóły zlecenia przekazane do naszego algorytmu:
Dostępne palety:

Wymiar palety: 20x20
Szukaj: wysokości

Przedmioty do zapakowania:

Wymiary: 10x10x10
Ilość: 10

3DBinPacking wykonuje symulację pakowania dla podanej palety i zwraca następujący wynik:

Zapakowano wszystkie 10 przedmiotów
Wymiar zapakowanej palety razem z towarem: 20x20x30


Przykład 2:

Obliczenie wypełnienia powierzchni ładunkowej pojazdu – z ograniczaniem szukanego wymiaru.

Firma transportowa posiada przedmioty, które mają zostać zapakowane na pojazd. Przed zapakowaniem należy obliczyć ja na jaką głębokość zostanie zajęta przestrzeń ładunkowa.

Szczegóły zlecenia przekazane do naszego algorytmu:
Dostępne pojemniki:

Wymiar pojazdu: 10x10x25
Szukaj: głębokości

Przedmioty do zapakowania:

Wymiary: 10x10x2
Ilość: 4

3DBinPacking wykonuje symulację pakowania i zwraca następujący wynik:

10x10x25

Zapakowano wszystkie 4 przedmioty
Wymiar zajętej przestrzeni na pojeździe: 10x10x8

Zarejestruj się w naszym serwisie
Potwierdź rejestrację klikając link aktywacyjny
otrzymanym mailu
Zaloguj się
Pobierz swój klucz API
Przygotuj i wyślij zapytanie
zgodnie z zaleceniami znajdującymi się w dokumentacji
W odpowiedzi otrzymasz obliczenia
wykonane przez nasz algorytm
  • Zarejestruj się w naszym serwisie
  • Potwierdź rejestrację klikając link aktywacyjny
    otrzymanym mailu
  • Zaloguj się
  • Pobierz swój klucz API
  • Przygotuj i wyślij zapytanie
    zgodnie z zaleceniami znajdującymi się w dokumentacji
  • W odpowiedzi otrzymasz obliczenia
    wykonane przez nasz algorytm

Znajdowanie Trzeciego Wymiaru

Pojemnik

Id
Szer
Wys
Głęb
Znajdź

Przedmioty

Id
Szer
Wys
Głęb
Ilość
VR

Parametry wizualizacji

  • rgb(245,245,245)
  • rgb(161,161,161)
  • rgb(230,230,230)
  • rgb(255,255,255)
  • rgb(227,144,22)
  • rgb(255,255,255)
  • rgb(142,132,122)
  • rgb(102,97,92)

Dane podstawowe

ADRESY SERWERÓW

  • us-east.api.3dbinpacking.com/packer/findSmallestBin - USA (Virginia)
  • eu.api.3dbinpacking.com/packer/findSmallestBin - Europa (Irlandia)
  • asia1.api.3dbinpacking.com/packer/findSmallestBin - Asia Pacific (Singapore)
  • global-api.3dbinpacking.com/packer/findSmallestBin - Adres globalny

PEM (X.509)

AKCEPTOWANE METODY PRZESYŁANIA DANYCH:

  • POST - Zalecane
  • GET

AKCEPTOWANE PROTOKOŁY:

  • https - Zalecane
  • http

SPOSOBY WYWOŁANIA:

  • jako parametr - Przykład GET: https://global-api.3dbinpacking.com/packer/findSmallestBin?query={json_encoded_data}
  • jako JSON request

Parametry żądania

PARAMETRY WYMAGANE

username - Nazwa użytkownika

  • Typ danych: ciąg znaków

api_key - Klucz API. Możesz go znaleźć w panelu użytkownika po zalogowaniu

  • Typ danych: ciąg znaków

bins - Tablica parametrów pojemników

  • Typ danych: tablica
  • Klucze tablicy:
    • id - ID pojemnika. Dzięki niemu będzie możliwa jego identyfikacja w wynikach pakowania

      • Typ danych: ciąg znaków
    • w - Szerokość pojemnika

      • Typ danych: integer lub float
    • h - Wysokość pojemnika

      • Typ danych: integer lub float
    • d - Głębokość pojemnika

      • Typ danych: integer lub float
    • find - Wskazuje, który wymiar paczki ma zostać znaleziony

      • Typ danych: integer
      • Dopuszczalne wartości:
        • w - oznacza, że algorytm będzie obliczał szerokość pojemnika
        • h - oznacza, że algorytm będzie obliczał wysokość pojemnika
        • d - oznacza, że algorytm będzie obliczał głębokość pojemnika
  • Przykład:
    {"bins":[{"w": "10","h": "10","d": "10","id": "bin1","max_wg": "0"}]}

items - Tablica parametrów przedmiotów

  • Typ danych: tablica
  • Ograniczenia: Maxymalna łączna liczba przedmiotów na jeden request = 4999
  • Klucze tablicy:
    • id - ID przedmiotu. Dzięki niemu będzie możliwa jego identyfikacja w wynikach pakowania

      • Typ danych: ciąg znaków
    • w - Szerokość przedmiotu

      • Typ danych: integer lub float
    • h - Wysokość przedmiotu

      • Typ danych: integer lub float
    • d - Głębokość przedmiotu

      • Typ danych: integer lub float
    • vr - vertical rotation. Informacja, czy dany przedmiot może być obracany w pionie

      • Typ danych: integer
      • Dopuszczalne wartości:
        • 1 [domyślnie] - oznacza, że przedmiot może być obracany w pionie
        • 0 - oznacza, że przedmiot nie może być obracany w pionie
    • q - Ilość przedmiotów tych wymiarów do zapakowania

      • Typ danych: integer
    • item_colors_schema - określa, który schemat kolorów ma być użyty

      • Typ danych: ciąg znaków
      • Dopuszczalne wartości:
        • default - zostaną użyte kolory zdefiniiowane w sekcji 'params' (wartość domyślna)
        • item - zostaną użyte kolory z sekcji 'item'
        • random - losowe kolory zostaną wygenerowane przez system
    • item_fill_color - Kolor wypełnienia przedmiotu

      • Typ danych: ciąg znaków
      • Dopuszczalne wartości: Wartości kolorów RGB odseparowane przecinkami "czerowny,zielony,niebieski", wartości 0-255
      • Przykład: "255,120,10"
    • item_border_color - Kolor krawędzi przedmiotu

      • Typ danych: ciąg znaków
      • Dopuszczalne wartości: Wartości kolorów RGB odseparowane przecinkami "czerowny,zielony,niebieski", wartości 0-255
      • Przykład: "255,120,10"
  • Przykład:
    {"items": [{"w": 5, "h": 5,"d": 5,"q": 2,"vr": 1,"id": "ITEM - 1"},{"w": 20,"h": 7,"d": 6,"q": 1,"vr": 1,"id": "ITEM - 2"}]}

PARAMETRY OPCJONALNE

images_width - Maksymalna szerokość generowanych obrazków

  • Typ danych: integer
  • Dopuszczalne wartości: 1 -250

images_height - Maksymalna wysokość generowanych obrazków

  • Typ danych: integer
  • Dopuszczalne wartości: 1 -250

images_background_color - Kolor tła

  • Typ danych: ciąg znaków
  • Dopuszczalne wartości: Wartości kolorów RGB odseparowane przecinkami "czerowny,zielony,niebieski", wartości 0-255
  • Przykład: "255,120,10"

images_bin_border_color - Kolor krawędzi pojemnika

  • Typ danych: ciąg znaków
  • Dopuszczalne wartości: Wartości kolorów RGB odseparowane przecinkami "czerowny,zielony,niebieski", wartości 0-255
  • Przykład: "255,120,10"

images_bin_dashed_line_color - Kolor przedniej (przerywanej) krawędzi pojemnika

  • Typ danych: ciąg znaków
  • Dopuszczalne wartości: Wartości kolorów RGB odseparowane przecinkami "czerowny,zielony,niebieski", wartości 0-255
  • Przykład: "255,120,10"

images_bin_fill_color - Kolor wypełnienia pojemnika

  • Typ danych: ciąg znaków
  • Dopuszczalne wartości: Wartości kolorów RGB odseparowane przecinkami "czerowny,zielony,niebieski", wartości 0-255
  • Przykład: "255,120,10"

images_item_border_color - Kolor krawędzi przedmiotu

  • Typ danych: ciąg znaków
  • Dopuszczalne wartości: Wartości kolorów RGB odseparowane przecinkami "czerowny,zielony,niebieski", wartości 0-255
  • Przykład: "255,120,10"

images_sbs_last_item_fill_color - Kolor wypełnienia ostatniego przedmiotu na obrazku "krok po kroku"

  • Typ danych: ciąg znaków
  • Dopuszczalne wartości: Wartości kolorów RGB odseparowane przecinkami "czerowny,zielony,niebieski", wartości 0-255
  • Przykład: "255,120,10"

images_sbs_last_item_border_color - Kolor krawędzi ostatniego przedmiotu na obrazku "krok po kroku"

  • Typ danych: ciąg znaków
  • Dopuszczalne wartości: Wartości kolorów RGB odseparowane przecinkami "czerowny,zielony,niebieski", wartości 0-255
  • Przykład: "255,120,10"

images_format - Format plików zwracanych obrazków

  • Typ danych: ciąg znaków
  • Dopuszczalne wartości: [ png , svg ]

images_sbs - Generuj grafikę pakowania "krok po kroku"

  • Typ danych: integer
  • Dopuszczalne wartości:
    • 0 [domyślnie] - oznacza, że grafika "krok po kroku" nie będzie generowana
    • 1 - oznacza, że grafika "krok po kroku" będzie generowana

images_complete - Generuj grafikę przedstawiającą obrazek końcowy zapakowania

  • Typ danych: integer
  • Dopuszczalne wartości:
    • 0 [domyślnie] - oznacza, że grafika przedstawiającą obrazek końcowy zapakowania nie będzie generowana
    • 1 - oznacza, że grafika przedstawiającą obrazek końcowy zapakowania będzie generowana

images_separated - Generuj grafikę przedstawiającą umiejscowienie każdego przedmiotu osobno

  • Typ danych: integer
  • Dopuszczalne wartości:
    • 0 [domyślnie] - oznacza, że grafika nie będzie generowana
    • 1 - oznacza, że grafika będzie generowana

item_coordinates - Zwróć współrzędne (x, y, z) dla każdego z przedmiotów

  • Typ danych: integer
  • Dopuszczalne wartości:
    • 0 [domyślnie] - oznacza, że grafika nie będzie generowana
    • 1 - oznacza, że grafika będzie generowana

stats - Zwróć statystyki (np. czas generowania obrazków)

  • Typ danych: integer
  • Dopuszczalne wartości:
    • 0 [domyślnie] - oznacza, że statystyki nie będą zwrócone w odpowiedzi
    • 1 - oznacza, że statystyki będą zwrócone w odpowiedzi

Parametry odpowiedzi

bins_packed - Lista zapakowanych pojemników.

  • Typ danych: tablica

errors - Lista ewentualnych błędów, które wystąpiły w żądaniu

  • Typ danych: tablica
  • Przykład: [{'level'}]
  • Możliwe zwracane wartości:
    • "critical" - błąd krytyczny, uniemożliwiający pakowanie
    • "warning" - ostrzeżenie o nieprawidłowych danych w zapytaniu

status - Status odpowiedzi

  • Typ danych: integer
  • Możliwe zwracane wartości:
    • 1 - odpowiedź nie zawierała błędów krytycznych
    • 0 - odpowiedź zawierała błędy krytyczne
    * błąd krytyczny - błąd uniemożliwiający pakowanie. Może nim być brak któregoś z wymaganych parametrów ("username","api_key") lub niewłaściwa wartość parametru (np. pole, które powinno zawierać liczbę, zawiera string).

not_packed_items - Przedmoioty, które posiadały niewłaściwe parametry

  • Typ danych: tablica

response_time - Czas odpowiedzi serwera

  • Typ danych: float

Przykłady

Żądanie

{"bins":[{"w":5,"h":0,"d":5,"id":"Bin1","find":"h"},{"w":3,"h":30,"d":3,"id":"Bin2","find":"h"}],"items":[{"w":5,"h":3,"d":2,"q":2,"vr":1,"id":"Item1"},{"w":3,"h":3,"d":3,"q":3,"vr":1,"id":"Item2"}],"username":"YOUR_USERNAME","api_key":"YOUR_API_KEY","params":{"images_background_color":"255,255,255","images_bin_border_color":"59,59,59","images_bin_fill_color":"230,230,230","images_item_border_color":"214,79,79","images_item_fill_color":"177,14,14","images_item_back_border_color":"215,103,103","images_sbs_last_item_fill_color":"99,93,93","images_sbs_last_item_border_color":"145,133,133","images_width":100,"images_height":100,"images_source":"file","images_sbs":1,"stats":1,"item_coordinates":1,"images_complete":1,"images_separated":1}}

Odpowiedź

{"response":{"bins_packed":[{"bin_data":{"w":5,"h":9,"d":5,"id":"Bin1","used_space":62.6667},"image_complete":"...image_data...","images_generation_time":0.02894,"packing_time":0.09116,"items":[{"id":"Item1","image_separated":"...image_data...","image_sbs":"...image_data...","coordinates":{"x1":"0","y1":"0","z1":"0","x2":2,"y2":5,"z2":3}},{"id":"Item1","image_separated":"...image_data...","image_sbs":"...image_data...","coordinates":{"x1":"0","y1":"5","z1":"0","x2":2,"y2":8,"z2":5}},{"id":"Item2","image_separated":"...image_data...","image_sbs":"...image_data...","coordinates":{"x1":"2","y1":"0","z1":"0","x2":5,"y2":3,"z2":3}},{"id":"Item2","image_separated":"...image_data...","image_sbs":"...image_data...","coordinates":{"x1":"2","y1":"3","z1":"0","x2":5,"y2":6,"z2":3}},{"id":"Item2","image_searated":"...image_data...","image_sbs":"...image_data...","coordinates":{"x1":"2","y1":"6","z1":"0","x2":5,"y2":9,"z2":3}}],"not_packed_items":[]},{"bin_data":{"w":3,"h":18,"d":3,"id":"Bin2","used_space":70.3704},"image_complete":"...image_data...","images_generation_time":0.00363,"packing_time":0.08667,"items":[{"id":"Item1","image_separated":"...image_data...","image_sbs":"...image_data...","coordinates":{"x1":"0","y1":"0","z1":"0","x2":2,"y2":5,"z2":3}},{"id":"Item1","image_separated":"...image_data...","image_sbs":"...image_data...","coordinates":{"x1":"0","y1":"5","z1":"0","x2":2,"y2":10,"z2":3}},{"id":"Item2","image_separated":"...image_data...","image_sbs":"...image_data...","coordinates":{"x1":"0","y1":"10","z1":"0","x2":3,"y2":13,"z2":3}},{"id":"Item2","image_separated":"...image_data...","image_sbs":"...image_data...","coordinates":{"x1":"0","y1":"13","z1":"0","x2":3,"y2":16,"z2":3}}],"not_packed_items":[{"id":"Item2","q":1}]}],"errors":[],"status":1,"not_packed_items":[],"response_time":0.22307}}

Żądanie

curl -X POST \
-H "Content-Type: application/json" \
-d '{"bins": [{"w": 5, "h": 0, "d": 5, "id": "Bin1", "find": "h"},{"w": 3, "h": 30, "d": 3, "id": "Bin2", "find": "h"}], "items": [{"w": 5, "h": 3, "d": 2, "q": 2, "vr": 1, "id": "Item1"},{"w": 3, "h": 3, "d": 3, "q": 3, "vr": 1, "id": "Item2"}], "username": "YOUR_USERNAME", "api_key": "YOUR_API_KEY", "params": {"images_background_color": "255,255,255", "images_bin_border_color": "59,59,59", "images_bin_fill_color": "230,230,230", "images_item_border_color": "214,79,79", "images_item_fill_color": "177,14,14", "images_item_back_border_color": "215,103,103", "images_sbs_last_item_fill_color": "99,93,93", "images_sbs_last_item_border_color": "145,133,133", "images_width": 100, "images_height": 100, "images_source": "file", "images_sbs": 1, "stats": 1, "item_coordinates": 1, "images_complete": 1, "images_separated": 1}}' \
https://eu.api.3dbinpacking.com/packer/findSmallestBin \
-k
                        

Odpowiedź

{"response": {"bins_packed": [{"bin_data": {"w": 5, "h": 9, "d": 5, "id": "Bin1", "used_space": 62.6667}, "image_complete": "...image_data...", "images_generation_time": 0.02894, "packing_time": 0.09116, "items": [{"id": "Item1", "image_separated": "...image_data...", "image_sbs": "...image_data...", "coordinates": {"x1": "0", "y1": "0", "z1": "0", "x2": 2, "y2": 5, "z2": 3}},{"id": "Item1", "image_separated": "...image_data...", "image_sbs": "...image_data...", "coordinates": {"x1": "0", "y1": "5", "z1": "0", "x2": 2, "y2": 8, "z2": 5}},{"id": "Item2", "image_separated": "...image_data...", "image_sbs": "...image_data...", "coordinates": {"x1": "2", "y1": "0", "z1": "0", "x2": 5, "y2": 3, "z2": 3}},{"id": "Item2", "image_separated": "...image_data...", "image_sbs": "...image_data...", "coordinates": {"x1": "2", "y1": "3", "z1": "0", "x2": 5, "y2": 6, "z2": 3}},{"id": "Item2", "image_searated": "...image_data...", "image_sbs": "...image_data...", "coordinates": {"x1": "2", "y1": "6", "z1": "0", "x2": 5, "y2": 9, "z2": 3}}], "not_packed_items": []},{"bin_data": {"w": 3, "h": 18, "d": 3, "id": "Bin2", "used_space": 70.3704}, "image_complete": "...image_data...", "images_generation_time": 0.00363, "packing_time": 0.08667, "items": [{"id": "Item1", "image_separated": "...image_data...", "image_sbs": "...image_data...", "coordinates": {"x1": "0", "y1": "0", "z1": "0", "x2": 2, "y2": 5, "z2": 3}},{"id": "Item1", "image_separated": "...image_data...", "image_sbs": "...image_data...", "coordinates": {"x1": "0", "y1": "5", "z1": "0", "x2": 2, "y2": 10, "z2": 3}},{"id": "Item2", "image_separated": "...image_data...", "image_sbs": "...image_data...", "coordinates": {"x1": "0", "y1": "10", "z1": "0", "x2": 3, "y2": 13, "z2": 3}},{"id": "Item2", "image_separated": "...image_data...", "image_sbs": "...image_data...", "coordinates": {"x1": "0", "y1": "13", "z1": "0", "x2": 3, "y2": 16, "z2": 3}}], "not_packed_items": [{"id": "Item2", "q": 1}]}], "errors": [], "status": 1, "not_packed_items": [], "response_time": 0.22307}}
                        $data = array(
                                    'bins' => array(
                                                    array(
                                                            'w' => '5', 
                                                            'h' => '0', 
                                                            'd' => '5', 
                                                            'id' => 'Bin1', 
                                                            'find' => 'h' 
                                                        ), 
                                                    array(
                                                            'w' => '3', 
                                                            'h' => '30', 
                                                            'd' => '3', 
                                                            'id' => 'Bin2', 
                                                            'find' => 'h' 
                                                        ) 
                                                ),
                                    'items' => array(
                                                    array(
                                                            'w' => '5', 
                                                            'h' => '3', 
                                                            'd' => '2', 
                                                            'q' => '2', 
                                                            'vr' => '1', 
                                                            'id' => 'Item1' 
                                                        ), 
                                                    array(
                                                            'w' => '3', 
                                                            'h' => '3', 
                                                            'd' => '3', 
                                                            'q' => '3', 
                                                            'vr' => '1', 
                                                            'id' => 'Item2' 
                                                        ) 
                                                ),
                                    'username' => 'YOUR_USERNAME', 
                                    'api_key' => 'YOUR_API_KEY',
                                    'params' => array(
                                                    'images_background_color' => '255,255,255', 
                                                    'images_bin_border_color' => '59,59,59', 
                                                    'images_bin_fill_color' => '230,230,230', 
                                                    'images_item_border_color' => '214,79,79', 
                                                    'images_item_fill_color' => '177,14,14', 
                                                    'images_item_back_border_color' => '215,103,103', 
                                                    'images_sbs_last_item_fill_color' => '99,93,93', 
                                                    'images_sbs_last_item_border_color' => '145,133,133', 
                                                    'images_width' => '100', 
                                                    'images_height' => '100', 
                                                    'images_source' => 'file', 
                                                    'images_sbs' => '1', 
                                                    'stats' => '1', 
                                                    'item_coordinates' => '1', 
                                                    'images_complete' => '1', 
                                                    'images_separated' => '1' 
                                                )
                        );
                        $query = json_encode($data);
                        
                        $url = "http://eu.api.3dbinpacking.com/packer/findSmallestBin";
                        $prepared_query = 'query='.$query;
                        $ch = curl_init($url);
                        curl_setopt( $ch, CURLOPT_POST, true );
                        curl_setopt( $ch, CURLOPT_POSTFIELDS, $prepared_query );
                        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
                        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
                        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
                        $resp = curl_exec($ch);
                        if (curl_errno($ch)) {
                            echo 'Error #' . curl_errno($ch) . ': ' . curl_error($ch).'<br>';
                        }
                        curl_close($ch);

                        $response = json_decode($resp,true);
                        // display errors
                        if(isset($response['response']['errors'])){
                          foreach($response['response']['errors'] as $error){
                            echo $error['message'].'<br>';
                          }
                        }
                        // display data
                        if( $response['response']['status'] > -1 ){
                          $b_packed= $response['response']['bins_packed'];
                          foreach ($b_packed as $bin){
                              echo "<h2>Bin id:{$bin['bin_data']['id']}</h2> 
                                <p> {$bin['bin_data']['w']} x {$bin['bin_data']['h']} x {$bin['bin_data']['d']}</p>
                                <p> Weight:{$bin['bin_data']['weight']}</p>
                                <p> Used weight:{ $bin['bin_data']['used_weight'] }</p>  
                                <img src=\"{$bin['image_complete']}\">
                                <h2>Items packed in this bin:</h2>";
                              $items = $bin['items'];
                              echo '<table style="text-align: center">
                                <tr><th>Item id</th>
                                    <th>Item dimensions</th>
                                    <th>Item weight</th>
                                    <th>Separated item</th>
                                    <th>Step by step</th></tr>';
                              foreach ( $items as $item){
                              echo "<tr><td>{$item['id']}</td>       
                                        <td> {$item['w']} x {$item['h']} x {$bin['bin_data']['d']}</td>
                                        <td> {$item['wg']}</td>
                                        <td><img src=\"{$item['image_separated']}\"></td>
                                        <td><img src=\"{$item['image_sbs']}\"></td>
                                    </tr>";
                              }    
                              echo '</table>';
                              echo '<hr>'; 

                          }
                        }
                        
                        #!/usr/bin/python
 
                        import httplib
                        import urllib
                        import json

                        conn = httplib.HTTPConnection(host='eu.api.3dbinpacking.com', port=80)
                        data = {"bins": [{"w": 5, "h": 0, "d": 5, "id": "Bin1", "find": "h"},{"w": 3, "h": 30, "d": 3, "id": "Bin2", "find": "h"}], "items": [{"w": 5, "h": 3, "d": 2, "q": 2, "vr": 1, "id": "Item1"},{"w": 3, "h": 3, "d": 3, "q": 3, "vr": 1, "id": "Item2"}], "username": "YOUR_USERNAME", "api_key": "YOUR_API_KEY", "params": {"images_background_color": "255,255,255", "images_bin_border_color": "59,59,59", "images_bin_fill_color": "230,230,230", "images_item_border_color": "214,79,79", "images_item_fill_color": "177,14,14", "images_item_back_border_color": "215,103,103", "images_sbs_last_item_fill_color": "99,93,93", "images_sbs_last_item_border_color": "145,133,133", "images_width": 100, "images_height": 100, "images_source": "file", "images_sbs": 1, "stats": 1, "item_coordinates": 1, "images_complete": 1, "images_separated": 1}}

                        params =  urllib.urlencode( {'query':json.dumps(data)} )
                        headers = {"Content-type": "application/x-www-form-urlencoded", 
                            "Accept": "text/plain"}
                        conn.request( "POST", "/packer/findSmallestBin", params, headers )
                        content = conn.getresponse( ).read( )
                        conn.close( )
                        print content
                        
                        package javaapplication1;
 
                        import java.io.BufferedReader;
                        import java.io.IOException;
                        import java.io.InputStreamReader;
                        import java.io.OutputStreamWriter;
                        import java.net.HttpURLConnection;
                        import java.net.MalformedURLException;
                        import java.net.ProtocolException;
                        import java.net.URL;
                        import java.util.ArrayList;
                        import java.util.HashMap;
                        import java.util.List;
                        import java.util.Map;;
                        import org.json.simple.JSONObject;
                        import org.springframework.web.client.RestTemplate;

                        public class JavaApplication1 {

                            /**
                             * @param args the command line arguments
                             */
                            public static void main(String[] args) throws MalformedURLException, ProtocolException, IOException {
                                RestTemplate restTemplate = new RestTemplate();
                                JSONObject json = new JSONObject();

                                //SET BINS
                                List<Map<String , String>> bins  = new ArrayList<Map<String,String>>();

                                Map<String, String> bin1 = new HashMap<String, String>();
                                bin1.put("w", "5");
                                bin1.put("h", "0");
                                bin1.put("d", "5");
                                bin1.put("id", "Bin1");
                                bin1.put("find", "h");
                                bins.add(bin1);
                                Map<String, String> bin2 = new HashMap<String, String>();
                                bin2.put("w", "3");
                                bin2.put("h", "30");
                                bin2.put("d", "3");
                                bin2.put("id", "Bin2");
                                bin2.put("find", "h");
                                bins.add(bin2);
                                
                                //SET ITEMS
                                List<Map<String , String>> items  = new ArrayList<Map<String,String>>();
                                Map<String, String> item1 = new HashMap<String, String>();
                                item1.put("w", "5");
                                item1.put("h", "3");
                                item1.put("d", "2");
                                item1.put("q", "2");
                                item1.put("vr", "1");
                                item1.put("id", "Item1");
                                items.add(item1);
                                Map<String, String> item2 = new HashMap<String, String>();
                                item2.put("w", "3");
                                item2.put("h", "3");
                                item2.put("d", "3");
                                item2.put("q", "3");
                                item2.put("vr", "1");
                                item2.put("id", "Item2");
                                items.add(item2);
                                
                                //SET PARAMETERS
                                Map <String , String > params  = new HashMap <String , String >();
                                params.put("images_background_color", "255,255,255")
                                params.put("images_bin_border_color", "59,59,59")
                                params.put("images_bin_fill_color", "230,230,230")
                                params.put("images_item_border_color", "214,79,79")
                                params.put("images_item_fill_color", "177,14,14")
                                params.put("images_item_back_border_color", "215,103,103")
                                params.put("images_sbs_last_item_fill_color", "99,93,93")
                                params.put("images_sbs_last_item_border_color", "145,133,133")
                                params.put("images_width", "100")
                                params.put("images_height", "100")
                                params.put("images_source", "file")
                                params.put("images_sbs", "1")
                                params.put("stats", "1")
                                params.put("item_coordinates", "1")
                                params.put("images_complete", "1")
                                params.put("images_separated", "1")
                                
                                //ADD ELEMENTS TO JSON
                                json.put("username", "YOUR_USERNAME");
                                json.put("api_key", "YOUR_API_KEY");
                                json.put("items", items);
                                json.put("bins", bins);
                                json.put("params", params);

                                //CALL QUERY
                                HttpURLConnection conn;
                                URL addr = new URL("http://eu.api.3dbinpacking.com/packer/findSmallestBin");
                                conn = (HttpURLConnection) addr.openConnection();
                                conn.setRequestMethod("POST");
                                conn.setDoOutput(true);
                                conn.connect();
                                OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream());

                                // prepare POST body 
                                String query = "query=" + json.toString();

                                osw.write(query);
                                osw.flush();
                                osw.close();

                                BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                                String response_json = br.readLine();

                                //DO SOMETHING COOL WITH THE RESPONSE
                                System.out.println(response_json);
                            }
                        }
                        
                        string data;
                        System.Net.HttpWebRequest req = System.Net.WebRequest.Create("https://eu.api.3dbinpacking.com/packer/findSmallestBin") as System.Net.HttpWebRequest;

                        var request_data = new {username = "YOUR_USERNAME",
                                                api_key = "YOUR_API_KEY",
                                                items = new[] {
                                                                new { w = "5", h = "3", d = "2", q = "2", vr = "1", id = "Item1"}, 
                                                                new { w = "3", h = "3", d = "3", q = "3", vr = "1", id = "Item2"} 
                                                                },
                                                bins = new[] { 
                                                                new { w = "5", h = "0", d = "5", id = "Bin1", find = "h"},
                                                                new { w = "3", h = "30", d = "3", id = "Bin2", find = "h"}
                                                                },
                                                @params = new { images_background_color = "255,255,255", 
                                                               images_bin_border_color = "59,59,59", 
                                                               images_bin_fill_color = "230,230,230", 
                                                               images_item_border_color = "214,79,79", 
                                                               images_item_fill_color = "177,14,14", 
                                                               images_item_back_border_color = "215,103,103", 
                                                               images_sbs_last_item_fill_color = "99,93,93", 
                                                               images_sbs_last_item_border_color = "145,133,133", 
                                                               images_width = "100", 
                                                               images_height = "100", 
                                                               images_source = "file", 
                                                               images_sbs = "1", 
                                                               stats = "1", 
                                                               item_coordinates = "1", 
                                                               images_complete = "1", 
                                                               images_separated = "1"
                                                               }
                                            };

                        string json_str = JsonConvert.SerializeObject(request_data);

                        string queryParam = "query="+json_str;

                        byte[] postBytes = System.Text.Encoding.ASCII.GetBytes(queryParam);
                        req.Method = "POST";
                        req.ContentType = "application/x-www-form-urlencoded";
                        req.ContentLength = postBytes.Length;

                        System.IO.Stream postStream = req.GetRequestStream();
                        postStream.Write(postBytes, 0, postBytes.Length);
                        postStream.Close();

                        X509Certificate Cert = X509Certificate2.CreateFromCertFile("path_to_pem_key\eu.api.3dbinpacking.com.pem");
                        req.ClientCertificates.Add(Cert);

                        using (System.Net.HttpWebResponse response = req.GetResponse() as System.Net.HttpWebResponse)
                        {
                            System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream());
                            data = reader.ReadToEnd();
                        }