Matty-Downing2169 / opencamlib

Automatically exported from code.google.com/p/opencamlib
GNU General Public License v3.0
0 stars 0 forks source link

refinePointList is not being done #23

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
I notice refinePointList has been commented out from PathDropCutterFinish::run

Anders's comment is:
    // this requires a better implementation which keeps the cc-points intact also

I need the points refined, or the toolpath has lots of small straight lines.

Original issue reported on code.google.com by danhe...@gmail.com on 3 Jul 2010 at 9:56

GoogleCodeExporter commented 9 years ago
rather than having one list of CL points and a separate list of CC points, I 
think these two concepts should be merged.
create a new class CLPoint which represents a valid cutter location. Each valid 
CL point makes contact with the model somewhere, so it is natural that a 
CLPoint "has a" CCPoint as a member.
We then get only one list for later processing/output.

The refinePointList function can then be rewritten as a more generic 
CLPoint-list filter (CLPoints in, CLPoints out), which also takes a tolerance 
parameter, and loops through all points in the list looking at three 
consecutive points on each loop iteration and removing the middle one if it 
lies within tolerance from a straight line between the first and last point.
The same kind of filter, but with another algorithm, could be made to detect 
arcs, for later output as G2/G3 codes in post-processing.

keeping paths, sampling, drop-cutter, and filters as separate small pieces and 
not bunching them into monolithic big black-magic-boxes is important. 

Original comment by anders.e...@gmail.com on 3 Jul 2010 at 9:46

GoogleCodeExporter commented 9 years ago
there is now an initial try at this in r285 and later

if you have a list of CLPoints generated in some way or another you push them 
to the filter, then run the filter, and then ask for the filtered points, like 
so:
f = ocl.LineCLFilter()
f.setTolerance(0.01)
for p in clpoints:
    f.addCLPoint(p)
f.run()
clpoints_filtered = f.getCLPoints()

it might be good to have a constructor or method take a whole list of points 
also to avoid the loop in python.
it should not be too hard to write an ArcCLFilter which will detect G2/3 moves 
in one of the three coordinate-planes.

Original comment by anders.e...@gmail.com on 5 Jul 2010 at 6:08

GoogleCodeExporter commented 9 years ago
closing issue.

Original comment by anders.e...@gmail.com on 4 Aug 2010 at 9:37