While checking this issue I find that some work, perhaps related to this topic, has been done on ArchWall.py. But also that a new bug has been introduced:
A multi-material cannot be applied to a multi-segment wall if the alignment is left or right. The cause is rather obvious: the DraftGeomUtils.offsetWire function requires a widthList with the same length as the wire list, and the supplied widthList only contains a single item.
Maybe DraftGeomUtils.offsetWire was modified and this issue was never tested?
https://github.com/FreeCAD/FreeCAD/blob ... 1342-L1366
The code is a bit convoluted and hard to follow. Proposed fix:
Old (line 1344 and 1388):
Code: Select all
if layers:
curWidth = [abs(layers[i])]
New (works for wire and sketch based walls):
Code: Select all
if layers:
curWidth = []
for n in range(edgeNum):
curWidth.append(abs(layers[i]))
EDIT: the fix that was proposed before didn't work properly. Have added a new fix. It is confusing that the wire variable can be a list or a Part.Wire.