New package: libnest2d-0.4
This commit is contained in:
parent
d54feeac1f
commit
085f022003
|
@ -0,0 +1 @@
|
|||
libnest2d
|
|
@ -0,0 +1,122 @@
|
|||
From 2e91be2679b5efa0773292d9d0a2ae72255bb271 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Tue, 6 Oct 2020 16:13:15 +0200
|
||||
Subject: [PATCH 1/3] Allow for an item to be a disallowed area
|
||||
|
||||
Disallowed areas have slightly different behaviour from fixed items: Other items won't get packed closely around them. Implementation of that pending.
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/nester.hpp | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git include/libnest2d/nester.hpp include/libnest2d/nester.hpp
|
||||
index 2f207d5..932a060 100644
|
||||
--- a/include/libnest2d/nester.hpp
|
||||
+++ b/include/libnest2d/nester.hpp
|
||||
@@ -71,6 +71,15 @@ class _Item {
|
||||
int binid_{BIN_ID_UNSET}, priority_{0};
|
||||
bool fixed_{false};
|
||||
|
||||
+ /**
|
||||
+ * \brief If this is a fixed area, indicates whether it is a disallowed area
|
||||
+ * or a previously placed item.
|
||||
+ *
|
||||
+ * If this is a disallowed area, other objects will not get packed close
|
||||
+ * together with this item. It only blocks other items in its area.
|
||||
+ */
|
||||
+ bool disallowed_{false};
|
||||
+
|
||||
public:
|
||||
|
||||
/// The type of the shape which was handed over as the template argument.
|
||||
@@ -129,11 +138,18 @@ class _Item {
|
||||
sh_(sl::create<RawShape>(std::move(contour), std::move(holes))) {}
|
||||
|
||||
inline bool isFixed() const noexcept { return fixed_; }
|
||||
+ inline bool isDisallowedArea() const noexcept { return disallowed_; }
|
||||
inline void markAsFixedInBin(int binid)
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
}
|
||||
+ inline void markAsDisallowedAreaInBin(int binid)
|
||||
+ {
|
||||
+ fixed_ = binid >= 0;
|
||||
+ binid_ = binid;
|
||||
+ disallowed_ = true;
|
||||
+ }
|
||||
|
||||
inline void binId(int idx) { binid_ = idx; }
|
||||
inline int binId() const noexcept { return binid_; }
|
||||
|
||||
From ff61049e59d3151462bca7ff2e2268c2b32731e7 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Tue, 6 Oct 2020 16:14:36 +0200
|
||||
Subject: [PATCH 2/3] Allow unsetting of being a disallowed area
|
||||
|
||||
If you set the bin to -1 or set the item to be a simple fixed item afterwards, it'll no longer be a disallowed area.
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/nester.hpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git include/libnest2d/nester.hpp include/libnest2d/nester.hpp
|
||||
index 932a060..54761a6 100644
|
||||
--- a/include/libnest2d/nester.hpp
|
||||
+++ b/include/libnest2d/nester.hpp
|
||||
@@ -143,12 +143,13 @@ class _Item {
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
+ disallowed_ = false;
|
||||
}
|
||||
inline void markAsDisallowedAreaInBin(int binid)
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
- disallowed_ = true;
|
||||
+ disallowed_ = fixed_;
|
||||
}
|
||||
|
||||
inline void binId(int idx) { binid_ = idx; }
|
||||
|
||||
From 31391fd173249ad9b906390058e13b09238fadc8 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Thu, 8 Oct 2020 11:06:58 +0200
|
||||
Subject: [PATCH 3/3] Align items to their starting position if all placed
|
||||
items are disallowed
|
||||
|
||||
We shouldn't align items to disallowed areas. So place them in the starting position according to the alignment property.
|
||||
|
||||
Lot of work to investigate. But very little code changes!
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/placers/nfpplacer.hpp | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git include/libnest2d/placers/nfpplacer.hpp include/libnest2d/placers/nfpplacer.hpp
|
||||
index 96a8cff..b0ebb15 100644
|
||||
--- a/include/libnest2d/placers/nfpplacer.hpp
|
||||
+++ b/include/libnest2d/placers/nfpplacer.hpp
|
||||
@@ -101,7 +101,7 @@ struct NfpPConfig {
|
||||
* alignment with the candidate item or do anything else.
|
||||
*
|
||||
* \param remaining A container with the remaining items waiting to be
|
||||
- * placed. You can use some features about the remaining items to alter to
|
||||
+ * placed. You can use some features about the remaining items to alter the
|
||||
* score of the current placement. If you know that you have to leave place
|
||||
* for other items as well, that might influence your decision about where
|
||||
* the current candidate should be placed. E.g. imagine three big circles
|
||||
@@ -735,7 +735,8 @@ class _NofitPolyPlacer: public PlacerBoilerplate<_NofitPolyPlacer<RawShape, TBin
|
||||
remlist.insert(remlist.end(), remaining.from, remaining.to);
|
||||
}
|
||||
|
||||
- if(items_.empty()) {
|
||||
+ if(std::all_of(items_.begin(), items_.end(),
|
||||
+ [](const Item& item) { return item.isDisallowedArea(); })) {
|
||||
setInitialPosition(item);
|
||||
best_overfit = overfit(item.transformedShape(), bin_);
|
||||
can_pack = best_overfit <= 0;
|
|
@ -0,0 +1,65 @@
|
|||
From fac1e5d5da70e7fb56c520eb2d9b6a6e3282459e Mon Sep 17 00:00:00 2001
|
||||
From: Megidd <megiddgit@gmail.com>
|
||||
Date: Sun, 14 Feb 2021 11:29:18 +0330
|
||||
Subject: [PATCH 1/2] Fix CMake Error at CMakeLists.txt:125 (install)
|
||||
|
||||
When using such command:
|
||||
|
||||
cmake .. -DLIBNEST2D_HEADER_ONLY=OFF -DCMAKE_INSTALL_PREFIX=./installdir -DRP_ENABLE_DOWNLOADING=ON
|
||||
|
||||
This error is thrown:
|
||||
|
||||
CMake Error at CMakeLists.txt:125 (install):
|
||||
install TARGETS given no ARCHIVE DESTINATION for static library target
|
||||
"libnest2d_clipper_nlopt".
|
||||
|
||||
This commit fixes the error as far as tested.
|
||||
---
|
||||
CMakeLists.txt | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index c2f2bec..ab71296 100644
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -124,6 +124,7 @@ export(EXPORT ${PROJECT_NAME}Targets
|
||||
|
||||
install(TARGETS libnest2d libnest2d_headeronly ${LIBNAME}
|
||||
EXPORT ${PROJECT_NAME}Targets
|
||||
+ ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
|
||||
|
||||
From 6be371cad6ecaaf0d11b541400c3c8d77e605cd7 Mon Sep 17 00:00:00 2001
|
||||
From: Megidd <megiddgit@gmail.com>
|
||||
Date: Sun, 14 Feb 2021 13:14:31 +0330
|
||||
Subject: [PATCH 2/2] Also consider another error:
|
||||
|
||||
When running this command:
|
||||
|
||||
cmake .. -DLIBNEST2D_HEADER_ONLY=OFF -DCMAKE_INSTALL_PREFIX=./installdir -DRP_ENABLE_DOWNLOADING=ON -DBUILD_SHARED_LIBS=ON
|
||||
|
||||
This error is thrown:
|
||||
|
||||
CMake Error at CMakeLists.txt:125 (install):
|
||||
install TARGETS given no LIBRARY DESTINATION for shared library target
|
||||
"libnest2d_clipper_nlopt".
|
||||
|
||||
This commits resolves the error, as far as tested.
|
||||
---
|
||||
CMakeLists.txt | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index ab71296..1b9d4ed 100644
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -125,6 +125,7 @@ export(EXPORT ${PROJECT_NAME}Targets
|
||||
install(TARGETS libnest2d libnest2d_headeronly ${LIBNAME}
|
||||
EXPORT ${PROJECT_NAME}Targets
|
||||
ARCHIVE DESTINATION lib
|
||||
+ LIBRARY DESTINATION lib
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
From 12b64796aee24d5af41df3a10c4313dc713c3e74 Mon Sep 17 00:00:00 2001
|
||||
From: Karl Nilsson <karl.robert.nilsson@gmail.com>
|
||||
Date: Wed, 13 Jan 2021 21:51:34 -0500
|
||||
Subject: [PATCH] CMake: add SOVERSION to shared library
|
||||
|
||||
---
|
||||
CMakeLists.txt | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 374e90f..c2f2bec 100644
|
||||
--- CMakeLists.txt
|
||||
+++ CMakeLists.txt
|
||||
@@ -95,6 +95,7 @@ if(NOT LIBNEST2D_HEADER_ONLY)
|
||||
add_library(${LIBNAME} ${PROJECT_SOURCE_DIR}/src/libnest2d.cpp)
|
||||
set_target_properties(${LIBNAME} PROPERTIES PREFIX "")
|
||||
set_target_properties(${LIBNAME} PROPERTIES DEBUG_POSTFIX "d")
|
||||
+ set_target_properties(${LIBNAME} PROPERTIES SOVERSION "1.0")
|
||||
target_link_libraries(${LIBNAME} PUBLIC libnest2d_headeronly)
|
||||
target_compile_definitions(${LIBNAME} PUBLIC LIBNEST2D_STATIC)
|
||||
target_sources(${LIBNAME} PRIVATE ${LIBNEST2D_SRCFILES})
|
|
@ -0,0 +1,25 @@
|
|||
# Template file for 'libnest2d'
|
||||
pkgname=libnest2d
|
||||
version=0.4
|
||||
revision=1
|
||||
build_style=cmake
|
||||
configure_args="-DBUILD_SHARED_LIBS=ON -DLIBNEST2D_HEADER_ONLY=OFF
|
||||
-DLIBNEST2D_BUILD_UNITTESTS=ON -DCMAKE_CXX_STANDARD=14"
|
||||
makedepends="clipper-devel nlopt-devel boost-devel catch2"
|
||||
checkdepends="catch2"
|
||||
short_desc="2D irregular bin packing and nesting library"
|
||||
maintainer="Karl Nilsson <karl.robert.nilsson@gmail.com>"
|
||||
license="LGPL-3.0-or-later"
|
||||
homepage="https://github.com/tamasmeszaros/libnest2d"
|
||||
distfiles="https://github.com/tamasmeszaros/libnest2d/archive/${version}.tar.gz"
|
||||
checksum=00c909aa5690bead2be36cc57653c54c7c69d260a3c74924e9dfd79994729a2a
|
||||
|
||||
libnest2d-devel_package() {
|
||||
depends="${sourcepkg}>=${version}_${revision}"
|
||||
short_desc+=" - development files"
|
||||
pkg_install() {
|
||||
vmove usr/include
|
||||
vmove usr/lib/cmake
|
||||
vmove "usr/lib/*.so"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue