From 57bf8d1f57d07044d12a075ca13b43812d5ea16c Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Thu, 9 May 2019 10:48:04 -0300 Subject: [PATCH] Draft: Fixed py3 issues in Draft Label - fixes #3941 --- src/Mod/Draft/Draft.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 620d2f3d6f..0f1c0cf1c5 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -6610,7 +6610,7 @@ class DraftLabel: if obj.LabelType == "Custom": if obj.CustomText: obj.Text = obj.CustomText - elif obj.Target: + elif obj.Target and obj.Target[0]: if obj.LabelType == "Name": obj.Text = [obj.Target[0].Name] elif obj.LabelType == "Label": @@ -6632,13 +6632,13 @@ class DraftLabel: if obj.Target[0].isDerivedFrom("Part::Feature"): if hasattr(obj.Target[0].Shape,"Length"): obj.Text = [FreeCAD.Units.Quantity(obj.Target[0].Shape.Length,FreeCAD.Units.Length).UserString] - if "Edge" in obj.Target[1][0]: + if obj.Target[1] and ("Edge" in obj.Target[1][0]): obj.Text = [FreeCAD.Units.Quantity(obj.Target[0].Shape.Edges[int(obj.Target[1][0][4:])-1].Length,FreeCAD.Units.Length).UserString] elif obj.LabelType == "Area": if obj.Target[0].isDerivedFrom("Part::Feature"): if hasattr(obj.Target[0].Shape,"Area"): obj.Text = [FreeCAD.Units.Quantity(obj.Target[0].Shape.Area,FreeCAD.Units.Area).UserString] - if "Face" in obj.Target[1][0]: + if obj.Target[1] and ("Face" in obj.Target[1][0]): obj.Text = [FreeCAD.Units.Quantity(obj.Target[0].Shape.Faces[int(obj.Target[1][0][4:])-1].Area,FreeCAD.Units.Area).UserString] elif obj.LabelType == "Volume": if obj.Target[0].isDerivedFrom("Part::Feature"): @@ -6778,8 +6778,12 @@ class ViewProviderDraftLabel: self.text3d.justification = coin.SoAsciiText.LEFT elif prop == "Text": if obj.Text: - self.text2d.string.setValues([l.encode("utf8") for l in obj.Text if l]) - self.text3d.string.setValues([l.encode("utf8") for l in obj.Text if l]) + if sys.version_info.major >= 3: + self.text2d.string.setValues([l for l in obj.Text if l]) + self.text3d.string.setValues([l for l in obj.Text if l]) + else: + self.text2d.string.setValues([l.encode("utf8") for l in obj.Text if l]) + self.text3d.string.setValues([l.encode("utf8") for l in obj.Text if l]) self.onChanged(obj.ViewObject,"TextAlignment") def getTextSize(self,vobj):