/DeepNestSharp

Primary LanguageC#MIT LicenseMIT

DeepNestSharp

DeepNest - The Original (https://github.com/Jack000/Deepnest)
DeepNestPort - C# port (https://github.com/fel88/DeepNestPort)

"If I have seen further, it is by standing upon the shoulders of giants"
Jack and Felix have done some great work but the Original's use of a remote service to translate between image formats was an issue and the Port just wasn't proving flexible/stable enough for my needs. I really needed the ability to save projects, nest results and individual sheet placements, and wanted to add the ability to seed subsequent nests with the results of prior nests (outstanding) and the ability to edit placements (implemented) - to slip that last piece in to the gaps on the sheet that the algorithm just wasn't finding.

Felix was keen to keep true to the original DeepNest code in DeepNestPort...

Hope you consider breaking away from the legacy code base because it's getting really hard to merge.

I'll try, but it is important to keep compatibility with the original code... I think we shouldn't entangle our repositories too much

...so DeepNestSharp was born. It completely rebuilds the UI using WPF on Net.Core and is a huge refactor which has paid some dividends but also introduced some compromises and issues, some of which are outstanding...

DXF Import/Export: https://github.com/IxMilia/Dxf

Project status: WIP

On the Sheet Placement Editor you can edit the offsets or Shift+Click on parts to drag/drop in the Preview. FYI dragging is a little out of sync so multiple small moves work better than one large move. . . and atm you can only move around parts already present; todo => moving from one sheet to another, adding & removing additional parts etc.

Individual Parts, whole Nest Result sets and single Sheet Placements can be saved, edited and reloaded. You can also persist and view the interim calculation objects; SheetNfp and FinalNfp - for debugging purposes.

Compiling minkowski.dll

Included are a set of minkowski.dlls that work on various Windows setups I have; AnyCpu, x86 & x64; but you'll likely need to build the dlls for your own setup. You can avoid the need for the C++ import altogether if you switch off DllImport in the settings; and use the internal C# implementation instead. Be warned that this internal implementation is not as performant as the C++ import atm, and it sometimes generates sub-optimal nests but it's an easy-start option that's proving good enough most of the time. . .

  1. Replace <boost_1.76_path> with your real BOOST (1.76+) path in compile.bat

Example:

cl /Ox -I "D:\boost\boost_1_76_0" /LD minkowski.cc
  1. Run compile.bat using Developer Command Prompt for Visual Studio
  2. Copy minkowski.dll to MinkowskiDlls folder. If you're running in Visual Studio DeepNestLib.CiTests has a PostBuild task to copy the DLLs from there for you. Otherwise make sure the appropriate DLLs get to the DeepNestSharp.exe folder. Note there's preprocessor directives to pick the right DLL dependent on which Arch you're running. Works for me; YMMV.

Contributors