kopia lustrzana https://github.com/vilemduha/blendercam
update overcut operator
Now things should be more usefull for both use cases, where you are defining whole shape with holes, or just the hole.pull/25/head
rodzic
e5c81c14d3
commit
bddcc57a68
|
|
@ -745,8 +745,8 @@ class CamCurveOvercuts(bpy.types.Operator):
|
|||
|
||||
diameter = bpy.props.FloatProperty(name="diameter", default=.003, min=0, max=100,precision=4, unit="LENGTH")
|
||||
threshold = bpy.props.FloatProperty(name="threshold", default=math.pi/2*.99, min=-3.14, max=3.14,precision=4, subtype="ANGLE" , unit="ROTATION")
|
||||
do_outer = bpy.props.BoolProperty(name="Outer polygons", default=False)
|
||||
|
||||
do_outer = bpy.props.BoolProperty(name="Outer polygons", default=True)
|
||||
invert = bpy.props.BoolProperty(name="Invert", default=False)
|
||||
#@classmethod
|
||||
#def poll(cls, context):
|
||||
# return context.active_object is not None and context.active_object.type=='CURVE' and len(bpy.context.selected_objects)==2
|
||||
|
|
@ -782,11 +782,15 @@ class CamCurveOvercuts(bpy.types.Operator):
|
|||
v2 = v2.xy#v2 = Vector((v2.x,v2.y,0))
|
||||
if not v1.length==0 and not v2.length == 0:
|
||||
a=v1.angle_signed(v2)
|
||||
if ci==0:
|
||||
sign=-1
|
||||
else:
|
||||
sign=1
|
||||
if (ci==0 and a>self.threshold) or (ci>0 and a>self.threshold):
|
||||
sign=1
|
||||
#if ci==0:
|
||||
# sign=-1
|
||||
#else:
|
||||
# sign=1
|
||||
|
||||
if self.invert:# and ci>0:
|
||||
sign*=-1
|
||||
if (sign<0 and a<-self.threshold) or (sign>0 and a>self.threshold):
|
||||
p=Vector((co[0],co[1]))
|
||||
v1.normalize()
|
||||
v2.normalize()
|
||||
|
|
@ -798,11 +802,11 @@ class CamCurveOvercuts(bpy.types.Operator):
|
|||
shape= shapely.affinity.translate(shape,p.x,p.y)
|
||||
else:
|
||||
l=math.tan(a/2)*diameter/2
|
||||
p1=p-v*l
|
||||
p1=p-sign*v*l
|
||||
l=shapely.geometry.LineString((p,p1))
|
||||
shape=l.buffer(diameter/2, resolution = 64)
|
||||
|
||||
if ci>0:
|
||||
if sign>0:
|
||||
negative_overcuts.append(shape)
|
||||
else:
|
||||
positive_overcuts.append(shape)
|
||||
|
|
@ -815,7 +819,7 @@ class CamCurveOvercuts(bpy.types.Operator):
|
|||
positive_overcuts = shapely.ops.unary_union(positive_overcuts)
|
||||
#shapes.extend(overcuts)
|
||||
fs=shapely.ops.unary_union(shapes)
|
||||
fs = fs.difference(positive_overcuts)
|
||||
fs = fs.union(positive_overcuts)
|
||||
fs = fs.difference(negative_overcuts)
|
||||
o=utils.shapelyToCurve(o1.name+'_overcuts',fs,o1.location.z)
|
||||
#o=utils.shapelyToCurve('overcuts',overcuts,0)
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue