Skip to content

Commit d527a3a

Browse files
Fixed Toolpath Layer Data check
1 parent c902ae6 commit d527a3a

File tree

5 files changed

+39
-1
lines changed

5 files changed

+39
-1
lines changed

ACT/LibMC.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -705,6 +705,12 @@
705705
<error name="INVALIDROWRANGE" code="680" description="Invalid row range." />
706706
<error name="CONFIGURATIONLISTNAMEMISSING" code="681" description="Configuration list name missing" />
707707
<error name="CONFIGURATIONLISTBUTTONNAMEMISSING" code="682" description="Configuration list button name missing" />
708+
<error name="NONLINEAROVERRIDEPARAMETERNOTINCREASING" code="683" description="Nonlinear override parameter not increasing" />
709+
<error name="NONLINEAROVERRIDEPARAMETEROUTOFRANGE" code="684" description="Nonlinear override parameter out of range" />
710+
<error name="NONLINEAROVERRIDEFACTOROUTOFRANGE" code="685" description="Nonlinear override factor out of range" />
711+
712+
713+
708714

709715
</errors>
710716

Framework/HeadersCore/CppDynamic/libmc_dynamic.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -774,6 +774,9 @@ class ELibMCException : public std::exception {
774774
case LIBMC_ERROR_INVALIDROWRANGE: return "INVALIDROWRANGE";
775775
case LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING: return "CONFIGURATIONLISTNAMEMISSING";
776776
case LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING: return "CONFIGURATIONLISTBUTTONNAMEMISSING";
777+
case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING: return "NONLINEAROVERRIDEPARAMETERNOTINCREASING";
778+
case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE: return "NONLINEAROVERRIDEPARAMETEROUTOFRANGE";
779+
case LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE: return "NONLINEAROVERRIDEFACTOROUTOFRANGE";
777780
}
778781
return "UNKNOWN";
779782
}
@@ -1382,6 +1385,9 @@ class ELibMCException : public std::exception {
13821385
case LIBMC_ERROR_INVALIDROWRANGE: return "Invalid row range.";
13831386
case LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING: return "Configuration list name missing";
13841387
case LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING: return "Configuration list button name missing";
1388+
case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING: return "Nonlinear override parameter not increasing";
1389+
case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE: return "Nonlinear override parameter out of range";
1390+
case LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE: return "Nonlinear override factor out of range";
13851391
}
13861392
return "unknown error";
13871393
}

Framework/HeadersCore/CppDynamic/libmc_types.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,9 @@ typedef void * LibMC_pvoid;
696696
#define LIBMC_ERROR_INVALIDROWRANGE 680 /** Invalid row range. */
697697
#define LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING 681 /** Configuration list name missing */
698698
#define LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING 682 /** Configuration list button name missing */
699+
#define LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING 683 /** Nonlinear override parameter not increasing */
700+
#define LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE 684 /** Nonlinear override parameter out of range */
701+
#define LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE 685 /** Nonlinear override factor out of range */
699702

700703
/*************************************************************************************************************************
701704
Error strings for LibMC
@@ -1304,6 +1307,9 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) {
13041307
case LIBMC_ERROR_INVALIDROWRANGE: return "Invalid row range.";
13051308
case LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING: return "Configuration list name missing";
13061309
case LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING: return "Configuration list button name missing";
1310+
case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING: return "Nonlinear override parameter not increasing";
1311+
case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE: return "Nonlinear override parameter out of range";
1312+
case LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE: return "Nonlinear override factor out of range";
13071313
default: return "unknown error";
13081314
}
13091315
}

Framework/InterfacesCore/libmc_types.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,9 @@ typedef void * LibMC_pvoid;
696696
#define LIBMC_ERROR_INVALIDROWRANGE 680 /** Invalid row range. */
697697
#define LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING 681 /** Configuration list name missing */
698698
#define LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING 682 /** Configuration list button name missing */
699+
#define LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING 683 /** Nonlinear override parameter not increasing */
700+
#define LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE 684 /** Nonlinear override parameter out of range */
701+
#define LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE 685 /** Nonlinear override factor out of range */
699702

700703
/*************************************************************************************************************************
701704
Error strings for LibMC
@@ -1304,6 +1307,9 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) {
13041307
case LIBMC_ERROR_INVALIDROWRANGE: return "Invalid row range.";
13051308
case LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING: return "Configuration list name missing";
13061309
case LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING: return "Configuration list button name missing";
1310+
case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING: return "Nonlinear override parameter not increasing";
1311+
case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE: return "Nonlinear override parameter out of range";
1312+
case LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE: return "Nonlinear override factor out of range";
13071313
default: return "unknown error";
13081314
}
13091315
}

Implementation/Core/amc_toolpathlayerdata.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,8 +464,22 @@ namespace AMC {
464464

465465
size_t nInterpolationDataStartIndex = m_InterpolationData.size();
466466
if (nonLinearValues.size() > 0) {
467-
for (auto & interpolationData : nonLinearValues)
467+
double dPreviousParameter = 0.0;
468+
double dMinParameterIncrease = 1e-5;
469+
double dMaxParameter = 1.0 - dMinParameterIncrease;
470+
471+
for (auto& interpolationData : nonLinearValues) {
472+
if (interpolationData.m_Parameter < dPreviousParameter + dMinParameterIncrease)
473+
throw ELibMCCustomException(LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING, std::to_string (interpolationData.m_Parameter) + " in " + m_sDebugName);
474+
475+
if (interpolationData.m_Parameter > dMaxParameter)
476+
throw ELibMCCustomException(LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE, std::to_string(interpolationData.m_Parameter) + " in " + m_sDebugName);
477+
478+
if (interpolationData.m_Factor < 0.0 || interpolationData.m_Factor > 1.0)
479+
throw ELibMCCustomException(LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE, std::to_string(interpolationData.m_Factor) + " in " + m_sDebugName);
480+
468481
m_InterpolationData.push_back(interpolationData);
482+
}
469483
}
470484

471485
if (hatchFactors.size() > 0) {

0 commit comments

Comments
 (0)