Skip to content

Commit

Permalink
Nonplanar Squashed into one commit
Browse files Browse the repository at this point in the history
added nonplanar layers, the definition of those and the projetion to the top most layer of these nonplanar surfaces.

Merged Point3 implementation from platsch here

added simple support of nonplanar extrusions

Added projection of the non infill extrusion paths

Modified GCode generation for nonplanar layers

Optimized Point in triangle test

Fixed bug in triangle generation for 3D display

Added contour following for freeform surfaces

Added nonplanar printable layers for free form surfaces

added additional debug output

added additional debug output

getting nonplanar projection to work

getting nonplanar projection to work

added different nonplanar surfaces to get more than one nonplanar surface in one object

removed TriangleMesh changes

added multiple nonplanar surfaces in a single object

added multiple nonplanar surfaces in a single object

changed structure of nonplanar surfaces and linked them to the actual layer. Top surfaces are back where the slope is greater than max_angle

added max height option

added config options for nonplanar slicing

fixed segfault for objects with thin extrusions

fixed segfault again

removed areas smaller than 20mm2

fixed gcode generation

added collision detection for nonplanar surfaces

removed bottom layer from nonplanar projection

fixed typo and added extrusion angle compensation

corrected movement on new objects and removed timing prints

removed collisions with size < 1.0mm²

removed debug svg output

added debug output why surfaces are unprintable

Builds correctly in 18.04 with tweak

example gcode file, meant for previews

Calculate the triangle surface using floats

Changing mark_neighbor_surfaces() to not be recursive.

merged master back into nonplanar and try to make old build system running again

added files to MANIFEST

fixed some build issues, tests currently fail

add aditional parameter for maximum printed angle

Better Collision detection

fixed issue with boost on 20.04

added config option for minimal surface area of nonplanar surfaces

Update PrintObject.cpp

disable checks when not nessesarry and added hints to disable collision checks to tooltips

Fixed issue with wrongly projected surfaces

rewritten move nonplanar_surfaces_up

removed svg output and fixed

rewritten the collision checking to get a faster and more reliable check.

switched for variable from i to k

3D support in distance_to to fix broken Douglas-Peucker algorithm in nonplanar gcode export

Fix incorrect type conversion of several ExPolygons to Polygons in projection and collision checking of nonplanar layers, leading to excessiv false collisions in some geometries

Fixed issue with the detection of the correct triangle for endpoints

Added ZipArchive correctly to the CMake Files. Don't know if this was really an issue.
See Zip-o-mat#37

Fixed issues with deprecated BOOST_*_ENDIAN
See Zip-o-mat#37 & Zip-o-mat#38

XMake boost::Placeholders::_1 visible

Fixes slic3r#4967

Do not undefine __STRICT_ANSI__

The `__STRICT_ANSI__` macro is defined by the compiler and it's undefined to undefine or redefine it.

Using `-U__STRICT_ANSI__ -std=c++11` is just silly. If you don't want strict mode, don't ask for strict mode. Certainly don't ask for strict mode and then undefined the macro that is defined by strict mode.

The correct solution is `-std=gnu++11` which doesn't define the macro in the first place.

