Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FormerLurker/ArcWelderLib.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFormerLurker <hochgebe@gmail.com>2020-04-26 01:20:39 +0300
committerFormerLurker <hochgebe@gmail.com>2020-04-26 01:20:39 +0300
commit4fcf89d4995921b89b579d06052df11b66e4879f (patch)
tree390bbfcab87591e802f9ac91ac2d531b4ae53946 /ArcWelderTest
Add project files.
Diffstat (limited to 'ArcWelderTest')
-rw-r--r--ArcWelderTest/ArcWelderTest.cpp268
-rw-r--r--ArcWelderTest/ArcWelderTest.h72
-rw-r--r--ArcWelderTest/ArcWelderTest.vcxproj161
-rw-r--r--ArcWelderTest/ArcWelderTest.vcxproj.filters27
4 files changed, 528 insertions, 0 deletions
diff --git a/ArcWelderTest/ArcWelderTest.cpp b/ArcWelderTest/ArcWelderTest.cpp
new file mode 100644
index 0000000..a082bc3
--- /dev/null
+++ b/ArcWelderTest/ArcWelderTest.cpp
@@ -0,0 +1,268 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Arc Welder: Test Application
+//
+// This application is only used for ad-hoc testing of the anti-stutter library.
+//
+// Built using the 'Arc Welder: Anti Stutter' library
+//
+// Copyright(C) 2020 - Brad Hochgesang
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// This program is free software : you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published
+// by the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
+// GNU Affero General Public License for more details.
+//
+//
+// You can contact the author at the following email address:
+// FormerLurker@pm.me
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+#include "ArcWelderTest.h"
+#include "logger.h"
+#include <iostream>
+
+int main(int argc, char* argv[])
+{
+ run_tests(argc, argv);
+}
+
+int run_tests(int argc, char* argv[])
+{
+ _CrtMemState state;
+ // This line will take a snapshot
+ // of the memory allocated at this point.
+ _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
+ _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
+ _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
+ _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT);
+ _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
+ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
+
+ //std::string filename = argv[1];
+ unsigned int num_runs = 1;
+ _CrtMemCheckpoint(&state);
+
+ auto start = std::chrono::high_resolution_clock::now();
+ for (unsigned int index = 0; index < num_runs; index++)
+ {
+ std::cout << "Processing test run " << index + 1 << " of " << num_runs << ".\r\n";
+ TestAntiStutter(ANTI_STUTTER_TEST);
+ //TestInverseProcessor();
+ //TestCircularBuffer();
+ //TestSegmentedLine();
+ //TestSegmentedArc();
+
+ }
+ auto end = std::chrono::high_resolution_clock::now();
+ _CrtMemDumpAllObjectsSince(&state);
+ std::chrono::duration<double> diff = end - start;
+ std::cout << "Tests completed in " << diff.count() << " seconds";
+ //std::cout << "Has Memory Leak = " << has_leak << ".\r\n";
+ // Set the debug-heap flag so that memory leaks are reported when
+ // the process terminates. Then, exit.
+ //printf("Press Any Key to Continue\n");
+ //std::getchar();
+ return 0;
+}
+
+static gcode_position_args get_single_extruder_position_args()
+{
+ gcode_position_args posArgs = gcode_position_args();
+ posArgs.autodetect_position = true;
+ posArgs.home_x = 0;
+ posArgs.home_x_none = true;
+ posArgs.home_y = 0;
+ posArgs.home_y_none = true;
+ posArgs.home_z = 0;
+ posArgs.home_z_none = true;
+ posArgs.shared_extruder = true;
+ posArgs.zero_based_extruder = true;
+ posArgs.set_num_extruders(1);
+ posArgs.retraction_lengths[0] = .8;
+ posArgs.z_lift_heights[0] = .6;
+ posArgs.x_firmware_offsets[0] = 0;
+ posArgs.y_firmware_offsets[0] = 1;
+ posArgs.default_extruder = 0;
+ posArgs.priming_height = 0.4;
+ posArgs.minimum_layer_height = 0.05;
+ posArgs.height_increment = 0.5;
+ posArgs.g90_influences_extruder = false;
+ posArgs.xyz_axis_default_mode = "absolute";
+ posArgs.e_axis_default_mode = "absolute";
+ posArgs.units_default = "millimeters";
+ posArgs.location_detection_commands = std::vector<std::string>();
+ posArgs.is_bound_ = true;
+ posArgs.is_circular_bed = false;
+ posArgs.snapshot_x_min = 0;
+ posArgs.snapshot_x_max = 250;
+ posArgs.snapshot_y_min = 0;
+ posArgs.snapshot_y_max = 210;
+ posArgs.snapshot_z_min = 0;
+ posArgs.snapshot_z_max = 200;
+ posArgs.x_min = 0;
+ posArgs.x_max = 250;
+ posArgs.y_min = -3;
+ posArgs.y_max = 210;
+ posArgs.z_min = 0;
+ posArgs.z_max = 200;
+ return posArgs;
+}
+
+static gcode_position_args get_5_shared_extruder_position_args()
+{
+ gcode_position_args posArgs = gcode_position_args();
+ posArgs.autodetect_position = true;
+ posArgs.home_x = 0;
+ posArgs.home_x_none = true;
+ posArgs.home_y = 0;
+ posArgs.home_y_none = true;
+ posArgs.home_z = 0;
+ posArgs.home_z_none = true;
+ posArgs.shared_extruder = true;
+ posArgs.zero_based_extruder = true;
+ posArgs.set_num_extruders(5);
+ posArgs.retraction_lengths[0] = .2;
+ posArgs.retraction_lengths[1] = .4;
+ posArgs.retraction_lengths[2] = .6;
+ posArgs.retraction_lengths[3] = .8;
+ posArgs.retraction_lengths[4] = 1;
+ posArgs.z_lift_heights[0] = 1;
+ posArgs.z_lift_heights[1] = .8;
+ posArgs.z_lift_heights[2] = .6;
+ posArgs.z_lift_heights[3] = .4;
+ posArgs.z_lift_heights[4] = .2;
+ posArgs.x_firmware_offsets[0] = 0;
+ posArgs.y_firmware_offsets[0] = 1;
+ posArgs.x_firmware_offsets[1] = 2;
+ posArgs.y_firmware_offsets[1] = 3;
+ posArgs.x_firmware_offsets[2] = 4;
+ posArgs.y_firmware_offsets[2] = 5;
+ posArgs.x_firmware_offsets[3] = 6;
+ posArgs.y_firmware_offsets[3] = 7;
+ posArgs.x_firmware_offsets[4] = 8;
+ posArgs.y_firmware_offsets[4] = 9;
+ posArgs.default_extruder = 0;
+ posArgs.priming_height = 0.4;
+ posArgs.minimum_layer_height = 0.05;
+ posArgs.g90_influences_extruder = false;
+ posArgs.xyz_axis_default_mode = "absolute";
+ posArgs.e_axis_default_mode = "absolute";
+ posArgs.units_default = "millimeters";
+ posArgs.location_detection_commands = std::vector<std::string>();
+ posArgs.is_bound_ = true;
+ posArgs.is_circular_bed = false;
+ posArgs.snapshot_x_min = 0;
+ posArgs.snapshot_x_max = 250;
+ posArgs.snapshot_y_min = 0;
+ posArgs.snapshot_y_max = 210;
+ posArgs.snapshot_z_min = 0;
+ posArgs.snapshot_z_max = 200;
+ posArgs.x_min = 0;
+ posArgs.x_max = 250;
+ posArgs.y_min = -3;
+ posArgs.y_max = 210;
+ posArgs.z_min = 0;
+ posArgs.z_max = 200;
+ return posArgs;
+}
+
+static gcode_position_args get_5_extruder_position_args()
+{
+ gcode_position_args posArgs = gcode_position_args();
+ posArgs.autodetect_position = true;
+ posArgs.home_x = 0;
+ posArgs.home_x_none = true;
+ posArgs.home_y = 0;
+ posArgs.home_y_none = true;
+ posArgs.home_z = 0;
+ posArgs.home_z_none = true;
+ posArgs.shared_extruder = false;
+ posArgs.zero_based_extruder = true;
+ posArgs.set_num_extruders(5);
+ posArgs.retraction_lengths[0] = .2;
+ posArgs.retraction_lengths[1] = .4;
+ posArgs.retraction_lengths[2] = .6;
+ posArgs.retraction_lengths[3] = .8;
+ posArgs.retraction_lengths[4] = 1;
+ posArgs.z_lift_heights[0] = 1;
+ posArgs.z_lift_heights[1] = .8;
+ posArgs.z_lift_heights[2] = .6;
+ posArgs.z_lift_heights[3] = .4;
+ posArgs.z_lift_heights[4] = .2;
+ posArgs.x_firmware_offsets[0] = 0;
+ posArgs.y_firmware_offsets[0] = 0;
+ posArgs.x_firmware_offsets[1] = 5;
+ posArgs.y_firmware_offsets[1] = 0;
+ posArgs.x_firmware_offsets[2] = 0;
+ posArgs.y_firmware_offsets[2] = 0;
+ posArgs.x_firmware_offsets[3] = 0;
+ posArgs.y_firmware_offsets[3] = 0;
+ posArgs.x_firmware_offsets[4] = 0;
+ posArgs.y_firmware_offsets[4] = 0;
+ posArgs.default_extruder = 0;
+ posArgs.priming_height = 0.4;
+ posArgs.minimum_layer_height = 0.05;
+ posArgs.g90_influences_extruder = false;
+ posArgs.xyz_axis_default_mode = "absolute";
+ posArgs.e_axis_default_mode = "absolute";
+ posArgs.units_default = "millimeters";
+ posArgs.location_detection_commands = std::vector<std::string>();
+ posArgs.is_bound_ = true;
+ posArgs.is_circular_bed = false;
+ posArgs.snapshot_x_min = 0;
+ posArgs.snapshot_x_max = 250;
+ posArgs.snapshot_y_min = 0;
+ posArgs.snapshot_y_max = 210;
+ posArgs.snapshot_z_min = 0;
+ posArgs.snapshot_z_max = 200;
+ posArgs.x_min = 0;
+ posArgs.x_max = 250;
+ posArgs.y_min = -3;
+ posArgs.y_max = 210;
+ posArgs.z_min = 0;
+ posArgs.z_max = 200;
+ return posArgs;
+}
+
+static void TestAntiStutter(std::string filePath)
+{
+ double max_resolution = 0.05;
+ std::vector<std::string> logger_names;
+ logger_names.push_back("arc_welder.gcode_conversion");
+ std::vector<int> logger_levels;
+ //logger_levels.push_back(log_levels::DEBUG);
+ logger_levels.push_back(log_levels::INFO);
+ logger* p_logger = new logger(logger_names, logger_levels);
+ p_logger->set_log_level(INFO);
+ //arc_welder arc_welder_obj(BENCHY_0_5_MM_NO_WIPE, "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\test_output.gcode", p_logger, max_resolution, false, 50, static_cast<progress_callback>(on_progress));
+ arc_welder arc_welder_obj(ISSUE_PRICKLYPEAR, "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\test_output.gcode", p_logger, max_resolution, false, 50);
+ //BENCHY_LAYER_1GCODE
+ //SMALL_TEST
+ //FACE_SHIELD
+ //BENCHY_LAYER_1_NO_WIPE
+ //BENCHY_0_5_MM_NO_WIPE
+ //BENCHY_CURA_RELATIVE_E_NOWIPE
+ //BENCHY_CURA_ABSOLUTE_E_NOWIPE
+ //BENCHY_GYROID_RELATIVE_E_NOWIPE
+ //BENCHY_STACK_RELATIVE
+ //BENCHY_STACK_ABSOLUTE
+ //FRACTAL
+ //SUPER_HUGE_TEST
+ //TORTURE_TEST
+ //ORCHID_POD
+ //DIFFICULT_CURVES
+ //ISSUE_PRICKLYPEAR_LAYER_0_114
+ arc_welder_obj.process();
+ p_logger->log(0, INFO, "Processing Complete.");
+ delete p_logger;
+}
+
+static bool on_progress(double percentComplete, double secondsElapsed, double estimatedSecondsRemaining, int gcodes_processed, int currentLine, int points_compressed, int arcs_created)
+{
+ std::cout << percentComplete << "% complete in " << secondsElapsed << " seconds with " << estimatedSecondsRemaining << " seconds remaining. Current Line: " << currentLine << ", Points Compressed:" << points_compressed << ", ArcsCreated:" << arcs_created << "\r\n";
+ return true;
+}
diff --git a/ArcWelderTest/ArcWelderTest.h b/ArcWelderTest/ArcWelderTest.h
new file mode 100644
index 0000000..4cda18a
--- /dev/null
+++ b/ArcWelderTest/ArcWelderTest.h
@@ -0,0 +1,72 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Arc Welder: Test Application
+//
+// This application is only used for ad-hoc testing of the anti-stutter library.
+//
+// Built using the 'Arc Welder: Anti Stutter' library
+//
+// Copyright(C) 2020 - Brad Hochgesang
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// This program is free software : you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published
+// by the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
+// GNU Affero General Public License for more details.
+//
+//
+// You can contact the author at the following email address:
+// FormerLurker@pm.me
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+#pragma once
+#include <stdlib.h>
+#include <crtdbg.h>
+#include <assert.h>
+#include <iostream>
+#include <fstream>
+#include <iomanip>
+#include <string>
+#include <vector>
+#include <chrono>
+#include "gcode_position.h"
+#include "gcode_parser.h"
+#include <sstream>
+#include "arc_welder.h"
+#include "array_list.h"
+#include "logger.h"
+#include <exception>
+
+int run_tests(int argc, char* argv[]);
+static gcode_position_args get_single_extruder_position_args();
+static gcode_position_args get_5_shared_extruder_position_args();
+static gcode_position_args get_5_extruder_position_args();
+static void TestAntiStutter(std::string filePath);
+static bool on_progress(double percentComplete, double secondsElapsed, double estimatedSecondsRemaining, int gcodes_processed, int currentLine, int points_compressed, int arcs_created);
+
+
+static std::string ANTI_STUTTER_TEST = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\5x5_cylinder_2000Fn_0.2mm_PLA_MK2.5MMU2_4m.gcode";
+static std::string BENCHY_GCODE = "C:\\Users\\Brad\\Documents\\3DPrinter\\Calibration\\Benchy\\3DBenchy_0.2mm_PLA_MK2.5MMU2.gcode";
+static std::string BENCHY_CURA_RELATIVE_E_NOWIPE = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\3DBenchy_CuraRelative_Gyroid_0.2mm.gcode";
+static std::string BENCHY_GYROID_RELATIVE_E_NOWIPE = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\3DBenchy_0.2mm_gyroid_relative_e_NoWipe.gcode";
+static std::string BENCHY_GYROID_ABSOLUTE_E_NOWIPE = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\3DBenchy_Absolute_Gyroid_0.2mm.gcode";
+static std::string BENCHY_0_5_MM_NO_WIPE = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\Benchy_0.5mm_NoWipe.gcode";
+static std::string BENCHY_LAYER_1GCODE = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\benchy_l1.gcode";
+static std::string BENCHY_LAYER_1_NO_WIPE = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\benchy_L1_NoWipe.gcode";
+static std::string BENCHY_STACK_RELATIVE = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\BenchyStack_Relative.gcode";
+static std::string BENCHY_STACK_ABSOLUTE = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\BenchyStack_Absolute.gcode";
+static std::string CAM_RING_TEST = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\5milCamRing_0.2mm_PLA_MK2.5MMU2_16m.gcode";
+static std::string FRACTAL = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\Mandelbrot.gcode";
+static std::string DIFFICULT_CURVES = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\DifficultCurves.gcode";
+static std::string FACE_SHIELD = "C:\\Users\\Brad\\Documents\\3DPrinter\\corona_virus\\2X_Visor_Frame_0.35mm_PLA_1h25m.gcode";
+static std::string SMALL_TEST = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\small_test.gcode";
+static std::string SUPER_HUGE_TEST = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\super_huge_file.gcode";
+static std::string TORTURE_TEST = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\stereographic_projection_0.2mm_PLA_MK2.5MMU2_2h49m.gcode";
+static std::string ORCHID_POD = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\Pla_OrchidPot.gcode";
+static std::string ARC_GYROID_BENCHY_DIFFICULT = "C:\\Users\\Brad\\Documents\\3DPrinter\\AntiStutter\\AS_BenchyArc_Difficult.gcode";
+// Issues
+static std::string ISSUE_MIMUPREFERIDA = "C:\\Users\\Brad\\Documents\\AntiStutter\\Issues\\MIMUPREFERIDA\\TESTSTUTTER.gcode";
+static std::string ISSUE_PRICKLYPEAR = "C:\\Users\\Brad\\Documents\\AntiStutter\\Issues\\PricklyPear\\Barbarian.gcode";
+static std::string ISSUE_PRICKLYPEAR_LAYER_0_114 = "C:\\Users\\Brad\\Documents\\AntiStutter\\Issues\\PricklyPear\\Layers0_114.gcode";
diff --git a/ArcWelderTest/ArcWelderTest.vcxproj b/ArcWelderTest/ArcWelderTest.vcxproj
new file mode 100644
index 0000000..553380a
--- /dev/null
+++ b/ArcWelderTest/ArcWelderTest.vcxproj
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <VCProjectVersion>16.0</VCProjectVersion>
+ <ProjectGuid>{18D7E538-6ACE-44E4-B83E-31C3E44D4227}</ProjectGuid>
+ <RootNamespace>ArcWelderTest</RootNamespace>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v142</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v142</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="Shared">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ <IncludePath>$(SolutionDir)\GcodeProcessorLib\;$(SolutionDir)\ArcWelder\;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <IncludePath>$(SolutionDir)\GcodeProcessorLib\;$(SolutionDir)\ArcWelder\;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <IncludePath>$(SolutionDir)\GcodeProcessorLib\;$(SolutionDir)\ArcWelder\;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <IncludePath>$(SolutionDir)\GcodeProcessorLib\;$(SolutionDir)\ArcWelder\;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="ArcWelderTest.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="ArcWelderTest.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\ArcWelder\ArcWelder.vcxproj">
+ <Project>{1a4dbab1-bb42-4db1-b168-f113784efcef}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\GcodeProcessorLib\GcodeProcessorLib.vcxproj">
+ <Project>{31478bae-104b-4cc3-9876-42fa90cbd5fe}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/ArcWelderTest/ArcWelderTest.vcxproj.filters b/ArcWelderTest/ArcWelderTest.vcxproj.filters
new file mode 100644
index 0000000..9ecb598
--- /dev/null
+++ b/ArcWelderTest/ArcWelderTest.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="ArcWelderTest.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="ArcWelderTest.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file