Cutters¶
-
class AdaptivePathDropCutter : public ocl::Operation
path drop cutter finish Path generation
Public Functions
-
AdaptivePathDropCutter()
construct an empty PathDropCutter object
-
virtual void run()
run drop-cutter on the whole Path
-
inline void setMinSampling(double s)
set the minimum sapling interval
-
inline void setCosLimit(double lim)
set the cosine limit for the flat() predicate
-
AdaptivePathDropCutter()
-
class BallCutter : public ocl::MillingCutter¶
Ball or Spherical MillingCutter (ball-nose endmill)
Public Functions
-
explicit BallCutter(double d, double l)¶
create a BallCutter with diameter d (radius d/2) and length l
-
inline virtual MillingCutter *offsetCutter(double d) const¶
offset of Ball is Ball
-
virtual std::string str() const¶
return a string representation of the MillingCutter
Friends
-
friend std::ostream &operator<<(std::ostream &stream, BallCutter c)¶
string repr
-
explicit BallCutter(double d, double l)¶
-
class BatchDropCutter : public ocl::Operation¶
BatchDropCutter takes a MillingCutter, an STLSurf, and a list of CLPoint’s and calls MillingCutter::dropCutter() for each CLPoint. To find triangles overlapping the cutter a kd-tree data structure is used. The list of CLPoint’s will be updated with the correct z-height as well as corresponding CCPoint’s Some versions of this algorithm use OpenMP for multi-threading.
Public Functions
-
virtual void setSTL(const STLSurf &s)¶
set the STL-surface and build kd-tree to enable optimized algorithm
-
inline virtual void run()¶
run drop-cutter on all clpoints
-
inline virtual std::vector<CLPoint> getCLPoints()¶
return a vector of CLPoints, the result of this operation
-
inline virtual void clearCLPoints()¶
clears the vector of CLPoints
-
virtual void setSTL(const STLSurf &s)¶
-
class BatchPushCutter : public ocl::Operation¶
BatchPushCutter takes a MillingCutter, an STLSurf, and many Fibers and pushes the cutter along the fibers into contact with the surface. When this runs the Fibers will be updated with the correct interval data. This is then used to build a weave and extract a waterline.
-
class BallConeCutter : public ocl::CompositeCutter¶
CompositeCutter with a spherical central part of diameter diam1 and a conical outer part sloping at angle, with a max diameter diam2 the cone is positioned so that the tangent of the cone matches the tangent of the sphere.
Public Functions
-
BallConeCutter(double diam1, double diam2, double angle)¶
create ballconecutter
-
BallConeCutter(double diam1, double diam2, double angle)¶
-
class BullConeCutter : public ocl::CompositeCutter¶
CompositeCutter with a toroidal central part of diameter diam1 and corner radius radius1 The outer part is conical sloping at angle, with a max diameter diam2 the cone is positioned so that the tangent of the cone matches the tangent of the torus.
Public Functions
-
BullConeCutter(double diam1, double radius1, double diam2, double angle)¶
create bullconecutter
-
BullConeCutter(double diam1, double radius1, double diam2, double angle)¶
-
class BullCutter : public ocl::MillingCutter¶
Bull-nose or Toroidal MillingCutter (filleted endmill)
defined by the cutter diameter and by the corner radius
Public Functions
-
BullCutter(double diameter, double radius, double length)¶
Create bull-cutter with diamter d, corner radius r, and length l.
-
virtual MillingCutter *offsetCutter(double offset) const¶
offset of Bull is Bull
-
virtual std::string str() const¶
return a string representation of the MillingCutter
Friends
-
friend std::ostream &operator<<(std::ostream &stream, BullCutter c)¶
string repr
-
BullCutter(double diameter, double radius, double length)¶
-
class CompBallCutter : public ocl::CompositeCutter¶
for testing, a single ballcutter
-
class CompCylCutter : public ocl::CompositeCutter¶
a composite cutter for testing, consisting only of a cylindrical cutter
-
class CompositeCutter : public ocl::MillingCutter¶
a CompositeCutter is composed one or more MillingCutters the cutters are stored in a vector cutter and their axial offsets from eachother in zoffset. The different cutters apply in different radial regions. cutter[0] from r=0 to r=radius[0] after that cutter[1] from r=radius[0] to r=radius[1] and so on.
Subclassed by ocl::BallConeCutter, ocl::BullConeCutter, ocl::CompBallCutter, ocl::CompCylCutter, ocl::ConeConeCutter, ocl::CylConeCutter
Public Functions
-
CompositeCutter()¶
create an empty CompositeCutter
-
void addCutter(MillingCutter &c, double radius, double height, double zoff)¶
add a MillingCutter to this CompositeCutter the cutter is valid from the previous radius out to the given radius and its axial offset is given by zoffset
-
virtual MillingCutter *offsetCutter(double d) const¶
return a MillingCutter which is larger than *this by d
-
virtual bool facetDrop(CLPoint &cl, const Triangle &t) const¶
CompositeCutter can not use the base-class facetDrop, instead we here call facetDrop() on each cutter in turn, and pick the valid CC/CL point as the result for the CompositeCutter
-
virtual bool edgeDrop(CLPoint &cl, const Triangle &t) const¶
call edgeDrop on each cutter and pick the correct (highest valid CL-point) result
-
virtual std::string str() const¶
return a string representation of the MillingCutter
-
CompositeCutter()¶
-
class ConeConeCutter : public ocl::CompositeCutter¶
CompositeCutter with a conical central part with diam1/angle1 and a conical outer part with diam2/angle2 we assume angle2 < angle1 and diam2 > diam1.
Public Functions
-
ConeConeCutter(double diam1, double angle1, double diam2, double angle2)¶
create cone-cone cutter with lower cone (diam1,angle1) and upper cone (diam2,angle2) we assume angle2 < angle1 and diam2 > diam1.
-
ConeConeCutter(double diam1, double angle1, double diam2, double angle2)¶
-
class ConeCutter : public ocl::MillingCutter¶
Conical MillingCutter.
cone defined by diameter and the cone half-angle(in radians). sharp tip. 60 degrees or 90 degrees are common
Public Functions
-
ConeCutter(double d, double angle, double l = 10)¶
create a ConeCutter with specified maximum diameter and cone-angle for a 90-degree cone specify the half-angle angle= pi/4
-
virtual MillingCutter *offsetCutter(double d) const¶
offset of ConeCutter is BallConeCutter (should be Ball-Cone-Bull??)
-
virtual bool facetDrop(CLPoint &cl, const Triangle &t) const¶
Cone facet-drop is special, since we can make contact with either the tip or the circular rim.
-
virtual std::string str() const¶
return a string representation of the MillingCutter
Friends
-
friend std::ostream &operator<<(std::ostream &stream, ConeCutter c)¶
string repr
-
ConeCutter(double d, double angle, double l = 10)¶
-
class CylConeCutter : public ocl::CompositeCutter¶
CompositeCutter with a cylindrical/flat central part of diameter diam1 and a conical outer part sloping at angle, with a max diameter diam2.
Public Functions
-
CylConeCutter(double diam1, double diam2, double angle)¶
create cylconecutter
-
CylConeCutter(double diam1, double diam2, double angle)¶
-
class CylCutter : public ocl::MillingCutter¶
Cylindrical MillingCutter (flat-endmill)
defined by one parameter, the cutter diameter
Public Functions
-
inline virtual MillingCutter *offsetCutter(double d) const¶
offset of Cylinder is BullCutter
-
virtual std::string str() const¶
return a string representation of the MillingCutter
-
inline virtual MillingCutter *offsetCutter(double d) const¶
-
class MillingCutter¶
MillingCutter is a base-class for all milling cutters.
Subclassed by ocl::BallCutter, ocl::BullCutter, ocl::CompositeCutter, ocl::ConeCutter, ocl::CylCutter
Public Functions
-
inline MillingCutter()¶
default constructor
-
inline double getDiameter() const¶
return the diameter of the cutter
-
inline double getRadius() const¶
return the radius of the cutter
-
inline double getLength() const¶
return the length of the cutter
-
virtual MillingCutter *offsetCutter(double d) const¶
return a MillingCutter which is larger than *this by d
-
bool overlaps(Point &cl, const Triangle &t) const¶
Test if the cutter bounding-box, positioned at cl, overlaps with the bounding-box of Triangle t. works in the xy-plane
-
bool vertexDrop(CLPoint &cl, const Triangle &t) const¶
drop cutter at (cl.x, cl.y) against the three vertices of Triangle t. calls this->height(r) on the subclass of MillingCutter we are using. if cl.z is too low, updates cl.z so that cutter does not cut any vertex.
-
virtual bool facetDrop(CLPoint &cl, const Triangle &t) const¶
drop cutter at (cl.x, cl.y) against facet of Triangle t calls xy_normal_length(), normal_length(), and center_height() on the subclass. if cl.z is too low, updates cl.z so that cutter does not cut the facet. CompositeCutter may be the only sub-class that needs to reimplement this function.
-
virtual bool edgeDrop(CLPoint &cl, const Triangle &t) const¶
drop cutter at (cl.x, cl.y) against the three edges of input Triangle t. calls the sub-class MillingCutter::singleEdgeDrop on each edge if cl.z is too low, updates cl.z so that cutter does not cut any edge.
-
bool dropCutter(CLPoint &cl, const Triangle &t) const¶
drop the MillingCutter at Point cl down along the z-axis until it makes contact with Triangle t. This function calls vertexDrop, facetDrop, and edgeDrop to do its job. Follows the template-method, or “self-delegation” design pattern. if cl.z is too low, updates cl.z so that the cutter does not cut Triangle t.
-
bool dropCutterSTL(CLPoint &cl, const STLSurf &s) const¶
call dropCutter on all Triangles in an STLSurf drops the MillingCutter at Point cl down along the z-axis until it makes contact with a triangle in the STLSurf s NOTE: no kd-tree optimization, this function will make dropCutter() calls for each and every Triangle in s. NOTE: should not really be used for real work, demo/debug only
-
bool pushCutter(const Fiber &f, Interval &i, const Triangle &t) const¶
push cutter along Fiber f against Triangle t by calling vertexPush, facetPush, and edgePush Interval i will be updated so that it contains the interval where the cutter would violate/gouge the Triangle. Return true if contact was made with the Triangle
-
inline virtual std::string str() const¶
return a string representation of the MillingCutter
-
inline MillingCutter()¶