From 286d94060d92b78400a1d95b28ca20ceefeaabae Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 25 Oct 2013 17:41:48 -0200 Subject: [PATCH] Draft: applying workaround for pivy SoInput.setBuffer bug to draft splines --- src/Mod/Draft/DraftTrackers.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Mod/Draft/DraftTrackers.py b/src/Mod/Draft/DraftTrackers.py index 47abce88a2a3..27d34ac91d1a 100644 --- a/src/Mod/Draft/DraftTrackers.py +++ b/src/Mod/Draft/DraftTrackers.py @@ -320,7 +320,23 @@ def recompute(self): ivin.setBuffer(buf) ivob = coin.SoDB.readAll(ivin) except: - print "Error retrieving coin node" + # workaround for pivy SoInput.setBuffer() bug + import re + buf = buf.replace("\n","") + pts = re.findall("point \[(.*?)\]",buf)[0] + pts = pts.split(",") + pc = [] + for p in pts: + v = p.strip().split() + pc.append([float(v[0]),float(v[1]),float(v[2])]) + coords = coin.SoCoordinate3() + coords.point.setValues(0,len(pc),pc) + line = coin.SoLineSet() + line.numVertices.setValue(-1) + self.bspline = coin.SoSeparator() + self.bspline.addChild(coords) + self.bspline.addChild(line) + self.sep.addChild(self.bspline) else: if ivob and ivob.getNumChildren() > 1: self.bspline = ivob.getChild(1).getChild(0)