Path.Area: add PocketLastStepover/LastStepover parameter
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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"\
|
||||
|
||||
Reference in New Issue
Block a user