Stop defining _GLIBCXX_USE_C99 (slic3r#4981)

This is an internal macro defined by libstdc++ to record the result of
configure checks done when GCC was built.  Defining (or undefining or
redefining) the macro yourself results in undefined behaviour.

If the system's C library doesn't expose support for C99 or 'long long'
then telling libstdc++ that it does isn't going to work. It will just
mean libstdc++ tries to use features that don't actually exist in the C
library.

In any case, systems that don't support C99 are probably not relevant to
anybody nowadays.

Fixes slic3r#4975

fix-cmake-boost-1-70+ (slic3r#4980)

Use boost/nowide/cstdlib.hpp instead of boost/nowide/cenv.hpp

Patch build to work on Boost 1.73 and older versions as well.

Changed Message to prevent messages/issues

removed merge conflict

Fixed issue with layer heights >1
  • Loading branch information
Zip-o-mat authored and AdelinoGP committed Mar 7, 2024
1 parent df32f75 commit da0757b
Show file tree
Hide file tree
Showing 67 changed files with 2,861 additions and 2,036 deletions.
27 changes: 7 additions & 20 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,15 @@ language: perl
before_install:
- sh package/linux/travis-decrypt-key
install:
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
- export BOOST_DIR=${HOME}/boost_1_63_0
- export BOOST_DIR=$HOME/boost_1_63_0
- export SLIC3R_STATIC=1
- export CXX_COMPILER=g++-4.9
- export C_COMPILER=gcc-4.9
- export CXX=g++-4.9
- export CC=g++-4.9
- source $HOME/perl5/perlbrew/etc/bashrc
- mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
- |
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
CMAKE_URL="https://cmake.org/files/v3.7/cmake-3.7.0-Linux-x86_64.tar.gz"
mkdir cmake && travis_retry wget --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
export PATH=${DEPS_DIR}/cmake/bin:${PATH}
fi
- cd ${TRAVIS_BUILD_DIR}
script:
- bash package/linux/travis-setup.sh
- perlbrew switch slic3r-perl
- eval $(perl -Mlocal::lib=${TRAVIS_BUILD_DIR}/local-lib)

script:
- perl Build.PL
- CXX=${CXX_COMPILER} CC=${C_COMPILER} cmake -D SLIC3R_STATIC=${SLIC3R_STATIC} . && make -j4
- perl ./Build.PL
after_success:
- eval $(perl -Mlocal::lib=$TRAVIS_BUILD_DIR/local-lib)
- LD_LIBRARY_PATH=$WXDIR/lib package/linux/make_archive.sh linux-x64
Expand All @@ -45,10 +33,9 @@ addons:
packages:
- g++-4.9
- gcc-4.9
- libgtk2.0-0
- libgtk2.0-0
- libgtk2.0-dev
- freeglut3
- cmake
ssh_known_hosts: dl.slic3r.org
notifications:
irc:
Expand All @@ -59,7 +46,7 @@ notifications:
use_notice: true
dist: trusty
env:
matrix:
matrix:
global:
- secure: eEVRZNMv7FM6jrOU9iAFkDhWxFQ1WtHBEaObImcvtFUxy6vWSt3ehFFeTRouj3uHQAnbvUzziDyvPPm8/95alv5g/du8ML6YzzqKBKfazM0xQ7SF6R2DQL8lfFIp+RSV7T02byEP1f1g7Zva7xH9szIlDcSfU0pXW4KWbkBFMd8=
- secure: gj338h+qHGccTD/VQFmEJkqdg2McIe2pO0iZ4Ae9BvY5vxkIML4BpoYZQXQTqiAOETnUjlcknY9lx0hI/PfkDD9MSJc5BC/3fMYRCu3SgAclEwklWf9vvtodUeT69mtnZuw1zze1nTbExuOw2mepbqFjxKKMl+9l5oCz4O54fXU=
43 changes: 34 additions & 9 deletions Build.PL
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ my %prereqs = qw(
ExtUtils::CppGuess 0
ExtUtils::MakeMaker 6.80
ExtUtils::ParseXS 3.35
ExtUtils::Typemap::Basic 0
File::Basename 0
File::Spec 0
Getopt::Long 0
Expand Down Expand Up @@ -52,7 +53,7 @@ if ($gui) {
);
if ($^O eq 'MSWin32') {
$recommends{"Win32::TieRegistry"} = 0;

# we need an up-to-date Win32::API because older aren't thread-safe (GH #2517)
$prereqs{'Win32::API'} = 0.79;
}
Expand All @@ -79,7 +80,7 @@ if ($ENV{SLIC3R_NO_AUTO}) {
File::Spec->catfile($Config{sitebin}, 'cpanm'),
File::Spec->catfile($Config{installscript}, 'cpanm'),
);

my $cpanm;
foreach my $path (@try) {
if (-e $path) { # don't use -x because it fails on Windows
Expand All @@ -102,35 +103,35 @@ There are several ways to install cpanm, try one of these:
cpan App::cpanminus
If it is installed in a non-standard location you can do:
CPANM=/path/to/cpanm perl Build.PL
EOF
if !$cpanm;
my @cpanm_args = ();
push @cpanm_args, "--sudo" if $sudo;

# install local::lib without --local-lib otherwise it's not usable afterwards
if (!eval "use local::lib qw(local-lib); 1") {
my $res = system $cpanm, @cpanm_args, 'local::lib';
warn "Warning: local::lib is required. You might need to run the `cpanm --sudo local::lib` command in order to install it.\n"
if $res != 0;
}

push @cpanm_args, ('--local-lib', 'local-lib');

# make sure our cpanm is updated (old ones don't support the ~ syntax)
system $cpanm, @cpanm_args, 'App::cpanminus';

my %modules = (%prereqs, %recommends);
foreach my $module (sort keys %modules) {
my $version = $modules{$module};
my @cmd = ($cpanm, @cpanm_args);

# temporary workaround for upstream bug in test
push @cmd, '--notest'
if $module =~ /^(?:OpenGL|Math::PlanePath|Test::Harness|IO::Scalar)$/;

push @cmd, "$module~$version";
my $res = system @cmd;
if ($res != 0) {
Expand All @@ -141,11 +142,35 @@ EOF
}
}
}
if (!$gui) {
# clean xs directory before reinstalling, to make sure Build is called
# with current perl binary
if (-e './xs/Build') {
if ($^O eq 'MSWin32') {
system '.\xs\Build', 'distclean';
} else {
system './xs/Build', 'distclean';
}
}
my $res = system $cpanm, @cpanm_args, '--reinstall', '--verbose', './xs';
if ($res != 0) {
die "The XS/C++ code failed to compile, aborting\n";
}
}
}

if (@missing_prereqs) {
printf "The following prerequisites failed to install: %s\n", join(', ', @missing_prereqs);
exit 1;
} elsif (!$gui) {
eval "use App::Prove; 1" or die "Failed to load App::Prove";
my $res = App::Prove->new->run ? 0 : 1;
if ($res == 0) {
print "If you also want to use the GUI you can now run `perl Build.PL --gui` to install the required modules.\n";
} else {
print "Some tests failed. But its OK since this is an experimantal Build. Please continue with `perl Build.PL --gui`\n";
}
exit $res;
}

__END__
63 changes: 0 additions & 63 deletions CMakeLists.txt

This file was deleted.

9 changes: 3 additions & 6 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
version: 1.3.0-{branch}-{build}
image: WMF 5
init:
- ps:
- ps:
environment:
LDLOADLIBS: -lstdc++
VERBOSE: 1
SLIC3R_STATIC: 1
SLIC3R_VERSION: 1.3.0
BOOST_DIR: C:\dev\boost_1_63_0
Expand Down Expand Up @@ -37,7 +36,6 @@ cache:
- C:\Users\appveyor\wxwidgets-32bit.7z
- C:\Users\appveyor\boost.1.63.0.32bit.7z
- C:\Users\appveyor\boost.1.63.0.64bit.7z

build_script:
- ps: "& package/win/appveyor_buildscript.ps1"
artifacts:
Expand All @@ -46,9 +44,8 @@ artifacts:
deploy_script:
- ps: "cd C:/projects/slic3r; & package/win/appveyor_deploy.ps1"
on_success:
- ps:
on_failure:
- ps:
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
on_failure:
- ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
on_finish:
- ps:
106 changes: 0 additions & 106 deletions cmake/modules/FindAlienWx.cmake

This file was deleted.

Loading

0 comments on commit da0757b

Please sign in to comment.