Documentation
Last update: June 16, 2024visualizeBin
Render a 3D visualization of a bin.
The visualizeBin endpoint requires bin dimensions, item dimensions, and item position and returns the HTML to display the 3D interactive bin in your application. Recommended is to first call one of the Metrics endpoints to retrieve all information required for this endpoint.
Connectivity
URL | https://www.packing-optimizer.com/api/visualizeBin |
Method | POST |
Headers
Authorization | Basic-Auth API credentials as found on your Account Settings page. |
Content-Type | application/json |
Query string options
OptionalhtmlLevel |
Determines if the response will be a full HTML page or a single div element. Default: div Options: fullPage or div Example: api/visualizeBin?htmlLevel=fullPage |
||||
responseType |
Determines in what form the visualization will be shared. Default: html Options:
|
||||
includeDependencies |
Controls the way that software dependencies are included in the response. If cdn, the dependencies are included as a script tag. If false, any relevant dependencies are not included`. Default: cdn Options: cdn or false Example: api/visualizeBin?includeDependencies=false |
Request body
Bin
Contains the dimensions of the bin that will be plotted.
Field | Type | Description |
---|---|---|
bin.width | numeric | Width of the bin. Example: 1.2 |
bin.depth | numeric | Depth of the bin. Example: 0.80 |
bin.height | numeric | Height of the bin. Example: 1.65 |
Items
Contains the items that will be plotted inside the bin.
Information: An item can either be a cube, or a cylinder. If your item is a
cube, the diameter should be omitted. If your item is a cylinder, the width and
depth should be omitted.
Field | Type | Description |
---|---|---|
items[].id | string | id to identify individual items. Example: ITEM001 |
items[].width | numeric | Width of the item. Example: 0.20 |
items[].depth | numeric | Depth of the item. Example: 0.10 |
items[].height | numeric | Height of the item. Example: 0.65 |
items[].diameter | numeric | The diameter of the item. Example: 0.20 |
items[].xCoordinate | numeric | X coordinate of the item inside the bin.
Example: 0.10 |
items[].yCoordinate | numeric | Y coordinate of the item inside the bin.
Example: 0.10 |
items[].zCoordinate | numeric | Z coordinate of the item inside the bin.
Example: 0.10 |
items[].rotationType | numeric |
Optional If provided, the item will be
rotated accordingly before rendering. Default: 0 |
items[].userMessage | string | Optional Text that will be displayed when
hovering over the item. The following formatting characters can be used:
|
items[].color | string | Optional Color of the item, takes precedence over
figure.itemColorList.
Options: any css named (extended) color. Example: green |
items[].borderColor | string | Optional Color of the item borders, takes
precedence over figure.itemBorderColorList.
Options: any css named (extended) color. Example: blue |
Figure
OptionalContains information about the styling of the figure.
Field | Type | Description |
---|---|---|
figure.itemColorList | string |
A comma separated string of CSS named colors.
Items will be colored according to the entries in this list. Default: red,black,blue,green Options: any css named color. Example: green,red,black,darkslateblue,sienna |
figure.itemBorderColorList | string |
A comma separated string of CSS named colors. The edges of the items will be colored according
to the entries in this list. Default: red,black,blue,green Options: any css named color. Example: green,red,black,darkslateblue,sienna |
figure.itemBorderThickness | numeric |
Controls the thickness of the item edges. Default: 2 Options: between 0.1 and 10 |
figure.itemOpacity | numeric |
Controls the opacity of the items, where the value 1 would be a solid, non see-through
surface. Default: 0.05 Options: between 0 and 1 |
figure.highlighted | boolean |
If true, items with a userMessage will be highlighted. Items with a userMessage will be colored red, items without userMessage will be colored gray. Default: false Options: true or false |
figure.dragMode | boolean |
If false, the figure cannot be dragged by the user. Default: None Options: false |
figure.showAxisTitles | boolean |
If true, the axes will have the headers indicating the corresponding dimension ("Width", "Depth", and
"Height").
If false, the headers for the axes will not be displayed. Default: true Options: true or false |
figure.showAxisTicks | boolean |
If true, the axis distance ticks will be displayed. Default: true Options: true or false |
figure.showGrid | boolean |
If true, the figure will be plotted on a grid. Default: true Options: true or false |
figure.showControls | boolean |
If true, a small control panel will be added to the figure. Default: false Options: true or false |
figure.zAxisBackgroundColor | string |
A single CSS named color. The z axis of the figure will be colored accordingly, indicating the
bottom of the bin. Default: brown Options: any css named color. |
figure.cylinderMeshLinesHorizontal | boolean |
If true, the cylinder will have horizontal mesh lines. Set to false if you want to decrease the response size. Default: true Options: true or false |
figure.cylinderMeshLinesVertical | boolean |
If true, the cylinder will have vertical mesh lines. Set to false if you want to decrease the response size. Default: false Options: true or false |
figure.circleGranularity | numeric |
Determines the granularity of a round shape. This has a big impact on the response size, the more round a circle needs to be, the bigger the response size is. Default: 10 Options: between 4 and 20 |
{
"bin": {
"width": 1.2,
"depth": 0.8,
"height": 1.65
},
"figure":{
"itemColorList": "white",
"itemBorderColorList": "black",
"itemBorderThickness": 3.5
},
"items": [{
"id": "DTM01",
"width": 1.2,
"depth": 0.8,
"height": 0.6,
"xCoordinate": 0,
"yCoordinate": 0,
"zCoordinate": 0
},
{
"id": "DTM002",
"width": 0.8,
"depth": 1.2,
"height": 0.6,
"rotationType": 1,
"xCoordinate": 0,
"yCoordinate": 0,
"zCoordinate": 0.6,
"userMessage": "<b>High Monetary Value</b><br><i>Handle with care</i><br>Monetary Value: $5000"
},
{
"id": "DTM003",
"width": 0.6,
"depth": 0.4,
"height": 0.3,
"rotationType": 0,
"xCoordinate": 0,
"yCoordinate": 0,
"zCoordinate": 1.2,
"userMessage": "<b>Double Check Quality</b><br><i>Sourced from new supplier</i>"
}
]
}
Response body
The response body contains the HTML of the bin and can be embedded into a webpage.
Tip: Put the example response into an HTML renderer to see the result.
<div>
<script type="text/javascript">
window.PlotlyConfig = {MathJaxConfig: 'local'};
</script>
<script src="https://cdn.plot.ly/plotly-2.17.1.min.js"></script>
<div id="d21e203d-2709-4fe6-b017-88f1ffe327ae" class="plotly-graph-div" style="height:100%; width:100%;"></div>
<script type="text/javascript">
window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("d21e203d-2709-4fe6-b017-88f1ffe327ae")) { Plotly.newPlot( "d21e203d-2709-4fe6-b017-88f1ffe327ae", [{"alphahull":0,"color":"red","flatshading":false,"lighting":{"ambient":1},"name":"DTM01","opacity":0.05,"type":"mesh3d","x":[0,1.2,0,0,1.2,0,1.2,1.2],"y":[0,0,0.8,0,0.8,0.8,0,0.8],"z":[0,0,0,0.6,0,0.6,0.6,0.6]},{"line":{"color":"red","width":2},"mode":"lines","type":"scatter3d","x":[0,0,null,0,0,null,0,1.2,null,0,0,null,1.2,1.2,null,0,1.2,null,1.2,1.2,null,1.2,1.2,null,0,0,null,0,1.2,null,1.2,1.2,null,0,1.2,null],"y":[0,0.8,null,0,0.8,null,0,0,null,0,0,null,0,0.8,null,0.8,0.8,null,0,0,null,0.8,0.8,null,0.8,0.8,null,0,0,null,0,0.8,null,0.8,0.8,null],"z":[0,0,null,0.6,0.6,null,0,0,null,0,0.6,null,0,0,null,0,0,null,0,0.6,null,0,0.6,null,0,0.6,null,0.6,0.6,null,0.6,0.6,null,0.6,0.6,null]},{"alphahull":0,"color":"black","flatshading":false,"hovertemplate":"<b>High Monetary Value</b><br><i>Handle with care</i><br>Monetary Value: $5000","lighting":{"ambient":1},"name":"DTM002","opacity":0.05,"type":"mesh3d","x":[0,1.2,0,0,1.2,0,1.2,1.2],"y":[0,0,0.8,0,0.8,0.8,0,0.8],"z":[0.6,0.6,0.6,1.2,0.6,1.2,1.2,1.2]},{"line":{"color":"black","width":2},"mode":"lines","type":"scatter3d","x":[0,0,null,0,0,null,0,1.2,null,0,0,null,1.2,1.2,null,0,1.2,null,1.2,1.2,null,1.2,1.2,null,0,0,null,0,1.2,null,1.2,1.2,null,0,1.2,null],"y":[0,0.8,null,0,0.8,null,0,0,null,0,0,null,0,0.8,null,0.8,0.8,null,0,0,null,0.8,0.8,null,0.8,0.8,null,0,0,null,0,0.8,null,0.8,0.8,null],"z":[0.6,0.6,null,1.2,1.2,null,0.6,0.6,null,0.6,1.2,null,0.6,0.6,null,0.6,0.6,null,0.6,1.2,null,0.6,1.2,null,0.6,1.2,null,1.2,1.2,null,1.2,1.2,null,1.2,1.2,null]},{"alphahull":0,"color":"blue","flatshading":false,"hovertemplate":"<b>Double Check Quality</b><br><i>Sourced from new supplier</i><br>Sourced from supplier XYZ, tel. 0123456","lighting":{"ambient":1},"name":"DTM003","opacity":0.05,"type":"mesh3d","x":[0,0.6,0,0,0.6,0,0.6,0.6],"y":[0,0,0.4,0,0.4,0.4,0,0.4],"z":[1.2,1.2,1.2,1.5,1.2,1.5,1.5,1.5]},{"line":{"color":"blue","width":2},"mode":"lines","type":"scatter3d","x":[0,0,null,0,0,null,0,0.6,null,0,0,null,0.6,0.6,null,0,0.6,null,0.6,0.6,null,0.6,0.6,null,0,0,null,0,0.6,null,0.6,0.6,null,0,0.6,null],"y":[0,0.4,null,0,0.4,null,0,0,null,0,0,null,0,0.4,null,0.4,0.4,null,0,0,null,0.4,0.4,null,0.4,0.4,null,0,0,null,0,0.4,null,0.4,0.4,null],"z":[1.2,1.2,null,1.5,1.5,null,1.2,1.2,null,1.2,1.5,null,1.2,1.2,null,1.2,1.2,null,1.2,1.5,null,1.2,1.5,null,1.2,1.5,null,1.5,1.5,null,1.5,1.5,null,1.5,1.5,null]}], {"margin":{"b":0,"l":0,"r":0,"t":0},"scene":{"aspectmode":"data","camera":{"eye":{"x":1.75,"y":1.75,"z":1.75}},"xaxis":{"dtick":0.2,"range":[0,1.2],"title":{"text":"Width"}},"yaxis":{"dtick":0.2,"range":[0,0.8],"title":{"text":"Depth"}},"zaxis":{"backgroundcolor":"brown","dtick":0.2,"range":[0,1.65],"title":{"text":"Height"}}},"showlegend":false,"template":{"data":{"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"heatmapgl":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmapgl"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}}}, {"displaylogo": false, "responsive": true} ) };
</script>
</div>