├── 3D-Bin-Packing
├── Resources
│ ├── 3d_icon.png
│ └── colorful-artistic-abstract-watercolor-ink-web-header.jpg
├── App.config
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Optimization.cs
├── Program.cs
├── Point3D.cs
├── MaxRectsBinPack.cs
├── Box.cs
├── Container.cs
├── 3D-Bin-Packing.csproj
├── Form1.Designer.cs
├── Form1.cs
├── Guillotine3D.cs
└── Form1.resx
├── 3D-Bin-Packing.sln
├── README.md
├── .gitattributes
├── .gitignore
└── LICENSE
/3D-Bin-Packing/Resources/3d_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SahibYar/3D-Bin-Packing/HEAD/3D-Bin-Packing/Resources/3d_icon.png
--------------------------------------------------------------------------------
/3D-Bin-Packing/Resources/colorful-artistic-abstract-watercolor-ink-web-header.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SahibYar/3D-Bin-Packing/HEAD/3D-Bin-Packing/Resources/colorful-artistic-abstract-watercolor-ink-web-header.jpg
--------------------------------------------------------------------------------
/3D-Bin-Packing/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Optimization.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace _3D_Bin_Packing
4 | {
5 | class Optimization
6 | {
7 | private String id;
8 | private String type;
9 |
10 | public String OptimizationID
11 | {
12 | get { return this.id; }
13 | set { this.id = value; }
14 | }
15 |
16 | public String OptimizationType
17 | {
18 | get { return this.type; }
19 | set { this.type = value; }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace _3D_Bin_Packing
5 | {
6 | static class Program
7 | {
8 | ///
9 | /// The main entry point for the application.
10 | ///
11 | [STAThread]
12 | static void Main()
13 | {
14 | Application.EnableVisualStyles();
15 | Application.SetCompatibleTextRenderingDefault(false);
16 | Application.Run(new Form1());
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Point3D.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace _3D_Bin_Packing
8 | {
9 | class Point3D
10 | {
11 | private float x;
12 | private float y;
13 | private float z;
14 |
15 | public float X
16 | {
17 | get { return this.x; }
18 | set { this.x = value; }
19 | }
20 |
21 | public float Y
22 | {
23 | get { return this.y; }
24 | set { this.y = value; }
25 | }
26 |
27 | public float Z
28 | {
29 | get { return this.z; }
30 | set { this.z = value; }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/3D-Bin-Packing.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.23107.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3D-Bin-Packing", "3D-Bin-Packing\3D-Bin-Packing.csproj", "{5854B8C8-C67D-4E2A-BB78-B0E4F64646F3}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {5854B8C8-C67D-4E2A-BB78-B0E4F64646F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {5854B8C8-C67D-4E2A-BB78-B0E4F64646F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {5854B8C8-C67D-4E2A-BB78-B0E4F64646F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {5854B8C8-C67D-4E2A-BB78-B0E4F64646F3}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace _3D_Bin_Packing.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("3D-Bin-Packing")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("3D-Bin-Packing")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("5854b8c8-c67d-4e2a-bb78-b0e4f64646f3")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 3d Bin Packing
2 | []()
3 | [](https://raw.githubusercontent.com/SahibYar/3D-Bin-Packing/local_branch/LICENSE)
4 |
5 | A freelance project for packing the goods efficiently using some heuristic algorithms
6 |
7 | # Note: This project is currently under development.
8 |
3D BIN PACKING PROBLEM
9 | Development of an Optimization software for calculation of the best container box for a given amount of items (boxes) with 2 possibilities:
10 |
11 | -
12 |
BEST FIT: select the best container box(es) (less waste in unused volume) choosing it from an ordered list of possible prebuilt container boxes (with several constraints in the dimensions and max weight). The entire ordered list can be split into several containers (according MaxCount limit) when needed, even of different sizes.
13 |
14 | - OPTIMAL: calculate the dimensions of the ‘optimal’ container box(es) (with several constraints in the dimensions and max weight).The entire ordered list can be split into several containers (according MaxCount limit and the Min/Max dimensional constraints) when needed, even of different sizes.
15 | The optimal calculated container box(es) is(are) almost cubic (if possible), have the maximum stability (low barycenter and no/minimum loose items inside), and a mimimal unused volume (air).
16 | -
17 | Project Description can be viewed further here in the documentation
18 |
19 |
20 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/MaxRectsBinPack.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace _3D_Bin_Packing
5 | {
6 | class MaxRectsBinPack
7 | {
8 | public Int32 boxWidth = 0;
9 | public Int32 boxLength = 0;
10 | public Int32 boxHeight = 0;
11 |
12 | public Boolean allowRotations;
13 |
14 | public List usedContainers = new List();
15 | public List freeContainers = new List();
16 |
17 | public enum FreeContianerChoiceHeuristic
18 | {
19 | ///
20 | /// BSSF: Positions the Box against the short side of a free container into which it fits the best.
21 | ///
22 | ContainerBestShortSideFit,
23 |
24 | ///
25 | /// BLSF: Positions the Box against the long side of a free container into which it fits the best.
26 | ///
27 | ContainerBestLongSideFit,
28 |
29 | ///
30 | /// BAF: Positions the Box into the smallest free container into which it fits.
31 | ///
32 | ContainerBestVolumeFit,
33 |
34 | ///
35 | /// BL: Does the tetris placement.
36 | ///
37 | ContainerBottomLeftRule,
38 |
39 | ///
40 | /// CP: Chooses the placement where the Box touches other Containers/Box as much as possible.
41 | ///
42 | ContainerContactPointRule
43 | }
44 |
45 | public MaxRectsBinPack(Int32 width, Int32 length, Int32 height, Boolean rotations = true)
46 | {
47 | Init(width, length, height, rotations);
48 | }
49 |
50 | public void Init (Int32 width, Int32 length, Int32 height, Boolean rotations = true)
51 | {
52 | boxWidth = width;
53 | boxHeight = height;
54 | allowRotations = rotations;
55 |
56 | Containers n = new Containers();
57 | n.Origin.X = 0;
58 | n.Origin.Y = 0;
59 | n.Origin.Z = 0;
60 |
61 | n.Width = width;
62 | n.Height = height;
63 | n.Length = length;
64 |
65 | usedContainers.Clear();
66 | freeContainers.Clear();
67 | freeContainers.Add(n);
68 | }
69 |
70 | public
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace _3D_Bin_Packing.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("_3D_Bin_Packing.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap _3d_icon {
67 | get {
68 | object obj = ResourceManager.GetObject("_3d_icon", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | build/
21 | bld/
22 | [Bb]in/
23 | [Oo]bj/
24 |
25 | # Visual Studio 2015 cache/options directory
26 | .vs/
27 |
28 | # MSTest test Results
29 | [Tt]est[Rr]esult*/
30 | [Bb]uild[Ll]og.*
31 |
32 | # NUNIT
33 | *.VisualState.xml
34 | TestResult.xml
35 |
36 | # Build Results of an ATL Project
37 | [Dd]ebugPS/
38 | [Rr]eleasePS/
39 | dlldata.c
40 |
41 | # DNX
42 | project.lock.json
43 | artifacts/
44 |
45 | *_i.c
46 | *_p.c
47 | *_i.h
48 | *.ilk
49 | *.meta
50 | *.obj
51 | *.pch
52 | *.pdb
53 | *.pgc
54 | *.pgd
55 | *.rsp
56 | *.sbr
57 | *.tlb
58 | *.tli
59 | *.tlh
60 | *.tmp
61 | *.tmp_proj
62 | *.log
63 | *.vspscc
64 | *.vssscc
65 | .builds
66 | *.pidb
67 | *.svclog
68 | *.scc
69 |
70 | # Chutzpah Test files
71 | _Chutzpah*
72 |
73 | # Visual C++ cache files
74 | ipch/
75 | *.aps
76 | *.ncb
77 | *.opensdf
78 | *.sdf
79 | *.cachefile
80 |
81 | # Visual Studio profiler
82 | *.psess
83 | *.vsp
84 | *.vspx
85 |
86 | # TFS 2012 Local Workspace
87 | $tf/
88 |
89 | # Guidance Automation Toolkit
90 | *.gpState
91 |
92 | # ReSharper is a .NET coding add-in
93 | _ReSharper*/
94 | *.[Rr]e[Ss]harper
95 | *.DotSettings.user
96 |
97 | # JustCode is a .NET coding add-in
98 | .JustCode
99 |
100 | # TeamCity is a build add-in
101 | _TeamCity*
102 |
103 | # DotCover is a Code Coverage Tool
104 | *.dotCover
105 |
106 | # NCrunch
107 | _NCrunch_*
108 | .*crunch*.local.xml
109 |
110 | # MightyMoose
111 | *.mm.*
112 | AutoTest.Net/
113 |
114 | # Web workbench (sass)
115 | .sass-cache/
116 |
117 | # Installshield output folder
118 | [Ee]xpress/
119 |
120 | # DocProject is a documentation generator add-in
121 | DocProject/buildhelp/
122 | DocProject/Help/*.HxT
123 | DocProject/Help/*.HxC
124 | DocProject/Help/*.hhc
125 | DocProject/Help/*.hhk
126 | DocProject/Help/*.hhp
127 | DocProject/Help/Html2
128 | DocProject/Help/html
129 |
130 | # Click-Once directory
131 | publish/
132 |
133 | # Publish Web Output
134 | *.[Pp]ublish.xml
135 | *.azurePubxml
136 | ## TODO: Comment the next line if you want to checkin your
137 | ## web deploy settings but do note that will include unencrypted
138 | ## passwords
139 | #*.pubxml
140 |
141 | *.publishproj
142 |
143 | # NuGet Packages
144 | *.nupkg
145 | # The packages folder can be ignored because of Package Restore
146 | **/packages/*
147 | # except build/, which is used as an MSBuild target.
148 | !**/packages/build/
149 | # Uncomment if necessary however generally it will be regenerated when needed
150 | #!**/packages/repositories.config
151 |
152 | # Windows Azure Build Output
153 | csx/
154 | *.build.csdef
155 |
156 | # Windows Store app package directory
157 | AppPackages/
158 |
159 | # Visual Studio cache files
160 | # files ending in .cache can be ignored
161 | *.[Cc]ache
162 | # but keep track of directories ending in .cache
163 | !*.[Cc]ache/
164 |
165 | # Others
166 | ClientBin/
167 | [Ss]tyle[Cc]op.*
168 | ~$*
169 | *~
170 | *.dbmdl
171 | *.dbproj.schemaview
172 | *.pfx
173 | *.publishsettings
174 | node_modules/
175 | orleans.codegen.cs
176 |
177 | # RIA/Silverlight projects
178 | Generated_Code/
179 |
180 | # Backup & report files from converting an old project file
181 | # to a newer Visual Studio version. Backup files are not needed,
182 | # because we have git ;-)
183 | _UpgradeReport_Files/
184 | Backup*/
185 | UpgradeLog*.XML
186 | UpgradeLog*.htm
187 |
188 | # SQL Server files
189 | *.mdf
190 | *.ldf
191 |
192 | # Business Intelligence projects
193 | *.rdl.data
194 | *.bim.layout
195 | *.bim_*.settings
196 |
197 | # Microsoft Fakes
198 | FakesAssemblies/
199 |
200 | # Node.js Tools for Visual Studio
201 | .ntvs_analysis.dat
202 |
203 | # Visual Studio 6 build log
204 | *.plg
205 |
206 | # Visual Studio 6 workspace options file
207 | *.opt
208 |
209 | # LightSwitch generated files
210 | GeneratedArtifacts/
211 | _Pvt_Extensions/
212 | ModelManifest.xml
213 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Box.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace _3D_Bin_Packing
4 | {
5 | class Box
6 | {
7 | #region Private Data Members
8 | private String b_id;
9 | private Int32 b_quantity;
10 | private Int32 b_length;
11 | private Int32 b_width;
12 | private Int32 b_height;
13 | private Double b_weight;
14 | private Boolean b_allowedRotation_x;
15 | private Boolean b_allowedRotation_y;
16 | private Boolean b_allowedRotation_z;
17 | private Boolean b_toponly;
18 | private Boolean b_bottomonly;
19 |
20 | //for output
21 | private Boolean b_is_placed;
22 |
23 | private Boolean Rotation_x;
24 | private Boolean Rotation_y;
25 | private Boolean Rotation_z;
26 |
27 | private String container_id; // id of the container, in which it is placed.
28 | private Point3D origin; //Point where its origin lies in the container;
29 | #endregion
30 |
31 | #region Functions
32 |
33 | //Returns true if Box i > Box j else false
34 | public static Boolean compareVolume(Box i, Box j)
35 | {
36 | return ((i.Height * i.Width * i.Length) > (j.Height * j.Width * j.Length));
37 | }
38 |
39 | //returns volume of a box;
40 | public Double Volume ()
41 | {
42 | return Height * Width * Length;
43 | }
44 | #endregion
45 |
46 | #region Properties
47 | public Boolean IsPlaced
48 | {
49 | get { return this.b_is_placed; }
50 | set { this.b_is_placed = value; }
51 | }
52 | public String BoxID
53 | {
54 | get { return this.b_id; }
55 | set { this.b_id = value; }
56 | }
57 |
58 | public Int32 Quantity
59 | {
60 | get { return this.b_quantity; }
61 | set { this.b_quantity = value; }
62 | }
63 |
64 | public Int32 Length
65 | {
66 | get { return this.b_length; }
67 | set { this.b_length = value; }
68 | }
69 |
70 | public Int32 Width
71 | {
72 | get { return this.b_width; }
73 | set { this.b_width = value; }
74 | }
75 |
76 | public Int32 Height
77 | {
78 | get { return this.b_height; }
79 | set { this.b_height = value; }
80 | }
81 |
82 | public Double Weight
83 | {
84 | get { return this.b_weight; }
85 | set { this.b_weight = value; }
86 | }
87 |
88 | public Boolean TopOnly
89 | {
90 | get { return this.b_toponly; }
91 | set { this.b_toponly = value; }
92 | }
93 |
94 | public Boolean BottomOnly
95 | {
96 | get { return this.b_bottomonly; }
97 | set { this.b_bottomonly = value; }
98 | }
99 |
100 | public Boolean AllowedRotationsX
101 | {
102 | get { return this.b_allowedRotation_x; }
103 | set { this.b_allowedRotation_x = value; }
104 | }
105 |
106 | public Boolean AllowedRotationsY
107 | {
108 | get { return this.b_allowedRotation_y; }
109 | set { this.b_allowedRotation_y = value; }
110 | }
111 |
112 | public Boolean AllowedRotationsZ
113 | {
114 | get { return this.b_allowedRotation_z; }
115 | set { this.b_allowedRotation_z = value; }
116 | }
117 |
118 | public Boolean RotationX
119 | {
120 | get { return this.Rotation_x; }
121 | set { this.Rotation_x = value; }
122 | }
123 |
124 | public Boolean RotationY
125 | {
126 | get { return this.Rotation_y; }
127 | set { this.Rotation_y = value; }
128 | }
129 |
130 | public Boolean RotationZ
131 | {
132 | get { return this.Rotation_z; }
133 | set { this.Rotation_z = value; }
134 | }
135 |
136 | public String ContainerID
137 | {
138 | get { return this.container_id; }
139 | set { this.container_id = value; }
140 | }
141 |
142 | public Point3D Origin
143 | {
144 | get { return this.origin; }
145 | set { this.origin = value; }
146 | }
147 | #endregion
148 | }
149 | }
--------------------------------------------------------------------------------
/3D-Bin-Packing/Container.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace _3D_Bin_Packing
4 | {
5 | class Containers
6 | {
7 | #region data members
8 | private String c_id;
9 | private Int32 c_Length;
10 | private Int32 c_minLength;
11 | private Int32 c_maxLength;
12 | private Int32 c_stepLength;
13 |
14 | private Int32 c_Width;
15 | private Int32 c_minWidth;
16 | private Int32 c_maxWidth;
17 | private Int32 c_stepWidth;
18 |
19 | private Int32 c_Height;
20 | private Int32 c_minHeight;
21 | private Int32 c_maxHeight;
22 | private Int32 c_stepHeight;
23 |
24 | private Double c_maxWeight;
25 | private Int32 c_maxCount;
26 |
27 | private Boolean b_still_to_open;
28 | private Boolean closed;
29 |
30 | /*
31 | A---------------B
32 | /| /|
33 | / | / |
34 | E--|------------F |
35 | | | | |
36 | Orig|in-------------|--D
37 | | / | /
38 | G/--------------H/
39 |
40 | */
41 | private Point3D origin;
42 | #endregion
43 |
44 | #region Functions
45 | public Double volume()
46 | {
47 | return Height * Length * Width;
48 | }
49 | #endregion
50 |
51 | #region properties
52 |
53 | public Point3D Origin
54 | {
55 | get { return this.origin; }
56 | set { this.origin = value; }
57 | }
58 |
59 | public Boolean Still_to_Open
60 | {
61 | get { return this.b_still_to_open; }
62 | set { this.b_still_to_open = value; }
63 | }
64 |
65 | public Boolean Closed
66 | {
67 | get { return this.closed; }
68 | set { this.closed = value; }
69 | }
70 |
71 | public String ContainerID
72 | {
73 | get { return this.c_id; }
74 | set { this.c_id = value; }
75 | }
76 |
77 | public Int32 Length
78 | {
79 | get { return this.c_Length; }
80 | set { this.c_Length = value; }
81 | }
82 |
83 | public Int32 MinLength
84 | {
85 | get { return this.c_maxLength; }
86 | set { this.c_maxLength = value; }
87 | }
88 |
89 | public Int32 MaxLength
90 | {
91 | get { return this.c_maxLength; }
92 | set { this.c_maxLength = value; }
93 | }
94 |
95 | public Int32 StepLenght
96 | {
97 | get { return this.c_stepLength; }
98 | set { this.c_stepLength = value; }
99 | }
100 |
101 | public Int32 Width
102 | {
103 | get { return this.c_Width; }
104 | set { this.c_Width = value; }
105 | }
106 |
107 | public Int32 MinWidth
108 | {
109 | get { return this.c_minWidth; }
110 | set { this.c_minWidth = value; }
111 | }
112 |
113 | public Int32 MaxWidth
114 | {
115 | get { return this.c_maxWidth; }
116 | set { this.c_maxWidth = value; }
117 | }
118 |
119 | public Int32 StepWidth
120 | {
121 | get { return this.c_stepWidth; }
122 | set { this.c_stepWidth = value; }
123 | }
124 |
125 | public Int32 Height
126 | {
127 | get { return this.c_Height; }
128 | set { this.c_Height = value; }
129 | }
130 |
131 | public Int32 MinHeight
132 | {
133 | get { return this.c_minHeight; }
134 | set { this.c_minHeight = value; }
135 | }
136 |
137 | public Int32 MaxHeight
138 | {
139 | get { return this.c_maxHeight; }
140 | set { this.c_maxHeight = value; }
141 | }
142 |
143 | public Int32 StepHeight
144 | {
145 | get { return this.c_stepHeight; }
146 | set { this.c_maxHeight = value; }
147 | }
148 |
149 | public Double MaxWeight
150 | {
151 | get { return this.c_maxWeight; }
152 | set { this.c_maxWeight = value; }
153 | }
154 |
155 | public Int32 MaxCount
156 | {
157 | get { return this.c_maxCount; }
158 | set { this.c_maxCount = value; }
159 | }
160 | #endregion
161 | }
162 | }
--------------------------------------------------------------------------------
/3D-Bin-Packing/3D-Bin-Packing.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {5854B8C8-C67D-4E2A-BB78-B0E4F64646F3}
8 | WinExe
9 | Properties
10 | _3D_Bin_Packing
11 | 3D-Bin-Packing
12 | v4.5.2
13 | 512
14 | true
15 | false
16 | publish\
17 | true
18 | Disk
19 | false
20 | Foreground
21 | 7
22 | Days
23 | false
24 | false
25 | true
26 | 0
27 | 1.0.0.%2a
28 | false
29 | true
30 |
31 |
32 | AnyCPU
33 | true
34 | full
35 | false
36 | bin\Debug\
37 | DEBUG;TRACE
38 | prompt
39 | 4
40 |
41 |
42 | AnyCPU
43 | pdbonly
44 | true
45 | bin\Release\
46 | TRACE
47 | prompt
48 | 4
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | Form
68 |
69 |
70 | Form1.cs
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 | Form1.cs
80 |
81 |
82 | ResXFileCodeGenerator
83 | Resources.Designer.cs
84 | Designer
85 |
86 |
87 | True
88 | Resources.resx
89 | True
90 |
91 |
92 | SettingsSingleFileGenerator
93 | Settings.Designer.cs
94 |
95 |
96 | True
97 | Settings.settings
98 | True
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | False
110 | Microsoft .NET Framework 4.5.2 %28x86 and x64%29
111 | true
112 |
113 |
114 | False
115 | .NET Framework 3.5 SP1
116 | false
117 |
118 |
119 |
120 |
121 |
122 |
123 |
130 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\3d_icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Form1.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace _3D_Bin_Packing
2 | {
3 | partial class Form1
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
32 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
33 | this.descriptionLabel1 = new System.Windows.Forms.Label();
34 | this.xmlFileLabel = new System.Windows.Forms.Label();
35 | this.addxmlbutton = new System.Windows.Forms.Button();
36 | this.XML_openFileDialog = new System.Windows.Forms.OpenFileDialog();
37 | this.generateButton = new System.Windows.Forms.Button();
38 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
39 | this.SuspendLayout();
40 | //
41 | // pictureBox1
42 | //
43 | this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
44 | this.pictureBox1.Location = new System.Drawing.Point(0, 0);
45 | this.pictureBox1.Name = "pictureBox1";
46 | this.pictureBox1.Size = new System.Drawing.Size(616, 104);
47 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
48 | this.pictureBox1.TabIndex = 0;
49 | this.pictureBox1.TabStop = false;
50 | //
51 | // descriptionLabel1
52 | //
53 | this.descriptionLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
54 | | System.Windows.Forms.AnchorStyles.Right)));
55 | this.descriptionLabel1.AutoSize = true;
56 | this.descriptionLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
57 | this.descriptionLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192)))));
58 | this.descriptionLabel1.Location = new System.Drawing.Point(21, 109);
59 | this.descriptionLabel1.Name = "descriptionLabel1";
60 | this.descriptionLabel1.Size = new System.Drawing.Size(315, 17);
61 | this.descriptionLabel1.TabIndex = 5;
62 | this.descriptionLabel1.Text = "Add XML file showing total Boxes and Containers";
63 | //
64 | // xmlFileLabel
65 | //
66 | this.xmlFileLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
67 | this.xmlFileLabel.AutoSize = true;
68 | this.xmlFileLabel.BackColor = System.Drawing.SystemColors.ButtonHighlight;
69 | this.xmlFileLabel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
70 | this.xmlFileLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
71 | this.xmlFileLabel.Location = new System.Drawing.Point(166, 129);
72 | this.xmlFileLabel.MinimumSize = new System.Drawing.Size(430, 20);
73 | this.xmlFileLabel.Name = "xmlFileLabel";
74 | this.xmlFileLabel.Size = new System.Drawing.Size(430, 20);
75 | this.xmlFileLabel.TabIndex = 4;
76 | //
77 | // addxmlbutton
78 | //
79 | this.addxmlbutton.Location = new System.Drawing.Point(21, 129);
80 | this.addxmlbutton.Name = "addxmlbutton";
81 | this.addxmlbutton.Size = new System.Drawing.Size(130, 23);
82 | this.addxmlbutton.TabIndex = 3;
83 | this.addxmlbutton.Text = "Add XML file";
84 | this.addxmlbutton.UseVisualStyleBackColor = true;
85 | this.addxmlbutton.Click += new System.EventHandler(this.addxmlbutton_Click);
86 | //
87 | // XML_openFileDialog
88 | //
89 | this.XML_openFileDialog.Filter = "XML files (*.xml)|*.xml;";
90 | //
91 | // generateButton
92 | //
93 | this.generateButton.Location = new System.Drawing.Point(469, 161);
94 | this.generateButton.Name = "generateButton";
95 | this.generateButton.Size = new System.Drawing.Size(127, 27);
96 | this.generateButton.TabIndex = 8;
97 | this.generateButton.Text = "Calculate Results";
98 | this.generateButton.UseVisualStyleBackColor = true;
99 | this.generateButton.Click += new System.EventHandler(this.generateButton_Click);
100 | //
101 | // Form1
102 | //
103 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
104 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
105 | this.ClientSize = new System.Drawing.Size(616, 199);
106 | this.Controls.Add(this.generateButton);
107 | this.Controls.Add(this.descriptionLabel1);
108 | this.Controls.Add(this.xmlFileLabel);
109 | this.Controls.Add(this.addxmlbutton);
110 | this.Controls.Add(this.pictureBox1);
111 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
112 | this.MaximizeBox = false;
113 | this.Name = "Form1";
114 | this.Text = "3D Bin Packing";
115 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
116 | this.ResumeLayout(false);
117 | this.PerformLayout();
118 |
119 | }
120 |
121 | #endregion
122 |
123 | private System.Windows.Forms.PictureBox pictureBox1;
124 | private System.Windows.Forms.Label descriptionLabel1;
125 | private System.Windows.Forms.Label xmlFileLabel;
126 | private System.Windows.Forms.Button addxmlbutton;
127 | private System.Windows.Forms.OpenFileDialog XML_openFileDialog;
128 | private System.Windows.Forms.Button generateButton;
129 | }
130 | }
131 |
132 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Form1.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using System.Windows.Forms;
4 | using System.Xml;
5 |
6 | namespace _3D_Bin_Packing
7 | {
8 | public partial class Form1 : Form
9 | {
10 | private string filePath; // a variable which will save the xml file path.
11 | public Form1()
12 | {
13 | InitializeComponent();
14 |
15 | // loading the 3d_icon.png as bitmap image to be displayed as form icon
16 | Bitmap bmp = Properties.Resources._3d_icon;
17 | this.Icon = Icon.FromHandle(bmp.GetHicon());
18 | }
19 |
20 | private void addxmlbutton_Click(object sender, EventArgs e)
21 | {
22 | DialogResult result = XML_openFileDialog.ShowDialog();
23 |
24 | if (result == DialogResult.OK)
25 | {
26 |
27 | try
28 | {
29 | filePath = XML_openFileDialog.FileName;
30 | xmlFileLabel.Text = filePath.ToString(); //adding the selected path to the label.
31 | }
32 | catch (Exception ex)
33 | {
34 | MessageBox.Show("Error: Could not read xml file from disk.\nError Message: " + ex.Message);
35 | }
36 | }
37 | }
38 |
39 | private void generateButton_Click(object sender, EventArgs e)
40 | {
41 | Load_Data();
42 | } //ending the event handler for Generate button
43 |
44 | private void Load_Data()
45 | {
46 | // Created an Optimization object for storing the OptimizationID
47 | // and OptimizationType of given xml file.
48 | Optimization optimization_object = new Optimization();
49 |
50 | // Created an Containers object for storing the ContainerID,
51 | // Length, MinLength.... of the given Container
52 | Containers container_object = new Containers();
53 |
54 | // Created an Box object for storing the BoxID, Quantity,
55 | // Length.... of the given Box
56 | Box box_object = new Box();
57 |
58 | // Create a new xml document
59 | XmlDocument document = new XmlDocument();
60 |
61 | // loaded the newly created xml document with the input of xml
62 | // file path
63 | document.Load(@"" + xmlFileLabel.Text.ToString());
64 |
65 | // Created a list of all the child nodes of tag
66 | // which include OptimizationID, OptimizationType,
67 | // Containers, and Boxes.
68 | XmlNodeList xnList = document.SelectNodes("/xml[@*]");
69 |
70 | foreach (XmlNode xn in xnList)
71 | {
72 | // Selecting the given child nodes of tag to
73 | // XmlNode class objects.
74 | XmlNode OptimizationID = xn.SelectSingleNode("OptimizationID");
75 | XmlNode OptimizationType = xn.SelectSingleNode("OptimizationType");
76 | XmlNode Containers = xn.SelectSingleNode("Containers");
77 | XmlNode Boxes = xn.SelectSingleNode("Boxes");
78 |
79 | // assigning the text of OptimizationID to Optimization class object
80 | if (OptimizationID != null)
81 | {
82 | optimization_object.OptimizationID = OptimizationID.InnerText;
83 | }
84 |
85 | // assigning the text of OptimizationType to Optimization class object
86 | if (OptimizationType != null)
87 | {
88 | optimization_object.OptimizationType = OptimizationType.InnerText;
89 | }
90 |
91 | if (Containers != null)
92 | {
93 | XmlNodeList innercontainers = Containers.SelectNodes("Containers/Container");
94 | foreach (XmlNode node in innercontainers)
95 | {
96 | if (node != null)
97 | {
98 | Point3D point = new Point3D();
99 | container_object.ContainerID = node["ContainerID"].InnerText;
100 |
101 | container_object.Length = Int32.Parse(node["Length"].InnerText);
102 | container_object.MinLength = Int32.Parse(node["MinLength"].InnerText);
103 | container_object.MaxLength = Int32.Parse(node["MaxLength"].InnerText);
104 | container_object.StepLenght = Int32.Parse(node["StepLength"].InnerText);
105 |
106 | container_object.Width = Int32.Parse(node["Width"].InnerText);
107 | container_object.MinWidth = Int32.Parse(node["MinWidth"].InnerText);
108 | container_object.MaxWidth = Int32.Parse(node["MaxWidth"].InnerText);
109 | container_object.StepWidth = Int32.Parse(node["StepWidth"].InnerText);
110 |
111 | container_object.Height = Int32.Parse(node["Height"].InnerText);
112 | container_object.MinHeight = Int32.Parse(node["MinHeight"].InnerText);
113 | container_object.MaxHeight = Int32.Parse(node["MaxHeight"].InnerText);
114 | container_object.StepHeight = Int32.Parse(node["StepHeight"].InnerText);
115 |
116 | container_object.MaxWeight = Double.Parse(node["MaxWeight"].InnerText);
117 | container_object.MaxCount = Int32.Parse(node["MaxCount"].InnerText);
118 | container_object.Still_to_Open = true;
119 | container_object.Closed = false;
120 |
121 |
122 | point.X = 0.0F;
123 | point.Y = 0.0F;
124 | point.Z = 0.0F;
125 | container_object.Origin = point;
126 |
127 | Guillotine3D.ContainerList.Add(container_object.ContainerID, container_object);
128 | } // ending if (node != null)
129 | } // ending foreach loop
130 | } // ending if (Containers != null)
131 |
132 | if (Boxes != null)
133 | {
134 | XmlNodeList boxlist = Boxes.SelectNodes("Boxes/Box");
135 | foreach (XmlNode box in boxlist)
136 | {
137 | box_object.BoxID = box["BoxID"].InnerText;
138 | box_object.Quantity = Int32.Parse(box["Quantity"].InnerText);
139 | box_object.Length = Int32.Parse(box["Length"].InnerText);
140 | box_object.Width = Int32.Parse(box["Width"].InnerText);
141 | box_object.Height = Int32.Parse(box["Height"].InnerText);
142 | box_object.Weight = Double.Parse(box["Weight"].InnerText);
143 |
144 | if (box["AllowedRotations"].InnerText.Contains("X"))
145 | box_object.AllowedRotationsX = true;
146 | else
147 | box_object.AllowedRotationsX = false;
148 |
149 | if (box["AllowedRotations"].InnerText.Contains("Y"))
150 | box_object.AllowedRotationsY = true;
151 | else
152 | box_object.AllowedRotationsY = false;
153 |
154 | if (box["AllowedRotations"].InnerText.Contains("Z"))
155 | box_object.AllowedRotationsZ = true;
156 | else
157 | box_object.AllowedRotationsZ = false;
158 |
159 | box_object.IsPlaced = false;
160 |
161 | if (box["TopOnly"].InnerText.ToUpper() == "FALSE")
162 | box_object.TopOnly = false;
163 | else
164 | box_object.TopOnly = true;
165 |
166 | if (box["BottomOnly"].InnerText.ToUpper() == "FALSE")
167 | box_object.TopOnly = false;
168 | else
169 | box_object.TopOnly = true;
170 |
171 | Guillotine3D.BoxList.Add(box_object.BoxID, box_object);
172 | } // ending foreach (XmlNode box in boxlist)
173 | } // ending If (Boxes != null)
174 | } // ending foreach (XmlNode xn in xnList)
175 | } //ending the Load_Data() function
176 | } // ending Form1 class
177 | } // ending namespace
178 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/3D-Bin-Packing/Guillotine3D.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | namespace _3D_Bin_Packing
6 | {
7 | class Guillotine3D
8 | {
9 | // Created a list of containers for holding all the container objects
10 | public static Dictionary ContainerList = new Dictionary();
11 |
12 | // Created a list of boxes for holding all the box objects
13 | public static Dictionary BoxList = new Dictionary();
14 |
15 |
16 | // list of the splitted containers from the given containers
17 | //Dictionary
18 | Dictionary> Split_Container_open_list = new Dictionary>();
19 |
20 | // list of all the boxes in the given container.
21 | public static Dictionary> Container_Containing_Boxes = new Dictionary>();
22 |
23 | //sort the boxes in their descending volume
24 | List> sorted_box_List;
25 |
26 | ///
27 | /// This functions will find the smallest un-opened container from the container list.
28 | ///
29 | /// return the key of smallest un-opened container
30 | String find_smallest_unopen_container ()
31 | {
32 | Double volume = ContainerList.First().Value.Height * ContainerList.First().Value.Width * ContainerList.First().Value.Length;
33 | String key = ContainerList.First().Key;
34 |
35 | foreach (KeyValuePair c in ContainerList)
36 | {
37 | if (volume > c.Value.Height * c.Value.Width * c.Value.Height && c.Value.Still_to_Open)
38 | {
39 | volume = c.Value.Height * c.Value.Width * c.Value.Height;
40 | key = c.Key;
41 | }
42 | }
43 | return key;
44 | }
45 |
46 | /*
47 | Fill the box with items in it not violating its maximum weight limit
48 | and other constraints
49 | */
50 | // This funtion will try to put the best possible object which can be fitted in the given container
51 | void fill_container(String key) //here the key will be of the smallest available container.
52 | {
53 | // Still to open = false
54 | // means that it is currenlty open.
55 | ContainerList[key].Still_to_Open = false;
56 |
57 | // added the currently opened container in its splitted container list as it is.
58 | Split_Container_open_list[key].Add(ContainerList[key]);
59 |
60 | // rearranging the boxes in descending order of its volume.
61 | re_arranging_boxes();
62 |
63 | foreach (KeyValuePair box in sorted_box_List)
64 | {
65 | if (box.Value.Quantity > 0) // if the box is not yet placed.
66 | {
67 | //to get the orientation in which the box will be placed in the given container
68 | Boolean? RotationX = null;
69 | Boolean? RotationY = null;
70 | Boolean? RotationZ = null;
71 | Int32? container_index = null;
72 | Int32? orientation_case = null;
73 |
74 | Point3D point = has_free_space(key, box.Value, out orientation_case, out container_index, out RotationX, out RotationY, out RotationZ);
75 |
76 | // checks if the box could be contained in the given container.
77 | if (point.X != float.NegativeInfinity && point.Y != float.NegativeInfinity && point.Z != float.NegativeInfinity && orientation_case.HasValue &&
78 | RotationX.HasValue && RotationY.HasValue && RotationZ.HasValue && container_index.HasValue && has_free_weight(key, box.Value))
79 | {
80 | if (place_the_object(key, container_index.Value, orientation_case.Value, box.Value, point, RotationX, RotationY, RotationZ))
81 | {
82 | re_arranging_boxes();
83 | }
84 | }
85 | }
86 | }
87 | }
88 |
89 |
90 | ///
91 | ///
92 | ///
93 | /// Key of the container in which the object has to be placed
94 | /// index of the Split_Container_open_list at which the box is placed
95 | /// This parametre will help in splitting the Containers, There are total of 6 cases.
96 | /// Box which is to be placed in the given container
97 | /// 3-Dimensional Point in the given container which will be the origin of the box
98 | /// if true, Rotate the box allong X-axis
99 | /// if true, Rotate the box allong Y-axis
100 | /// if true, Rotate the box allong Z-axis
101 | /// True if the object is placed successfully
102 | Boolean place_the_object(String Container_Key, Int32 index, Int32 orientation_case, Box box, Point3D point, Boolean? RotationX, Boolean? RotationY, Boolean? RotationZ)
103 | {
104 | BoxList[box.BoxID].Quantity = BoxList[Container_Key].Quantity - 1;
105 | BoxList[box.BoxID].ContainerID = Container_Key;
106 | BoxList[box.BoxID].RotationX = RotationX.Value;
107 | BoxList[box.BoxID].RotationY = RotationY.Value;
108 | BoxList[box.BoxID].RotationZ = RotationZ.Value;
109 | BoxList[box.BoxID].Origin = point;
110 |
111 | Container_Containing_Boxes[Container_Key].Add(BoxList[box.BoxID]);
112 | Split_Container(Container_Key, index, orientation_case, box, point, RotationX.Value, RotationY.Value, RotationZ.Value);
113 |
114 | return true;
115 | }
116 |
117 | void Split_Container(String Container_Key, Int32 index, Int32 orientation_case, Box box, Point3D point, Boolean RotationX, Boolean RotationY, Boolean RotationZ)
118 | {
119 | Containers old_container = Split_Container_open_list[Container_Key].ElementAt(index);
120 | Containers new_container1 = new Containers();
121 | Containers new_container2 = new Containers();
122 | Containers new_container3 = new Containers();
123 |
124 | //no-rotation
125 | if (orientation_case == 0)
126 | {
127 | new_container1.Length = old_container.Length;
128 | new_container1.Width = old_container.Width - box.Width;
129 | new_container1.Height = old_container.Height;
130 |
131 | if (new_container1.Length > 0 && new_container1.Width > 0 && new_container1.Height > 0)
132 | {
133 | new_container1.Origin.X = point.X;
134 | new_container1.Origin.Y = point.Y + box.Width;
135 | new_container1.Origin.Z = point.Z;
136 | new_container1.Still_to_Open = true;
137 | Split_Container_open_list[Container_Key].Add(new_container1);
138 | }
139 |
140 | new_container2.Length = old_container.Length - box.Length;
141 | new_container2.Width = old_container.Width;
142 | new_container2.Height = old_container.Height;
143 |
144 | if (new_container2.Length > 0 && new_container2.Width > 0 && new_container2.Height > 0)
145 | {
146 | new_container2.Origin.X = point.X + box.Length;
147 | new_container2.Origin.Y = point.Y;
148 | new_container2.Origin.Z = point.Z;
149 | new_container2.Still_to_Open = true;
150 | Split_Container_open_list[Container_Key].Add(new_container2);
151 | }
152 |
153 | new_container3.Length = old_container.Length;
154 | new_container3.Width = old_container.Width;
155 | new_container3.Height = old_container.Height - box.Height;
156 |
157 | if (new_container3.Length > 0 && new_container3.Width > 0 && new_container3.Height > 0)
158 | {
159 | new_container3.Origin.X = point.X;
160 | new_container3.Origin.Y = point.Y;
161 | new_container3.Origin.Z = point.Z + box.Height;
162 | new_container3.Still_to_Open = true;
163 | Split_Container_open_list[Container_Key].Add(new_container3);
164 | }
165 | Split_Container_open_list[Container_Key].RemoveAt(index);
166 |
167 | /*
168 | foreach Free Container F in Split_Container_open_list
169 | {
170 | Compute F\Box and subdivide the result into at most six
171 | new containers C1, C2, C3...C6 and add them to
172 | Split_Container_open_list;
173 | and Delete F from Split_Containers_open_list.
174 | }
175 | */
176 | Int32 tindex = 0;
177 | foreach (Containers F in Split_Container_open_list[Container_Key])
178 | {
179 | //if the container is intersected by the container.
180 | if (box_intersect_container(box, box.Length, box.Width, box.Height, F))
181 | {//New node at the top side of the used node.
182 | if (box.Origin.X < F.Origin.X + F.Length && box.Origin.X + box.Length > F.Origin.X )
183 | {
184 | if (box.Origin.Y > F.Origin.Y && box.Origin.Y < F.Origin.Y + F.Width)
185 | {
186 | // make new container
187 | }
188 | }
189 | }
190 | +tindex;
191 | }
192 | }
193 |
194 | //rotation along X-axis
195 | else if (orientation_case == 1)
196 | {
197 | new_container1.Length = old_container.Length;
198 | new_container1.Width = old_container.Width - box.Height;
199 | new_container1.Height = old_container.Height;
200 |
201 | if (new_container1.Length > 0 && new_container1.Width > 0 && new_container1.Height > 0)
202 | {
203 | new_container1.Origin.X = point.X;
204 | new_container1.Origin.Y = point.Y + box.Height;
205 | new_container1.Origin.Z = point.Z;
206 | new_container1.Still_to_Open = true;
207 | Split_Container_open_list[Container_Key].Add(new_container1);
208 | }
209 |
210 | new_container2.Length = old_container.Length - box.Length;
211 | new_container2.Width = old_container.Width;
212 | new_container2.Height = old_container.Height;
213 |
214 | if (new_container2.Length > 0 && new_container2.Width > 0 && new_container2.Height > 0)
215 | {
216 | new_container2.Origin.X = point.X + box.Length;
217 | new_container2.Origin.Y = point.Y;
218 | new_container2.Origin.Z = point.Z;
219 | new_container2.Still_to_Open = true;
220 | Split_Container_open_list[Container_Key].Add(new_container2);
221 | }
222 |
223 | new_container3.Length = old_container.Length;
224 | new_container3.Width = old_container.Width;
225 | new_container3.Height = old_container.Height - box.Width;
226 |
227 | if (new_container3.Length > 0 && new_container3.Width > 0 && new_container3.Height > 0)
228 | {
229 | new_container3.Origin.X = point.X;
230 | new_container3.Origin.Y = point.Y;
231 | new_container3.Origin.Z = point.Z + box.Width;
232 | new_container3.Still_to_Open = true;
233 | Split_Container_open_list[Container_Key].Add(new_container3);
234 | }
235 | Split_Container_open_list[Container_Key].RemoveAt(index);
236 | }
237 |
238 | //rotation along Y-axis
239 | else if (orientation_case == 2)
240 | {
241 | new_container1.Length = old_container.Length;
242 | new_container1.Width = old_container.Width - box.Width;
243 | new_container1.Height = old_container.Height;
244 |
245 | if (new_container1.Length > 0 && new_container1.Width > 0 && new_container1.Height > 0)
246 | {
247 | new_container1.Origin.X = point.X;
248 | new_container1.Origin.Y = point.Y + box.Width;
249 | new_container1.Origin.Z = point.Z;
250 | new_container1.Still_to_Open = true;
251 | Split_Container_open_list[Container_Key].Add(new_container1);
252 | }
253 |
254 | new_container2.Length = old_container.Length - box.Height;
255 | new_container2.Width = old_container.Width;
256 | new_container2.Height = old_container.Height;
257 |
258 | if (new_container2.Length > 0 && new_container2.Width > 0 && new_container2.Height > 0)
259 | {
260 | new_container2.Origin.X = point.X + box.Height;
261 | new_container2.Origin.Y = point.Y;
262 | new_container2.Origin.Z = point.Z;
263 | new_container2.Still_to_Open = true;
264 | Split_Container_open_list[Container_Key].Add(new_container2);
265 | }
266 |
267 | new_container3.Length = old_container.Length;
268 | new_container3.Width = old_container.Width;
269 | new_container3.Height = old_container.Height - box.Length;
270 |
271 | if (new_container3.Length > 0 && new_container3.Width > 0 && new_container3.Height > 0)
272 | {
273 | new_container3.Origin.X = point.X;
274 | new_container3.Origin.Y = point.Y;
275 | new_container3.Origin.Z = point.Z + box.Length;
276 | new_container3.Still_to_Open = true;
277 | Split_Container_open_list[Container_Key].Add(new_container3);
278 | }
279 | Split_Container_open_list[Container_Key].RemoveAt(index);
280 | }
281 |
282 | //rotation along z-axis
283 | else if (orientation_case == 3)
284 | {
285 | new_container1.Length = old_container.Length;
286 | new_container1.Width = old_container.Width - box.Length;
287 | new_container1.Height = old_container.Height;
288 |
289 | if (new_container1.Length > 0 && new_container1.Width > 0 && new_container1.Height > 0)
290 | {
291 | new_container1.Origin.X = point.X;
292 | new_container1.Origin.Y = point.Y + box.Length;
293 | new_container1.Origin.Z = point.Z;
294 | new_container1.Still_to_Open = true;
295 | Split_Container_open_list[Container_Key].Add(new_container1);
296 | }
297 |
298 | new_container2.Length = old_container.Length - box.Width;
299 | new_container2.Width = old_container.Width;
300 | new_container2.Height = old_container.Height;
301 |
302 | if (new_container2.Length > 0 && new_container2.Width > 0 && new_container2.Height > 0)
303 | {
304 | new_container2.Origin.X = point.X + box.Width;
305 | new_container2.Origin.Y = point.Y;
306 | new_container2.Origin.Z = point.Z;
307 | new_container2.Still_to_Open = true;
308 | Split_Container_open_list[Container_Key].Add(new_container2);
309 | }
310 |
311 | new_container3.Length = old_container.Length;
312 | new_container3.Width = old_container.Width;
313 | new_container3.Height = old_container.Height - box.Height;
314 |
315 | if (new_container3.Length > 0 && new_container3.Width > 0 && new_container3.Height > 0)
316 | {
317 | new_container3.Origin.X = point.X;
318 | new_container3.Origin.Y = point.Y;
319 | new_container3.Origin.Z = point.Z + box.Height;
320 | new_container3.Still_to_Open = true;
321 | Split_Container_open_list[Container_Key].Add(new_container3);
322 | }
323 | Split_Container_open_list[Container_Key].RemoveAt(index);
324 | }
325 |
326 | else if (orientation_case == 4)
327 | {
328 | new_container1.Length = old_container.Length;
329 | new_container1.Width = old_container.Width - box.Length;
330 | new_container1.Height = old_container.Height;
331 |
332 | if (new_container1.Length > 0 && new_container1.Width > 0 && new_container1.Height > 0)
333 | {
334 | new_container1.Origin.X = point.X;
335 | new_container1.Origin.Y = point.Y + box.Length;
336 | new_container1.Origin.Z = point.Z;
337 | new_container1.Still_to_Open = true;
338 | Split_Container_open_list[Container_Key].Add(new_container1);
339 | }
340 |
341 | new_container2.Length = old_container.Length - box.Height;
342 | new_container2.Width = old_container.Width;
343 | new_container2.Height = old_container.Height;
344 |
345 | if (new_container2.Length > 0 && new_container2.Width > 0 && new_container2.Height > 0)
346 | {
347 | new_container2.Origin.X = point.X + box.Height;
348 | new_container2.Origin.Y = point.Y;
349 | new_container2.Origin.Z = point.Z;
350 | new_container2.Still_to_Open = true;
351 | Split_Container_open_list[Container_Key].Add(new_container2);
352 | }
353 |
354 | new_container3.Length = old_container.Length;
355 | new_container3.Width = old_container.Width;
356 | new_container3.Height = old_container.Height - box.Width;
357 |
358 | if (new_container3.Length > 0 && new_container3.Width > 0 && new_container3.Height > 0)
359 | {
360 | new_container3.Origin.X = point.X;
361 | new_container3.Origin.Y = point.Y;
362 | new_container3.Origin.Z = point.Z + box.Width;
363 | new_container3.Still_to_Open = true;
364 | Split_Container_open_list[Container_Key].Add(new_container3);
365 | }
366 | Split_Container_open_list[Container_Key].RemoveAt(index);
367 | }
368 |
369 | //no-rotation
370 | else if (orientation_case == 5)
371 | {
372 | new_container1.Length = old_container.Length;
373 | new_container1.Width = old_container.Width - box.Height;
374 | new_container1.Height = old_container.Height;
375 |
376 | if (new_container1.Length > 0 && new_container1.Width > 0 && new_container1.Height > 0)
377 | {
378 | new_container1.Origin.X = point.X;
379 | new_container1.Origin.Y = point.Y + box.Height;
380 | new_container1.Origin.Z = point.Z;
381 | new_container1.Still_to_Open = true;
382 | Split_Container_open_list[Container_Key].Add(new_container1);
383 | }
384 |
385 | new_container2.Length = old_container.Length - box.Width;
386 | new_container2.Width = old_container.Width;
387 | new_container2.Height = old_container.Height;
388 |
389 | if (new_container2.Length > 0 && new_container2.Width > 0 && new_container2.Height > 0)
390 | {
391 | new_container2.Origin.X = point.X + box.Width;
392 | new_container2.Origin.Y = point.Y;
393 | new_container2.Origin.Z = point.Z;
394 | new_container2.Still_to_Open = true;
395 | Split_Container_open_list[Container_Key].Add(new_container2);
396 | }
397 |
398 | new_container3.Length = old_container.Length;
399 | new_container3.Width = old_container.Width;
400 | new_container3.Height = old_container.Height - box.Length;
401 |
402 | if (new_container3.Length > 0 && new_container3.Width > 0 && new_container3.Height > 0)
403 | {
404 | new_container3.Origin.X = point.X;
405 | new_container3.Origin.Y = point.Y;
406 | new_container3.Origin.Z = point.Z + box.Length;
407 | new_container3.Still_to_Open = true;
408 | Split_Container_open_list[Container_Key].Add(new_container3);
409 | }
410 | Split_Container_open_list[Container_Key].RemoveAt(index);
411 | }
412 | }
413 |
414 | Boolean box_intersect_container(Box b, Int32 box_length, Int32 box_width, Int32 box_height, Containers c)
415 | {
416 | if (b.Origin.X >= c.Origin.X + c.Length || b.Origin.X + box_length <= c.Origin.X ||
417 | b.Origin.Y >= c.Origin.Y + c.Width || b.Origin.Y + box_width <= c.Origin.Y ||
418 | b.Origin.Z >= c.Origin.Z + c.Height || b.Origin.Z + box_height <= c.Origin.Z)
419 | return false;
420 | else
421 | return true;
422 | }
423 | /// this function checks if the container has enough weight limit remaning
424 | /// It is the key of the Container in which the box has to be placed,
425 | /// I used this key for accessing the container from dictionary data-structure.
426 | /// Box which is to be contained in the given contianer.
427 | /// Returns true if weight of box is less than weight of container else false.
428 | Boolean has_free_weight(String Container_key, Box box)
429 | {
430 | List temp_list = Container_Containing_Boxes[Container_key];
431 | Double weight = box.Weight;
432 |
433 | foreach (Box ibox in temp_list) weight += ibox.Weight;
434 | if (weight >= ContainerList[Container_key].MaxWeight) return false;
435 | else return true;
436 | }
437 |
438 | ///
439 | /// This Function checks if the given box can be contained in the container or not.
440 | /// Flow:
441 | /// It 1st checks for all the sub splitted containers of the given container individually that whether
442 | /// they could occumulate the box or not.
443 | /// Foreach container, it checks all the orientations X, Y or Z (if the rotations are allowed) for each box.
444 | ///
445 | ///
446 | /// It is the key of the Container in which the box has to be placed,I used this key for accessing the container from dictionary data-structure.
447 | /// Box which is to be contained in the given contianer.
448 | /// This parametre will help in splitting the Containers, There are total of 6 cases.
449 | /// Exact index at which the box will be placed in the given container.
450 | /// Out pramatre showing if the box was rotated along X co-ordinate
451 | /// Out pramatre showing if the box was rotated along Y co-ordinate
452 | /// Out pramatre showing if the box was rotated along Z co-ordinate
453 | /// It returns the Origin of the container in which the box has to be placed. (If available)If not available, returns a point (-infinity, -infinity, -infinity)
454 | Point3D has_free_space(String Container_Key, Box box, out Int32? Orientation_case, out Int32? container_index, out Boolean? RotationX, out Boolean? RotationY, out Boolean? RotationZ)
455 | {
456 | //could be placed in only touching the bottom
457 | if (box.BottomOnly)
458 | {
459 | Int32 index = 0;
460 | foreach (Containers container in Split_Container_open_list[Container_Key])
461 | {
462 | //as the object is bottom only so it should be placed on xy-plane only
463 | if (container.Origin.Z == 0.0F && container.volume() >= box.Volume()) //z-axis value should be zero.
464 | {
465 | //no rotation
466 | if (container.Height >= box.Height && container.Length >= box.Length && container.Width >= box.Width)
467 | {
468 | RotationX = false;
469 | RotationY = false;
470 | RotationZ = false;
471 | container_index = index;
472 | Orientation_case = 0;
473 | return container.Origin;
474 | }
475 |
476 | //if X rotation is allowed.
477 | else if (box.AllowedRotationsX && container.Width >= box.Height && container.Height >= box.Width && container.Length >= box.Length)
478 | {
479 | RotationX = true;
480 | RotationY = false;
481 | RotationZ = false;
482 | container_index = index;
483 | Orientation_case = 1;
484 | return container.Origin;
485 | }
486 |
487 | // if Y rotation is allowed
488 | else if (box.AllowedRotationsY && container.Width >= box.Width && container.Length >= box.Height && container.Height >= box.Length)
489 | {
490 | RotationX = false;
491 | RotationY = true;
492 | RotationZ = false;
493 | container_index = index;
494 | Orientation_case = 2;
495 | return container.Origin;
496 | }
497 |
498 | //if Z rotation is allowed
499 | else if (box.AllowedRotationsZ && container.Height >= box.Height && container.Width >= box.Length && container.Length >= box.Width)
500 | {
501 | RotationX = false;
502 | RotationY = false;
503 | RotationZ = true;
504 | container_index = index;
505 | Orientation_case = 3;
506 | return container.Origin;
507 | }
508 | //along yx-rotation
509 | else if (box.AllowedRotationsY && box.AllowedRotationsX)
510 | {
511 | if (container.Width >= box.Height && container.Length >= box.Width && container.Height >= box.Length)
512 | {
513 | RotationX = true;
514 | RotationY = true;
515 | RotationZ = false;
516 | container_index = index;
517 | Orientation_case = 4;
518 | return container.Origin;
519 | }
520 | else if (container.Width >= box.Length && container.Length >= box.Height && container.Height >= box.Width)
521 | {
522 | RotationX = true;
523 | RotationY = true;
524 | RotationZ = false;
525 | container_index = index;
526 | Orientation_case = 5;
527 | return container.Origin;
528 | }
529 | }
530 |
531 | //along xz-rotation
532 | else if (box.AllowedRotationsX && box.AllowedRotationsZ )
533 | {
534 | if (container.Width >= box.Height && container.Length >= box.Width && container.Height >= box.Length)
535 | {
536 | RotationX = true;
537 | RotationY = false;
538 | RotationZ = true;
539 | container_index = index;
540 | Orientation_case = 4;
541 | return container.Origin;
542 | }
543 | else if (container.Width >= box.Length && container.Length >= box.Height && container.Height >= box.Width)
544 | {
545 | RotationX = true;
546 | RotationY = false;
547 | RotationZ = true;
548 | container_index = index;
549 | Orientation_case = 5;
550 | return container.Origin;
551 | }
552 | }
553 |
554 | //along zy-rotation
555 | else if (box.AllowedRotationsZ && box.AllowedRotationsY)
556 | {
557 | if (container.Width >= box.Height && container.Length >= box.Width && container.Height >= box.Length)
558 | {
559 | RotationX = false;
560 | RotationY = true;
561 | RotationZ = true;
562 | container_index = index;
563 | Orientation_case = 4;
564 | return container.Origin;
565 | }
566 | else if (container.Width >= box.Length && container.Length >= box.Height && container.Height >= box.Width)
567 | {
568 | RotationX = false;
569 | RotationY = true;
570 | RotationZ = true;
571 | container_index = index;
572 | Orientation_case = 5;
573 | return container.Origin;
574 | }
575 | }
576 | }
577 | ++index;
578 | }
579 | }
580 | else if (box.TopOnly)
581 | {
582 | Int32 index = 0;
583 | foreach (Containers container in Split_Container_open_list[Container_Key])
584 | {
585 | //as the object is top only only so it should be placed on xy-plane + only
586 | if (container.Origin.Z + container.Height == ContainerList[Container_Key].Height && container.volume() >= box.Volume())
587 | {
588 | //no rotation
589 | if (container.Height >= box.Height && container.Length >= box.Length && container.Width >= box.Width)
590 | {
591 | RotationX = false;
592 | RotationY = false;
593 | RotationZ = false;
594 | container_index = index;
595 | Orientation_case = 0;
596 | return container.Origin;
597 | }
598 |
599 | //if X rotation is allowed.
600 | else if (box.AllowedRotationsX && container.Width >= box.Height && container.Height >= box.Width && container.Length >= box.Length)
601 | {
602 | RotationX = true;
603 | RotationY = false;
604 | RotationZ = false;
605 | container_index = index;
606 | Orientation_case = 1;
607 | return container.Origin;
608 | }
609 |
610 | // if Y rotation is allowed
611 | else if (box.AllowedRotationsY && container.Width >= box.Width && container.Length >= box.Height && container.Height >= box.Length)
612 | {
613 | RotationX = false;
614 | RotationY = true;
615 | RotationZ = false;
616 | container_index = index;
617 | Orientation_case = 2;
618 | return container.Origin;
619 | }
620 |
621 | //if Z rotation is allowed
622 | else if (box.AllowedRotationsZ && container.Height >= box.Height && container.Width >= box.Length && container.Length >= box.Width)
623 | {
624 | RotationX = false;
625 | RotationY = false;
626 | RotationZ = true;
627 | container_index = index;
628 | Orientation_case = 3;
629 | return container.Origin;
630 | }
631 | //along yx-rotation
632 | else if (box.AllowedRotationsY && box.AllowedRotationsX)
633 | {
634 | if (container.Width >= box.Height && container.Length >= box.Width && container.Height >= box.Length)
635 | {
636 | RotationX = true;
637 | RotationY = true;
638 | RotationZ = false;
639 | container_index = index;
640 | Orientation_case = 4;
641 | return container.Origin;
642 | }
643 | else if (container.Width >= box.Length && container.Length >= box.Height && container.Height >= box.Width)
644 | {
645 | RotationX = true;
646 | RotationY = true;
647 | RotationZ = false;
648 | container_index = index;
649 | Orientation_case = 5;
650 | return container.Origin;
651 | }
652 | }
653 |
654 | //along xz-rotation
655 | else if (box.AllowedRotationsX && box.AllowedRotationsZ)
656 | {
657 | if (container.Width >= box.Height && container.Length >= box.Width && container.Height >= box.Length)
658 | {
659 | RotationX = true;
660 | RotationY = false;
661 | RotationZ = true;
662 | container_index = index;
663 | Orientation_case = 4;
664 | return container.Origin;
665 | }
666 | else if (container.Width >= box.Length && container.Length >= box.Height && container.Height >= box.Width)
667 | {
668 | RotationX = true;
669 | RotationY = false;
670 | RotationZ = true;
671 | container_index = index;
672 | Orientation_case = 5;
673 | return container.Origin;
674 | }
675 | }
676 |
677 | //along zy-rotation
678 | else if (box.AllowedRotationsZ && box.AllowedRotationsY)
679 | {
680 | if (container.Width >= box.Height && container.Length >= box.Width && container.Height >= box.Length)
681 | {
682 | RotationX = false;
683 | RotationY = true;
684 | RotationZ = true;
685 | container_index = index;
686 | Orientation_case = 4;
687 | return container.Origin;
688 | }
689 | else if (container.Width >= box.Length && container.Length >= box.Height && container.Height >= box.Width)
690 | {
691 | RotationX = false;
692 | RotationY = true;
693 | RotationZ = true;
694 | container_index = index;
695 | Orientation_case = 5;
696 | return container.Origin;
697 | }
698 | }
699 | }
700 | ++index;
701 | }
702 | }
703 | //place the box whereever it is fissible
704 | else
705 | {
706 | Int32 index = 0;
707 | foreach (Containers container in Split_Container_open_list[Container_Key])
708 | {
709 | if (container.volume() >= box.Volume())
710 | {
711 | //no rotation
712 | if (container.Height >= box.Height && container.Length >= box.Length && container.Width >= box.Width)
713 | {
714 | RotationX = false;
715 | RotationY = false;
716 | RotationZ = false;
717 | container_index = index;
718 | Orientation_case = 0;
719 | return container.Origin;
720 | }
721 |
722 | //if X rotation is allowed.
723 | else if (box.AllowedRotationsX && container.Width >= box.Height && container.Height >= box.Width && container.Length >= box.Length)
724 | {
725 | RotationX = true;
726 | RotationY = false;
727 | RotationZ = false;
728 | container_index = index;
729 | Orientation_case = 1;
730 | return container.Origin;
731 | }
732 |
733 | // if Y rotation is allowed
734 | else if (box.AllowedRotationsY && container.Width >= box.Width && container.Length >= box.Height && container.Height >= box.Length)
735 | {
736 | RotationX = false;
737 | RotationY = true;
738 | RotationZ = false;
739 | container_index = index;
740 | Orientation_case = 2;
741 | return container.Origin;
742 | }
743 |
744 | //if Z rotation is allowed
745 | else if (box.AllowedRotationsZ && container.Height >= box.Height && container.Width >= box.Length && container.Length >= box.Width)
746 | {
747 | RotationX = false;
748 | RotationY = false;
749 | RotationZ = true;
750 | container_index = index;
751 | Orientation_case = 3;
752 | return container.Origin;
753 | }
754 | //along yx-rotation
755 | else if (box.AllowedRotationsY && box.AllowedRotationsX)
756 | {
757 | if (container.Width >= box.Height && container.Length >= box.Width && container.Height >= box.Length)
758 | {
759 | RotationX = true;
760 | RotationY = true;
761 | RotationZ = false;
762 | container_index = index;
763 | Orientation_case = 4;
764 | return container.Origin;
765 | }
766 | else if (container.Width >= box.Length && container.Length >= box.Height && container.Height >= box.Width)
767 | {
768 | RotationX = true;
769 | RotationY = true;
770 | RotationZ = false;
771 | container_index = index;
772 | Orientation_case = 5;
773 | return container.Origin;
774 | }
775 | }
776 |
777 | //along xz-rotation
778 | else if (box.AllowedRotationsX && box.AllowedRotationsZ)
779 | {
780 | if (container.Width >= box.Height && container.Length >= box.Width && container.Height >= box.Length)
781 | {
782 | RotationX = true;
783 | RotationY = false;
784 | RotationZ = true;
785 | container_index = index;
786 | Orientation_case = 4;
787 | return container.Origin;
788 | }
789 | else if (container.Width >= box.Length && container.Length >= box.Height && container.Height >= box.Width)
790 | {
791 | RotationX = true;
792 | RotationY = false;
793 | RotationZ = true;
794 | container_index = index;
795 | Orientation_case = 5;
796 | return container.Origin;
797 | }
798 | }
799 |
800 | //along zy-rotation
801 | else if (box.AllowedRotationsZ && box.AllowedRotationsY)
802 | {
803 | if (container.Width >= box.Height && container.Length >= box.Width && container.Height >= box.Length)
804 | {
805 | RotationX = false;
806 | RotationY = true;
807 | RotationZ = true;
808 | container_index = index;
809 | Orientation_case = 4;
810 | return container.Origin;
811 | }
812 | else if (container.Width >= box.Length && container.Length >= box.Height && container.Height >= box.Width)
813 | {
814 | RotationX = false;
815 | RotationY = true;
816 | RotationZ = true;
817 | container_index = index;
818 | Orientation_case = 5;
819 | return container.Origin;
820 | }
821 | }
822 | }
823 | ++index;
824 | }
825 | }
826 |
827 | // if still not available.
828 | Point3D invalid_point = new Point3D();
829 | invalid_point.X = float.NegativeInfinity;
830 | invalid_point.Y = float.NegativeInfinity;
831 | invalid_point.Z = float.NegativeInfinity;
832 | RotationX = null;
833 | RotationY = null;
834 | RotationZ = null;
835 | container_index = null;
836 | Orientation_case = null;
837 | return invalid_point;
838 | }
839 |
840 | /// This function rearrange the boxes in descending order of there volumes.
841 | void re_arranging_boxes()
842 | {
843 | sorted_box_List = BoxList.ToList();
844 | sorted_box_List.Sort((firstPair, nextPair) => ( firstPair.Value.Width * firstPair.Value.Height * firstPair.Value.Length).CompareTo (nextPair.Value.Length * nextPair.Value.Width * nextPair.Value.Height));
845 | sorted_box_List.Reverse();
846 | }
847 | }
848 | }
--------------------------------------------------------------------------------
/3D-Bin-Packing/Form1.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 |
123 | 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
989 |
990 |
991 |
992 | 17, 17
993 |
994 |
--------------------------------------------------------------------------------