Multi-Width to support Sketch with multiple wires
Discussion:- https://forum.freecadweb.org/viewtopic.php?f=23&t=37708&p=321956#p321956
This commit is contained in:
committed by
Yorik van Havre
parent
4d3f24a5b8
commit
a5aa838575
@@ -804,6 +804,8 @@ class _Wall(ArchComponent.Component):
|
||||
|
||||
# TODO currently layers were not supported when len(basewires) > 0
|
||||
width = 0
|
||||
widths = obj.OverrideWidth
|
||||
|
||||
if obj.OverrideWidth:
|
||||
if obj.OverrideWidth[0]:
|
||||
width = obj.OverrideWidth[0]
|
||||
@@ -811,7 +813,7 @@ class _Wall(ArchComponent.Component):
|
||||
if obj.Width:
|
||||
width = obj.Width.Value
|
||||
else:
|
||||
print("Width or Widths Of Wall [0] should not be 0")
|
||||
print("Width or OverrideWidth[0] should not be 0")
|
||||
return
|
||||
|
||||
height = obj.Height.Value
|
||||
@@ -888,9 +890,12 @@ class _Wall(ArchComponent.Component):
|
||||
|
||||
if (len(self.basewires) == 1) and layers:
|
||||
self.basewires = [self.basewires[0] for l in layers]
|
||||
|
||||
layeroffset = 0
|
||||
baseface = None
|
||||
for i,wire in enumerate(self.basewires):
|
||||
|
||||
edgeNum = len(wire.Edges)
|
||||
e = wire.Edges[0]
|
||||
if isinstance(e.Curve,Part.Circle):
|
||||
dvec = e.Vertexes[0].Point.sub(e.Curve.Center)
|
||||
@@ -911,7 +916,7 @@ class _Wall(ArchComponent.Component):
|
||||
dvec2 = DraftVecUtils.scaleTo(dvec,off)
|
||||
wire = DraftGeomUtils.offsetWire(wire,dvec2)
|
||||
|
||||
w2 = DraftGeomUtils.offsetWire(wire,dvec,False, False, obj.OverrideWidth)
|
||||
w2 = DraftGeomUtils.offsetWire(wire,dvec,False, False, widths)
|
||||
|
||||
w1 = Part.Wire(Part.__sortEdges__(wire.Edges))
|
||||
sh = DraftGeomUtils.bind(w1,w2)
|
||||
@@ -928,7 +933,7 @@ class _Wall(ArchComponent.Component):
|
||||
dvec2 = DraftVecUtils.scaleTo(dvec,off)
|
||||
wire = DraftGeomUtils.offsetWire(wire,dvec2)
|
||||
|
||||
w2 = DraftGeomUtils.offsetWire(wire,dvec,False, False, obj.OverrideWidth)
|
||||
w2 = DraftGeomUtils.offsetWire(wire,dvec,False, False, widths)
|
||||
|
||||
w1 = Part.Wire(Part.__sortEdges__(wire.Edges))
|
||||
sh = DraftGeomUtils.bind(w1,w2)
|
||||
@@ -944,12 +949,16 @@ class _Wall(ArchComponent.Component):
|
||||
else:
|
||||
dvec.multiply(width/2) ## TODO width Value should be of no use (width/2), width Direction remains 'in use'
|
||||
|
||||
overrideWidthHalfen = [i/2 for i in obj.OverrideWidth]
|
||||
overrideWidthHalfen = [i/2 for i in widths]
|
||||
|
||||
w1 = DraftGeomUtils.offsetWire(wire,dvec,False, False, overrideWidthHalfen)
|
||||
dvec = dvec.negative()
|
||||
w2 = DraftGeomUtils.offsetWire(wire,dvec,False, False, overrideWidthHalfen)
|
||||
|
||||
sh = DraftGeomUtils.bind(w1,w2)
|
||||
|
||||
del widths[0:edgeNum]
|
||||
|
||||
if sh:
|
||||
sh.fix(0.1,0,1) # fixes self-intersecting wires
|
||||
f = Part.Face(sh)
|
||||
|
||||
Reference in New Issue
Block a user