Fix offsetWire() bug - first edge vector should depends on geometry (line or arc)

This commit is contained in:
paullee0
2019-03-18 01:41:57 +08:00
committed by Yorik van Havre
parent 144ce0dbaf
commit e3e95e3ea5

10
src/Mod/Draft/DraftGeomUtils.py Executable file → Normal file
View File

@@ -1186,6 +1186,14 @@ def offsetWire(wire,dvec,bind=False,occ=False):
return None
else:
return off
# vec of first edge depends on its geometry
e = edges[0]
if isinstance(e.Curve,Part.Circle):
firstVec = e.tangentAt(e.FirstParameter)
else:
firstVec = vec(e)
for i in range(len(edges)):
curredge = edges[i]
delta = dvec
@@ -1194,7 +1202,7 @@ def offsetWire(wire,dvec,bind=False,occ=False):
v = curredge.tangentAt(curredge.FirstParameter)
else:
v = vec(curredge)
angle = DraftVecUtils.angle(vec(edges[0]),v,norm)
angle = DraftVecUtils.angle(firstVec,v,norm) # use vec deduced depending on geometry instead of - angle = DraftVecUtils.angle(vec(edges[0]),v,norm)
delta = DraftVecUtils.rotate(delta,angle,norm)
#print("edge ",i,": ",curredge.Curve," ",curredge.Orientation," parameters:",curredge.ParameterRange," vector:",delta)
nedge = offset(curredge,delta,trim=True)