Path.Area: add PocketLastStepover/LastStepover parameter

This commit is contained in:
Zheng, Lei
2018-08-06 09:25:08 +08:00
committed by wmayer
parent 3414c042b6
commit 1cbd5cc994
2 changed files with 30 additions and 2 deletions

View File

@@ -1899,6 +1899,16 @@ void Area::makeOffset(list<shared_ptr<CArea> > &areas,
PARAM_ENUM_CONVERT(AREA_MY,PARAM_FNAME,PARAM_ENUM_EXCEPT,AREA_PARAMS_CLIPPER_FILL);
#endif
if(offset<0) {
stepover = -fabs(stepover);
if(count<0) {
if(!last_stepover)
last_stepover = offset*0.5;
else
last_stepover = -fabs(last_stepover);
}else
last_stepover = 0;
}
for(int i=0;count<0||i<count;++i,offset+=stepover) {
if(from_center)
areas.push_front(make_shared<CArea>());
@@ -1940,8 +1950,19 @@ void Area::makeOffset(list<shared_ptr<CArea> > &areas,
#endif
if(count>1)
FC_TIME_LOG(t1,"makeOffset " << i << '/' << count);
if(area.m_curves.empty())
if(area.m_curves.empty()) {
if(from_center)
areas.pop_front();
else
areas.pop_back();
if(last_stepover && last_stepover>stepover) {
offset -= stepover;
stepover = last_stepover;
--i;
continue;
}
return;
}
}
FC_TIME_LOG(t,"makeOffset count: " << count);
}
@@ -2004,6 +2025,7 @@ TopoDS_Shape Area::makePocket(int index, PARAM_ARGS(PARAM_FARG,AREA_PARAMS_POCKE
Offset = -tool_radius-extra_offset-shift;
ExtraPass = -1;
Stepover = -stepover;
LastStepover = -last_stepover;
// make offset and make sure the loop is CW (i.e. inner wires)
return makeOffset(index,PARAM_FIELDS(PARAM_FNAME,AREA_PARAMS_OFFSET),-1,from_center);
}case Area::PocketModeZigZagOffset:

View File

@@ -105,6 +105,9 @@
((double,extra_offset,PocketExtraOffset,0.0,"Extra offset for pocketing",App::PropertyDistance))\
((double,stepover,PocketStepover,0.0,\
"Cutter diameter to step over on each pass. If =0, use ToolRadius.",App::PropertyLength))\
((double,last_stepover,PocketLastStepover,0.0,\
"Cutter diameter to step over for the last loop when using offset pocket.\n"\
"If =0, use 0.5*ToolRadius.", App::PropertyLength))\
((bool,from_center,FromCenter,false,"Start pocketing from center"))\
((double,angle,Angle,45,"Pattern angle in degree",App::PropertyAngle))\
((double,angle_shift,AngleShift,0.0,"Pattern angle shift for each section", App::PropertyAngle))\
@@ -129,7 +132,10 @@
"Offset value, positive for expansion, negative for shrinking",App::PropertyDistance))\
((long,extra_pass,ExtraPass,0,"Number of extra offset pass to generate."))\
((double,stepover,Stepover,0.0,\
"Cutter diameter to step over on each pass. If =0, use Offset",App::PropertyLength))
"Cutter diameter to step over on each pass. If =0, use Offset",App::PropertyLength))\
((double,last_stepover,LastStepover,0.0,\
"Cutter diameter to step over for the last loop when shrinking with ExtraPass<0, i.e. for\n"\
"offset pocketing. If =0, use 0.5*Offset.", App::PropertyLength))
#define AREA_PARAMS_SECTION_EXTRA \
((enum,mode,SectionMode,2,"Section offset coordinate mode.\n"\