diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index f35ec79e0..abdc2f9b6 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -23,7 +23,7 @@ #* * #*************************************************************************** -from __future__ import division +#from __future__ import division __title__="FreeCAD Draft Workbench" __author__ = "Yorik van Havre, Werner Mayer, Martin Burbaum, Ken Cline, Dmitry Chigrin, Daniel Falck" @@ -81,7 +81,7 @@ if FreeCAD.GuiUp: import FreeCADGui, WorkingPlane gui = True else: - #print "FreeCAD Gui not present. Draft module will have some features disabled." + #print("FreeCAD Gui not present. Draft module will have some features disabled.") gui = False arrowtypes = ["Dot","Circle","Arrow"] @@ -95,7 +95,7 @@ def stringencodecoin(str): try: from pivy import coin coin4 = coin.COIN_MAJOR_VERSION >= 4 - except ImportError, AttributeError: + except (ImportError, AttributeError): coin4 = False if coin4: return str.encode('utf-8') @@ -136,7 +136,7 @@ def getParam(param,default=None): "getParam(parameterName): returns a Draft parameter value from the current config" p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft") t = getParamType(param) - #print "getting param ",param, " of type ",t, " default: ",str(default) + #print("getting param ",param, " of type ",t, " default: ",str(default)) if t == "int": if default == None: default = 0 @@ -284,7 +284,7 @@ def dimSymbol(symbol=None,invert=False): marker.addChild(c) return marker elif symbol == 3: - print "Draft.dimsymbol: Not implemented" + print("Draft.dimsymbol: Not implemented") return coin.SoSphere() def shapify(obj): @@ -335,7 +335,7 @@ def getGroupContents(objectslist,walls=False,addgroups=False): newlist.append(obj) newlist.extend(getGroupContents(obj.Group,walls,addgroups)) else: - #print "adding ",obj.Name + #print("adding ",obj.Name) newlist.append(obj) if walls: if getType(obj) in ["Wall","Structure"]: @@ -360,32 +360,32 @@ def removeHidden(objectslist): def printShape(shape): """prints detailed information of a shape""" - print "solids: ", len(shape.Solids) - print "faces: ", len(shape.Faces) - print "wires: ", len(shape.Wires) - print "edges: ", len(shape.Edges) - print "verts: ", len(shape.Vertexes) + print("solids: ", len(shape.Solids)) + print("faces: ", len(shape.Faces)) + print("wires: ", len(shape.Wires)) + print("edges: ", len(shape.Edges)) + print("verts: ", len(shape.Vertexes)) if shape.Faces: for f in range(len(shape.Faces)): - print "face ",f,":" + print("face ",f,":") for v in shape.Faces[f].Vertexes: - print " ",v.Point + print(" ",v.Point) elif shape.Wires: for w in range(len(shape.Wires)): - print "wire ",w,":" + print("wire ",w,":") for v in shape.Wires[w].Vertexes: - print " ",v.Point + print(" ",v.Point) else: for v in shape.Vertexes: - print " ",v.Point + print(" ",v.Point) def compareObjects(obj1,obj2): "Prints the differences between 2 objects" if obj1.TypeId != obj2.TypeId: - print obj1.Name + " and " + obj2.Name + " are of different types" + print(obj1.Name + " and " + obj2.Name + " are of different types") elif getType(obj1) != getType(obj2): - print obj1.Name + " and " + obj2.Name + " are of different types" + print(obj1.Name + " and " + obj2.Name + " are of different types") else: for p in obj1.PropertiesList: if p in obj2.PropertiesList: @@ -393,12 +393,12 @@ def compareObjects(obj1,obj2): pass elif p == "Placement": delta = str((obj1.Placement.Base.sub(obj2.Placement.Base)).Length) - print "Objects have different placements. Distance between the 2: " + delta + " units" + print("Objects have different placements. Distance between the 2: " + delta + " units") else: if getattr(obj1,p) != getattr(obj2,p): - print "Property " + p + " has a different value" + print("Property " + p + " has a different value") else: - print "Property " + p + " doesn't exist in one of the objects" + print("Property " + p + " doesn't exist in one of the objects") def formatObject(target,origin=None): ''' @@ -538,7 +538,7 @@ def loadTexture(filename,size=None): # p = QtGui.QImage(filename) size = coin.SbVec2s(p.width(), p.height()) buffersize = p.numBytes() - numcomponents = int (buffersize / ( size[0] * size[1] )) + numcomponents = int (float(buffersize) / ( size[0] * size[1] )) img = coin.SoSFImage() width = size[0] @@ -567,7 +567,7 @@ def loadTexture(filename,size=None): img.setValue(size, numcomponents, bytes) except: - print "Draft: unable to load texture" + print("Draft: unable to load texture") return None else: return img @@ -757,9 +757,9 @@ def makeWire(pointslist,closed=False,placement=None,face=True,support=None): closed = True pointslist = nlist if len(pointslist) == 0: - print "Invalid input points: ",pointslist - #print pointslist - #print closed + print("Invalid input points: ",pointslist) + #print(pointslist) + #print(closed) if placement: typecheck([(placement,FreeCAD.Placement)], "makeWire") if len(pointslist) == 2: fname = "Line" else: fname = "DWire" @@ -986,7 +986,7 @@ def makeCopy(obj,force=None,reparent=False): newobj = FreeCAD.ActiveDocument.addObject("Part::Feature",getRealName(obj.Name)) newobj.Shape = obj.Shape else: - print "Error: Object type cannot be copied" + print("Error: Object type cannot be copied") return None for p in obj.PropertiesList: if not p in ["Proxy"]: @@ -1233,7 +1233,7 @@ def move(objectslist,vector,copy=False,arch=True): newobj.End = obj.End.add(vector) newobj.Dimline = obj.Dimline.add(vector) else: - if copy: print "Mesh copy not supported at the moment" # TODO + if copy: print("Mesh copy not supported at the moment") # TODO newobj = obj if "Placement" in obj.PropertiesList: pla = obj.Placement @@ -1273,7 +1273,7 @@ def array(objectslist,arg1,arg2,arg3,arg4=None): def polarArray(objectslist,center,angle,num): typecheck([(center,Vector), (num,int)], "polarArray") if not isinstance(objectslist,list): objectslist = [objectslist] - fraction = angle/num + fraction = float(angle)/num for i in range(num): currangle = fraction + (i*fraction) rotate(objectslist,currangle,center,copy=True) @@ -1396,7 +1396,7 @@ def scale(objectslist,delta=Vector(1,1,1),center=Vector(0,0,0),copy=False,legacy elif getType(obj) == "Wire": p = [] for v in sh.Vertexes: p.append(v.Point) - print p + #print(p) newobj.Points = p elif getType(obj) == "BSpline": p = [] @@ -1451,7 +1451,7 @@ def offset(obj,delta,copy=False,bind=False,sym=False,occ=False): if getType(obj) in ["Sketch","Part"]: copy = True - print "the offset tool is currently unable to offset a non-Draft object directly - Creating a copy" + print("the offset tool is currently unable to offset a non-Draft object directly - Creating a copy") def getRect(p,obj): "returns length,heigh,placement" @@ -1561,7 +1561,7 @@ def offset(obj,delta,copy=False,bind=False,sym=False,occ=False): newobj = FreeCAD.ActiveDocument.addObject("Part::Feature","Offset") newobj.Shape = newwire else: - print "Unable to create an offset" + print("Unable to create an offset") if newobj: formatObject(newobj,obj) else: @@ -1574,9 +1574,9 @@ def offset(obj,delta,copy=False,bind=False,sym=False,occ=False): obj.Tool = None obj.Points = p elif getType(obj) == "BSpline": - #print delta + #print(delta) obj.Points = delta - #print "done" + #print("done") elif getType(obj) == "Rectangle": length,height,plac = getRect(p,obj) obj.Placement = plac @@ -1587,7 +1587,7 @@ def offset(obj,delta,copy=False,bind=False,sym=False,occ=False): elif getType(obj) == "Polygon": obj.Radius = getRadius(obj,delta) elif getType(obj) == 'Part': - print "unsupported object" # TODO + print("unsupported object") # TODO newobj = obj if copy and getParam("selectBaseObjects",False): select(newobj) @@ -1676,7 +1676,7 @@ def getDXF(obj,direction=None): result += Drawing.projectToDXF(obj.Shape,direction) else: - print "Draft.getDXF: Unsupported object: ",obj.Label + print("Draft.getDXF: Unsupported object: ",obj.Label) return result @@ -1689,8 +1689,8 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct scale parameter allows to scale linewidths down, so they are resolution-independant.''' import Part, DraftGeomUtils svg = "" - linewidth = linewidth/scale - fontsize = (fontsize/scale)/2 + linewidth = float(linewidth)/scale + fontsize = (float(fontsize)/scale)/2 pointratio = .75 # the number of times the dots are smaller than the arrow size plane = None if direction: @@ -1770,7 +1770,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct try: bspline=bspline.approximateBSpline(0.05,20, 3,'C0') except RuntimeError: - print "Debug: unable to approximate bspline" + print("Debug: unable to approximate bspline") if bspline.Degree <= 3 and not bspline.isRational(): for bezierseg in bspline.toBezier(): if bezierseg.Degree>3: #should not happen @@ -1785,7 +1785,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct v = getProj(pole) svg += str(v.x) +' '+ str(v.y) + ' ' else: - print "Debug: one edge (hash ",e.hashCode(),") has been discretized with parameter 0.1" + print("Debug: one edge (hash ",e.hashCode(),") has been discretized with parameter 0.1") for linepoint in bspline.discretize(0.1)[1:]: v = getProj(linepoint) svg += 'L '+ str(v.x) +' '+ str(v.y) + ' ' @@ -1841,7 +1841,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct svg += 'style="stroke-miterlimit:4;stroke-dasharray:none" ' svg += 'd="M 0 0 L 4 1 L 4 -1 Z"/>\n' else: - print "getSVG: arrow type not implemented" + print("getSVG: arrow type not implemented") return svg def getText(color,fontsize,fontname,angle,base,text,linespacing=0.5,align="center",flip=True): @@ -1898,8 +1898,8 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct if obj.ViewObject.Proxy: if hasattr(obj.ViewObject.Proxy,"p1"): prx = obj.ViewObject.Proxy - ts = (len(prx.string)*obj.ViewObject.FontSize.Value)/4 - rm = ((prx.p3.sub(prx.p2)).Length/2)-ts + ts = (len(prx.string)*obj.ViewObject.FontSize.Value)/4.0 + rm = ((prx.p3.sub(prx.p2)).Length/2.0)-ts p2a = getProj(prx.p2.add(DraftVecUtils.scaleTo(prx.p3.sub(prx.p2),rm))) p2b = getProj(prx.p3.add(DraftVecUtils.scaleTo(prx.p2.sub(prx.p3),rm))) p1 = getProj(prx.p1) @@ -1927,7 +1927,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct svg += 'L '+str(p4.x)+' '+str(p4.y)+'" ' else: tangle = 0 - tbase = tbase.add(Vector(0,-2/scale,0)) + tbase = tbase.add(Vector(0,-2.0/scale,0)) svg += 'd="M '+str(p1.x)+' '+str(p1.y)+' ' svg += 'L '+str(p2.x)+' '+str(p2.y)+' ' svg += 'L '+str(p2a.x)+' '+str(p2a.y)+' ' @@ -1993,14 +1993,14 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct # drawing text if obj.ViewObject.DisplayMode == "2D": - t = prx.circle.tangentAt(prx.circle.FirstParameter+(prx.circle.LastParameter-prx.circle.FirstParameter)/2) + t = prx.circle.tangentAt(prx.circle.FirstParameter+(prx.circle.LastParameter-prx.circle.FirstParameter)/2.0) t = getProj(t) tangle = DraftVecUtils.angle(t) if (tangle <= -math.pi/2) or (tangle > math.pi/2): tangle = tangle + math.pi - tbase = getProj(prx.circle.valueAt(prx.circle.FirstParameter+(prx.circle.LastParameter-prx.circle.FirstParameter)/2)) - tbase = tbase.add(DraftVecUtils.rotate(Vector(0,2/scale,0),tangle)) - print tbase + tbase = getProj(prx.circle.valueAt(prx.circle.FirstParameter+(prx.circle.LastParameter-prx.circle.FirstParameter)/2.0)) + tbase = tbase.add(DraftVecUtils.rotate(Vector(0,2.0/scale,0),tangle)) + #print(tbase) else: tangle = 0 tbase = getProj(prx.tbase) @@ -2011,7 +2011,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct n = obj.ViewObject.FontName a = obj.ViewObject.Rotation.getValueAs("rad") t = obj.LabelText - l = obj.ViewObject.LineSpacing/2 + l = obj.ViewObject.LineSpacing/2.0 j = obj.ViewObject.Justification svg += getText(stroke,fontsize,n,a,getProj(obj.Position),t,l,j) @@ -2037,7 +2037,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct svg += 'style="text-anchor:middle;' svg += 'text-align:center;' svg += 'font-family: sans;" ' - svg += 'transform="translate(' + str(center.x+rad/4) + ',' + str(center.y-rad/3) + ') ' + svg += 'transform="translate(' + str(center.x+rad/4.0) + ',' + str(center.y-rad/3.0) + ') ' svg += 'scale(1,-1)"> ' svg += '' + obj.ViewObject.Proxy.getNumber(n) + '\n' svg += '\n' @@ -2054,7 +2054,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct f1 = fontsize*scale p2 = FreeCAD.Vector(obj.ViewObject.Proxy.coords.translation.getValue().getValue()) p1 = p2.add(FreeCAD.Vector(obj.ViewObject.Proxy.header.translation.getValue().getValue())) - l = obj.ViewObject.LineSpacing/2 + l = obj.ViewObject.LineSpacing/2.0 j = obj.ViewObject.TextAlign svg += getText(c,f1,n,a,getProj(p1),t1,l,j,flip=False) if t2: @@ -2115,7 +2115,7 @@ def getrgb(color,testbw=True): col = "#"+r+g+b if testbw: if col == "#ffffff": - #print getParam('SvgLinesBlack') + #print(getParam('SvgLinesBlack')) if getParam('SvgLinesBlack',True): col = "#000000" return col @@ -2150,7 +2150,7 @@ def makeDrawingView(obj,page,lwmod=None,tmod=None): if lwmod: viewobj.LineweightModifier = lwmod if tmod: viewobj.TextModifier = tmod if hasattr(obj.ViewObject,"Pattern"): - if str(obj.ViewObject.Pattern) in svgpatterns().keys(): + if str(obj.ViewObject.Pattern) in list(svgpatterns().keys()): viewobj.FillStyle = str(obj.ViewObject.Pattern) if hasattr(obj.ViewObject,"DrawStyle"): viewobj.LineStyle = obj.ViewObject.DrawStyle @@ -2203,7 +2203,7 @@ def makeSketch(objectslist,autoconstraints=False,addTo=None,delete=False,name="S ok = False tp = getType(obj) if tp == "BSpline": - print "makeSketch: BSplines not supported" + print("makeSketch: BSplines not supported") elif tp == "Circle": g = (DraftGeomUtils.geom(obj.Shape.Edges[0],nobj.Placement)) nobj.addGeometry(g) @@ -2237,7 +2237,7 @@ def makeSketch(objectslist,autoconstraints=False,addTo=None,delete=False,name="S nobj.addGeometry(edge.Curve) if autoconstraints: last = nobj.GeometryCount - segs = range(last-len(obj.Shape.Edges),last-1) + segs = list(range(last-len(obj.Shape.Edges),last-1)) for seg in segs: nobj.addConstraint(Constraint("Coincident",seg,EndPoint,seg+1,StartPoint)) if DraftGeomUtils.isAligned(nobj.Geometry[seg],"x"): @@ -2249,11 +2249,11 @@ def makeSketch(objectslist,autoconstraints=False,addTo=None,delete=False,name="S ok = True if (not ok) and obj.isDerivedFrom("Part::Feature"): if not DraftGeomUtils.isPlanar(obj.Shape): - print "Error: The given object is not planar and cannot be converted into a sketch." + print("Error: The given object is not planar and cannot be converted into a sketch.") return None for e in obj.Shape.Edges: if DraftGeomUtils.geomType(e) == "BSplineCurve": - print "Error: One of the selected object contains BSplines, unable to convert" + print("Error: One of the selected object contains BSplines, unable to convert") return None if not addTo: nobj.Placement.Rotation = DraftGeomUtils.calculatePlacement(obj.Shape).Rotation @@ -2353,10 +2353,10 @@ def heal(objlist=None,delete=True,reparent=True): if not objlist: objlist = FreeCAD.ActiveDocument.Objects - print "Automatic mode: Healing whole document..." + print("Automatic mode: Healing whole document...") auto = True else: - print "Manual mode: Force-healing selected objects..." + print("Manual mode: Force-healing selected objects...") if not isinstance(objlist,list): objlist = [objlist] @@ -2377,34 +2377,34 @@ def heal(objlist=None,delete=True,reparent=True): dellist.append(obj.Name) props = obj.PropertiesList if ("Dimline" in props) and ("Start" in props): - print "Healing " + obj.Name + " of type Dimension" + print("Healing " + obj.Name + " of type Dimension") nobj = makeCopy(obj,force="Dimension",reparent=reparent) elif ("Height" in props) and ("Length" in props): - print "Healing " + obj.Name + " of type Rectangle" + print("Healing " + obj.Name + " of type Rectangle") nobj = makeCopy(obj,force="Rectangle",reparent=reparent) elif ("Points" in props) and ("Closed" in props): if "BSpline" in obj.Name: - print "Healing " + obj.Name + " of type BSpline" + print("Healing " + obj.Name + " of type BSpline") nobj = makeCopy(obj,force="BSpline",reparent=reparent) else: - print "Healing " + obj.Name + " of type Wire" + print("Healing " + obj.Name + " of type Wire") nobj = makeCopy(obj,force="Wire",reparent=reparent) elif ("Radius" in props) and ("FirstAngle" in props): - print "Healing " + obj.Name + " of type Circle" + print("Healing " + obj.Name + " of type Circle") nobj = makeCopy(obj,force="Circle",reparent=reparent) elif ("DrawMode" in props) and ("FacesNumber" in props): - print "Healing " + obj.Name + " of type Polygon" + print("Healing " + obj.Name + " of type Polygon") nobj = makeCopy(obj,force="Polygon",reparent=reparent) elif ("FillStyle" in props) and ("FontSize" in props): nobj = makeCopy(obj,force="DrawingView",reparent=reparent) else: dellist.pop() - print "Object " + obj.Name + " is not healable" + print("Object " + obj.Name + " is not healable") if not got: - print "No object seems to need healing" + print("No object seems to need healing") else: - print "Healed ",len(dellist)," objects" + print("Healed ",len(dellist)," objects") if dellist and delete: for n in dellist: @@ -2620,7 +2620,7 @@ def upgrade(objects,delete=False,force=None): edges.append(e) try: nedges = DraftGeomUtils.sortEdges(edges[:]) - # for e in nedges: print "debug: ",e.Curve,e.Vertexes[0].Point,e.Vertexes[-1].Point + # for e in nedges: print("debug: ",e.Curve,e.Vertexes[0].Point,e.Vertexes[-1].Point) w = Part.Wire(nedges) except Part.OCCError: return None @@ -2671,8 +2671,8 @@ def upgrade(objects,delete=False,force=None): meshes.append(ob) objects = parts - #print "objects:",objects," edges:",edges," wires:",wires," openwires:",openwires," faces:",faces - #print "groups:",groups," curves:",curves," facewires:",facewires, "loneedges:", loneedges + #print("objects:",objects," edges:",edges," wires:",wires," openwires:",openwires," faces:",faces) + #print("groups:",groups," curves:",curves," facewires:",facewires, "loneedges:", loneedges) if force: if force in ["makeCompound","closeGroupWires","makeSolid","closeWire","turnToParts","makeFusion", @@ -2928,7 +2928,7 @@ def downgrade(objects,delete=False,force=None): # we have one multi-solids compound object: extract its solids elif (len(objects) == 1) and (getType(objects[0]) == "Part") and (len(solids) > 1): result = splitCompounds(objects) - print result + #print(result) if result: msg(translate("draft", "Found 1 multi-solids compound: exploding it\n")) # special case, we have one parametric object: we "de-parametrize" it @@ -3015,7 +3015,7 @@ class _ViewProviderDraft: "Draft","Defines a hatch pattern") vobj.addProperty("App::PropertyFloat","PatternSize", "Draft","Sets the size of the pattern") - vobj.Pattern = ["None"]+svgpatterns().keys() + vobj.Pattern = ["None"]+list(svgpatterns().keys()) vobj.PatternSize = 1 def __getstate__(self): @@ -3054,7 +3054,7 @@ class _ViewProviderDraft: path = vobj.TextureImage if not path: if hasattr(vobj,"Pattern"): - if str(vobj.Pattern) in svgpatterns().keys(): + if str(vobj.Pattern) in list(svgpatterns().keys()): path = svgpatterns()[vobj.Pattern][1] if path and vobj.RootNode: if vobj.RootNode.getChildren().getLength() > 2: @@ -3400,8 +3400,8 @@ class _ViewProviderDimension(_ViewProviderDraft): # set the lines if m == "3D": # calculate the spacing of the text - textsize = (len(self.string)*obj.ViewObject.FontSize.Value)/4 - spacing = ((self.p3.sub(self.p2)).Length/2) - textsize + textsize = (len(self.string)*obj.ViewObject.FontSize.Value)/4.0 + spacing = ((self.p3.sub(self.p2)).Length/2.0) - textsize self.p2a = self.p2.add(DraftVecUtils.scaleTo(self.p3.sub(self.p2),spacing)) self.p2b = self.p3.add(DraftVecUtils.scaleTo(self.p2.sub(self.p3),spacing)) self.coords.point.setValues([[self.p1.x,self.p1.y,self.p1.z], @@ -3687,7 +3687,7 @@ class _ViewProviderAngularDimension(_ViewProviderDraft): # set the arc if m == "3D": # calculate the spacing of the text - spacing = (len(self.string)*obj.ViewObject.FontSize.Value)/8 + spacing = (len(self.string)*obj.ViewObject.FontSize.Value)/8.0 pts1 = [] cut = None pts2 = [] @@ -3704,7 +3704,7 @@ class _ViewProviderAngularDimension(_ViewProviderDraft): self.coords.point.setValues(pts1+pts2) i1 = len(pts1) i2 = i1+len(pts2) - self.arc.coordIndex.setValues(0,len(pts1)+len(pts2)+1,range(len(pts1))+[-1]+range(i1,i2)) + self.arc.coordIndex.setValues(0,len(pts1)+len(pts2)+1,list(range(len(pts1)))+[-1]+list(range(i1,i2))) if (len(pts1) >= 3) and (len(pts2) >= 3): self.circle1 = Part.Arc(Vector(pts1[0][0],pts1[0][1],pts1[0][2]),Vector(pts1[1][0],pts1[1][1],pts1[1][2]),Vector(pts1[-1][0],pts1[-1][1],pts1[-1][2])).toShape() self.circle2 = Part.Arc(Vector(pts2[0][0],pts2[0][1],pts2[0][2]),Vector(pts2[1][0],pts2[1][1],pts2[1][2]),Vector(pts2[-1][0],pts2[-1][1],pts2[-1][2])).toShape() @@ -3714,7 +3714,7 @@ class _ViewProviderAngularDimension(_ViewProviderDraft): p = self.circle.valueAt(self.circle.FirstParameter+((self.circle.LastParameter-self.circle.FirstParameter)/arcsegs)*i) pts.append([p.x,p.y,p.z]) self.coords.point.setValues(pts) - self.arc.coordIndex.setValues(0,arcsegs+1,range(arcsegs+1)) + self.arc.coordIndex.setValues(0,arcsegs+1,list(range(arcsegs+1))) # set the arrow coords and rotation self.trans1.translation.setValue((self.p2.x,self.p2.y,self.p2.z)) @@ -4151,7 +4151,7 @@ class _Polygon(_DraftObject): if obj.DrawMode == 'inscribed': delta = obj.Radius.Value else: - delta = obj.Radius.Value/math.cos(angle/2) + delta = obj.Radius.Value/math.cos(angle/2.0) pts = [Vector(delta,0,0)] for i in range(obj.FacesNumber-1): ang = (i+1)*angle @@ -4187,7 +4187,7 @@ class _DrawingView(_DraftObject): obj.addProperty("App::PropertyLink","Source","Base","The linked object") obj.addProperty("App::PropertyEnumeration","FillStyle","View Style","Shape Fill Style") obj.addProperty("App::PropertyEnumeration","LineStyle","View Style","Line Style") - obj.FillStyle = ['shape color'] + svgpatterns().keys() + obj.FillStyle = ['shape color'] + list(svgpatterns().keys()) obj.LineStyle = ['Solid','Dashed','Dotted','Dashdot'] obj.LineWidth = 0.35 obj.FontSize = 12 @@ -4313,7 +4313,7 @@ class _BezCurve(_DraftObject): else: poles=[] return [poles[x:x+fp.Degree] for x in \ - xrange(0, len(poles), (fp.Degree or 1))] + range(0, len(poles), (fp.Degree or 1))] def resetcontinuity(self,fp): fp.Continuity = [0]*(len(self._segpoleslst(fp))-1+1*fp.Closed) @@ -4629,14 +4629,14 @@ class _Array(_DraftObject): return Part.makeCompound(base) def polarArray(self,shape,center,angle,num,axis,axisvector): - #print "angle ",angle," num ",num + #print("angle ",angle," num ",num) import Part if angle == 360: - fraction = angle/num + fraction = float(angle)/num else: if num == 0: return shape - fraction = angle/(num-1) + fraction = float(angle)/(num-1) base = [shape.copy()] for i in range(num-1): currangle = fraction + (i*fraction) @@ -4783,7 +4783,7 @@ class _PathArray(_DraftObject): stop = count else: stop = count - 1 - step = cdist/stop + step = float(cdist)/stop remain = 0 travel = step for i in range(1,stop): @@ -5050,8 +5050,8 @@ class _Facebinder(_DraftObject): try: fnum = int(f[1][4:])-1 faces.append(f[0].Shape.Faces[fnum]) - except IndexError,Part.OCCError: - print "Draft: wrong face index" + except(IndexError,Part.OCCError): + print("Draft: wrong face index") return if not faces: return @@ -5062,7 +5062,7 @@ class _Facebinder(_DraftObject): sh = sh.fuse(f) sh = sh.removeSplitter() except Part.OCCError: - print "Draft: error building facebinder" + print("Draft: error building facebinder") return obj.Shape = sh obj.Placement = pl diff --git a/src/Mod/Draft/DraftGeomUtils.py b/src/Mod/Draft/DraftGeomUtils.py index eadff154e..eba43b6bd 100755 --- a/src/Mod/Draft/DraftGeomUtils.py +++ b/src/Mod/Draft/DraftGeomUtils.py @@ -437,7 +437,7 @@ def findIntersection(edge1,edge2,infinite1=False,infinite2=False,ex1=False,ex2=F return int else : - print "DraftGeomUtils: Unsupported curve type: (" + str(edge1.Curve) + ", " + str(edge2.Curve) + ")" + print("DraftGeomUtils: Unsupported curve type: (" + str(edge1.Curve) + ", " + str(edge2.Curve) + ")") def wiresIntersect(wire1,wire2): "wiresIntersect(wire1,wire2): returns True if some of the edges of the wires are intersecting otherwise False" @@ -467,43 +467,43 @@ def pocket2d(shape,offset): if not o.Wires: return [] offsetWires = o.Wires - print "base offset wires:",offsetWires + print("base offset wires:",offsetWires) if not innerWires: return offsetWires for innerWire in innerWires: i = innerWire.makeOffset(offset) if i.Wires: - print "offsetting island ",innerWire," : ",i.Wires + print("offsetting island ",innerWire," : ",i.Wires) for w in i.Wires: added = False - print "checking wire ",w - k = range(len(offsetWires)) + print("checking wire ",w) + k = list(range(len(offsetWires))) for j in k: - print "checking against existing wire ",j + print("checking against existing wire ",j) ow = offsetWires[j] if ow: if wiresIntersect(w,ow): - print "intersect" + print("intersect") f1 = Part.Face(ow) f2 = Part.Face(w) f3 = f1.cut(f2) - print "made new wires: ",f3.Wires + print("made new wires: ",f3.Wires) offsetWires[j] = f3.Wires[0] if len(f3.Wires) > 1: - print "adding more" + print("adding more") offsetWires.extend(f3.Wires[1:]) added = True else: a = w.BoundBox b = ow.BoundBox if (a.XMin <= b.XMin) and (a.YMin <= b.YMin) and (a.ZMin <= b.ZMin) and (a.XMax >= b.XMax) and (a.YMax >= b.YMax) and (a.ZMax >= b.ZMax): - print "this wire is bigger than the outer wire" + print("this wire is bigger than the outer wire") offsetWires[j] = None added = True else: - print "doesn't intersect" + print("doesn't intersect") if not added: - print "doesn't intersect with any other" + print("doesn't intersect with any other") offsetWires.append(w) offsetWires = [o for o in offsetWires if o != None] return offsetWires @@ -530,7 +530,7 @@ def geom(edge,plac=FreeCAD.Placement()): # direction check if edge.Curve.Axis.getAngle(normal) > 1: a1,a2 = a2,a1 - #print "creating sketch arc from ",cu, ", p1=",v1, " (",math.degrees(a1), "d) p2=",v2," (", math.degrees(a2),"d)" + #print("creating sketch arc from ",cu, ", p1=",v1, " (",math.degrees(a1), "d) p2=",v2," (", math.degrees(a2),"d)") p= Part.ArcOfCircle(cu,a1,a2) return p @@ -617,7 +617,7 @@ def concatenate(shape): wire=Part.Wire(edges) face=Part.Face(wire) except: - print "DraftGeomUtils: Couldn't join faces into one" + print("DraftGeomUtils: Couldn't join faces into one") return(shape) else: if not wire.isClosed(): return(wire) @@ -633,7 +633,7 @@ def getBoundary(shape): for f in shape.Faces: for e in f.Edges: hc= e.hashCode() - if lut.has_key(hc): lut[hc]=lut[hc]+1 + if hc in lut: lut[hc]=lut[hc]+1 else: lut[hc]=1 # filter out the edges shared by more than one sub-face bound=[] @@ -688,14 +688,14 @@ def sortEdgesNew(edges): # in the sdict dictionary but not in the edict dictionary, and has # only one edge ending there. startedge = None - for v, se in sdict.iteritems(): + for v, se in sdict.items(): if v not in edict and len (se) == 1: startedge = se break # The above may not find a start vertex; if the start edge is reversed, # the start vertex will appear in edict (and not sdict). if not startedge: - for v, se in edict.iteritems(): + for v, se in edict.xitems(): if v not in sdict and len (se) == 1: startedge = se break @@ -709,7 +709,7 @@ def sortEdgesNew(edges): # end check is simply the count of input elements (that works for closed # as well as open paths). ret = list() - for i in xrange(len(edges)): + for i in range(len(edges)): try: eset = sdict[v] e = eset.pop() @@ -725,7 +725,7 @@ def sortEdgesNew(edges): v = e.Vertexes[0] e.reverse() except KeyError: - print "DraftGeomUtils.sortEdges failed" + print("DraftGeomUtils.sortEdges failed") return sortEdgesOld(edges) ret.append(e) v = vpoint(v) @@ -739,7 +739,7 @@ def sortEdgesOld(lEdges, aVertex=None): #has exactly two vertices (wmayer) #for e in lEdges: # if not isinstance(e.Curve,Part.Line): - # print "Warning: sortedges cannot treat wired containing curves yet." + # print("Warning: sortedges cannot treat wired containing curves yet.") # return lEdges def lookfor(aVertex, inEdges): @@ -787,20 +787,20 @@ def sortEdgesOld(lEdges, aVertex=None): olEdges = sortEdgesOld(lEdges, result[3].Vertexes[result[2]]) return olEdges # if the wire is closed there is no end so choose 1st Vertex - # print "closed wire, starting from ",lEdges[0].Vertexes[0].Point + # print("closed wire, starting from ",lEdges[0].Vertexes[0].Point) return sortEdgesOld(lEdges, lEdges[0].Vertexes[0]) else : - #print "looking ",aVertex.Point + #print("looking ",aVertex.Point) result = lookfor(aVertex,lEdges) if result[0] != 0 : del lEdges[result[1]] next = sortEdgesOld(lEdges, result[3].Vertexes[-((-result[2])^1)]) - #print "result ",result[3].Vertexes[0].Point," ",result[3].Vertexes[1].Point, " compared to ",aVertex.Point + #print("result ",result[3].Vertexes[0].Point," ",result[3].Vertexes[1].Point, " compared to ",aVertex.Point) if aVertex.Point == result[3].Vertexes[0].Point: - #print "keeping" + #print("keeping") olEdges += [result[3]] + next else: - #print "inverting", result[3].Curve + #print("inverting", result[3].Curve) if geomType(result[3]) == "Line": newedge = Part.Line(aVertex.Point,result[3].Vertexes[0].Point).toShape() olEdges += [newedge] + next @@ -898,7 +898,7 @@ def findWires(edgeslist): try: wi = Part.Wire(w) except: - print "couldn't join some edges" + print("couldn't join some edges") else: nwires.append(wi) return nwires @@ -911,7 +911,7 @@ def superWire(edgeslist,closed=False): vd.scale(.5,.5,.5) return v1.add(vd) edges = sortEdges(edgeslist) - print edges + print(edges) newedges = [] for i in range(len(edges)): curr = edges[i] @@ -929,7 +929,7 @@ def superWire(edgeslist,closed=False): next = None else: next = edges[i+1] - print i,prev,curr,next + print(i,prev,curr,next) if prev: if curr.Vertexes[0].Point == prev.Vertexes[-1].Point: p1 = curr.Vertexes[0].Point @@ -945,16 +945,16 @@ def superWire(edgeslist,closed=False): else: p2 = curr.Vertexes[-1].Point if geomType(curr) == "Line": - print "line",p1,p2 + print("line",p1,p2) newedges.append(Part.Line(p1,p2).toShape()) elif geomType(curr) == "Circle": p3 = findMidpoint(curr) - print "arc",p1,p3,p2 + print("arc",p1,p3,p2) newedges.append(Part.Arc(p1,p3,p2).toShape()) else: - print "Cannot superWire edges that are not lines or arcs" + print("Cannot superWire edges that are not lines or arcs") return None - print newedges + print(newedges) return Part.Wire(newedges) def findMidpoint(edge): @@ -1185,7 +1185,7 @@ def connect(edges,closed=False): nedges = [] for i in range(len(edges)): curr = edges[i] - #print "debug: DraftGeomUtils.connect edge ",i," : ",curr.Vertexes[0].Point,curr.Vertexes[-1].Point + #print("debug: DraftGeomUtils.connect edge ",i," : ",curr.Vertexes[0].Point,curr.Vertexes[-1].Point) if i > 0: prev = edges[i-1] else: @@ -1200,7 +1200,7 @@ def connect(edges,closed=False): else: next = None if prev: - #print "debug: DraftGeomUtils.connect prev : ",prev.Vertexes[0].Point,prev.Vertexes[-1].Point + #print("debug: DraftGeomUtils.connect prev : ",prev.Vertexes[0].Point,prev.Vertexes[-1].Point) i = findIntersection(curr,prev,True,True) if i: v1 = i[0] @@ -1209,7 +1209,7 @@ def connect(edges,closed=False): else: v1 = curr.Vertexes[0].Point if next: - #print "debug: DraftGeomUtils.connect next : ",next.Vertexes[0].Point,next.Vertexes[-1].Point + #print("debug: DraftGeomUtils.connect next : ",next.Vertexes[0].Point,next.Vertexes[-1].Point) i = findIntersection(curr,next,True,True) if i: v2 = i[0] @@ -1226,7 +1226,7 @@ def connect(edges,closed=False): try: return Part.Wire(nedges) except: - print "DraftGeomUtils.connect: unable to connect edges:",nedges + print("DraftGeomUtils.connect: unable to connect edges:",nedges) return None def findDistance(point,edge,strict=False): @@ -1286,15 +1286,15 @@ def findDistance(point,edge,strict=False): np = edge.Curve.value(pr) dist = np.sub(point) except: - print "DraftGeomUtils: Unable to get curve parameter for point ",point + print("DraftGeomUtils: Unable to get curve parameter for point ",point) return None else: return dist else: - print "DraftGeomUtils: Couldn't project point" + print("DraftGeomUtils: Couldn't project point") return None else: - print "DraftGeomUtils: Couldn't project point" + print("DraftGeomUtils: Couldn't project point") return None @@ -1427,7 +1427,7 @@ def bind(w1,w2): w4 = Part.Line(w1.Vertexes[-1].Point,w2.Vertexes[-1].Point).toShape() return Part.Face(Part.Wire(w1.Edges+[w3]+w2.Edges+[w4])) except: - print "DraftGeomUtils: unable to bind wires" + print("DraftGeomUtils: unable to bind wires") return None def cleanFaces(shape): @@ -1458,13 +1458,13 @@ def cleanFaces(shape): lut[edge.hashCode()].append(face.hashCode()) else: lut[edge.hashCode()] = [face.hashCode()] - # print "lut:",lut + # print("lut:",lut) # take edges shared by 2 faces sharedhedges = [] - for k,v in lut.iteritems(): + for k,v in lut.items(): if len(v) == 2: sharedhedges.append(k) - # print len(sharedhedges)," shared edges:",sharedhedges + # print(len(sharedhedges)," shared edges:",sharedhedges) # find those with same normals targethedges = [] for hedge in sharedhedges: @@ -1473,7 +1473,7 @@ def cleanFaces(shape): n2 = find(faces[1]).normalAt(0.5,0.5) if n1 == n2: targethedges.append(hedge) - # print len(targethedges)," target edges:",targethedges + # print(len(targethedges)," target edges:",targethedges) # get target faces hfaces = [] for hedge in targethedges: @@ -1481,7 +1481,7 @@ def cleanFaces(shape): if not f in hfaces: hfaces.append(f) - # print len(hfaces)," target faces:",hfaces + # print(len(hfaces)," target faces:",hfaces) # sort islands islands = [[hfaces.pop(0)]] currentisle = 0 @@ -1503,7 +1503,7 @@ def cleanFaces(shape): islands[currentisle].append(hfaces.pop(f)) else: found = False - # print len(islands)," islands:",islands + # print(len(islands)," islands:",islands) # make new faces from islands newfaces = [] treated = [] @@ -1517,12 +1517,12 @@ def cleanFaces(shape): if shp.normalAt(0.5,0.5) != find(isle[0]).normalAt(0.5,0.5): shp.reverse() newfaces.append(shp) - # print "new faces:",newfaces + # print("new faces:",newfaces) # add remaining faces for f in faceset: if not f.hashCode() in treated: newfaces.append(f) - # print "final faces" + # print("final faces") # finishing fshape = Part.makeShell(newfaces) if shape.isClosed(): @@ -1585,7 +1585,7 @@ def getCubicDimensions(shape): for e in shape.Faces[i].Edges: if basepoint in [e.Vertexes[0].Point,e.Vertexes[1].Point]: vtemp = vec(e) - # print vtemp + # print(vtemp) if round(vtemp.getAngle(vx),precision()) == rpi: if round(vtemp.getAngle(vy),precision()) == rpi: vz = vtemp @@ -1626,7 +1626,7 @@ def arcFromSpline(edge): segments such as those from imported svg files. Use this only if you are sure your edge is really an arc...""" if geomType(edge) == "Line": - print "This edge is straight, cannot build an arc on it" + print("This edge is straight, cannot build an arc on it") return None if len(edge.Vertexes) > 1: # 2-point arc @@ -1637,7 +1637,7 @@ def arcFromSpline(edge): try: return Part.Arc(p1,p3,p2).toShape() except: - print "Couldn't make an arc out of this edge" + print("Couldn't make an arc out of this edge") return None else: # circle @@ -1651,7 +1651,7 @@ def arcFromSpline(edge): try: return Part.makeCircle(radius,center) except: - print "couldn't make a circle out of this edge" + print("couldn't make a circle out of this edge") # Fillet code graciously donated by Jacques-Antoine Gaudin @@ -1678,7 +1678,7 @@ def fillet(lEdges,r,chamfer=False): return rndEdges if r <= 0 : - print "DraftGeomUtils.fillet : Error : radius is negative." + print("DraftGeomUtils.fillet : Error : radius is negative.") return rndEdges curveType = getCurveType(rndEdges[0]) @@ -1700,7 +1700,7 @@ def fillet(lEdges,r,chamfer=False): r = (r/2)/math.cos(beta) if round(alpha,precision()) == 0 or round(alpha - math.pi,precision()) == 0: # Edges have same direction - print "DraftGeomUtils.fillet : Warning : edges have same direction. Did nothing" + print("DraftGeomUtils.fillet : Warning : edges have same direction. Did nothing") return rndEdges dToCenter = r / math.sin(alpha/2.) @@ -1716,7 +1716,7 @@ def fillet(lEdges,r,chamfer=False): arcPt3 = lVertexes[1].Point.add(dirVect) if (dToTangent>lEdges[0].Length) or (dToTangent>lEdges[1].Length) : - print "DraftGeomUtils.fillet : Error : radius value ", r," is too high" + print("DraftGeomUtils.fillet : Error : radius value ", r," is too high") return rndEdges if chamfer: rndEdges[1] = Part.Edge(Part.Line(arcPt1,arcPt3)) @@ -1761,14 +1761,14 @@ def fillet(lEdges,r,chamfer=False): elif round(projCenter,precision()) < 0 or (round(projCenter,precision()) == 0 and U1.dot(T) > 0): newRadius = arcRadius + r else : - print "DraftGeomUtils.fillet : Warning : edges are already tangent. Did nothing" + print("DraftGeomUtils.fillet : Warning : edges are already tangent. Did nothing") return rndEdges toNewCent = newRadius**2-dCenterToLine**2 if toNewCent > 0 : toNewCent = abs(abs(projCenter) - toNewCent**(0.5)) else : - print "DraftGeomUtils.fillet : Error : radius value ", r," is too high" + print("DraftGeomUtils.fillet : Error : radius value ", r," is too high") return rndEdges U1.scale(toNewCent,toNewCent,toNewCent) @@ -1801,7 +1801,7 @@ def fillet(lEdges,r,chamfer=False): delLength = arcRadius * V[0].sub(arcCenter).getAngle(toCenter) if delLength > arcLength or toNewCent > curveType['Line'][0].Length: - print "DraftGeomUtils.fillet : Error : radius value ", r," is too high" + print("DraftGeomUtils.fillet : Error : radius value ", r," is too high") return rndEdges arcAsEdge = arcFrom2Pts(V[-arcFirst],V[-myTrick],arcCenter,arcAxis) @@ -1847,7 +1847,7 @@ def fillet(lEdges,r,chamfer=False): newRadius += [arcRadius[0]+r] newRadius += [arcRadius[1]+r] else : - print "DraftGeomUtils.fillet : Warning : edges are already tangent. Did nothing" + print("DraftGeomUtils.fillet : Warning : edges are already tangent. Did nothing") return rndEdges elif not sameDirection : if round(TcrossT.dot(arcAxis[0]),precision()) > 0 : @@ -1864,16 +1864,16 @@ def fillet(lEdges,r,chamfer=False): newRadius += [arcRadius[0]+r] newRadius += [arcRadius[1]-r] else : - print "DraftGeomUtils.fillet : Warning : arcs are coincident. Did nothing" + print("DraftGeomUtils.fillet : Warning : arcs are coincident. Did nothing") return rndEdges else : - print "DraftGeomUtils.fillet : Warning : edges are already tangent. Did nothing" + print("DraftGeomUtils.fillet : Warning : edges are already tangent. Did nothing") return rndEdges if newRadius[0]+newRadius[1] < dCentToCent or \ newRadius[0]-newRadius[1] > dCentToCent or \ newRadius[1]-newRadius[0] > dCentToCent : - print "DraftGeomUtils.fillet : Error : radius value ", r," is too high" + print("DraftGeomUtils.fillet : Error : radius value ", r," is too high") return rndEdges x = (dCentToCent**2+newRadius[0]**2-newRadius[1]**2)/(2*dCentToCent) @@ -1906,7 +1906,7 @@ def fillet(lEdges,r,chamfer=False): toCenter[i].scale(-1,-1,-1) delLength = arcRadius[i] * arcPt[-i].sub(arcCenter[i]).getAngle(toCenter[i]) if delLength > arcLength[i] : - print "DraftGeomUtils.fillet : Error : radius value ", r," is too high" + print("DraftGeomUtils.fillet : Error : radius value ", r," is too high") return rndEdges V = [arcPt[-i],lVertexes[-i].Point] arcAsEdge += [arcFrom2Pts(V[i-1],V[-i],arcCenter[i],arcAxis[i])] @@ -1967,7 +1967,7 @@ def getCircleFromSpline(edge): c = i[0] r = (p1.sub(c)).Length circle = Part.makeCircle(r,c,n) - #print circle.Curve + #print(circle.Curve) return circle def curvetowire(obj,steps): @@ -2021,7 +2021,7 @@ def cleanProjection(shape,tessellate=True,seglength=.05): else: newedges.append(e) except: - print "Debug: error cleaning edge ",e + print("Debug: error cleaning edge ",e) return Part.makeCompound(newedges) def curvetosegment(curve,seglen): @@ -2052,7 +2052,7 @@ def tessellateProjection(shape,seglen): else: newedges.append(e) except: - print "Debug: error cleaning edge ",e + print("Debug: error cleaning edge ",e) return Part.makeCompound(newedges) # circle functions ********************************************************* @@ -2382,7 +2382,7 @@ def outerSoddyCircle(circle1, circle2, circle3): X = -z.real Y = -z.imag - print "Outer Soddy circle: " + str(X) + " " + str(Y) + "\n" # Debug + print("Outer Soddy circle: " + str(X) + " " + str(Y) + "\n") # Debug # The Radius of the outer soddy circle can also be calculated with the following formula: # radiusOuter = abs(r1*r2*r3 / (r1*r2 + r1*r3 + r2*r3 - 2 * math.sqrt(r1*r2*r3 * (r1+r2+r3)))) @@ -2390,7 +2390,7 @@ def outerSoddyCircle(circle1, circle2, circle3): return circ else: - print "debug: outerSoddyCircle bad parameters!\n" + print("debug: outerSoddyCircle bad parameters!\n") # FreeCAD.Console.PrintMessage("debug: outerSoddyCircle bad parameters!\n") return None @@ -2434,7 +2434,7 @@ def innerSoddyCircle(circle1, circle2, circle3): X = z.real Y = z.imag - print "Outer Soddy circle: " + str(X) + " " + str(Y) + "\n" # Debug + print("Outer Soddy circle: " + str(X) + " " + str(Y) + "\n") # Debug # The Radius of the inner soddy circle can also be calculated with the following formula: # radiusInner = abs(r1*r2*r3 / (r1*r2 + r1*r3 + r2*r3 + 2 * math.sqrt(r1*r2*r3 * (r1+r2+r3)))) @@ -2442,7 +2442,7 @@ def innerSoddyCircle(circle1, circle2, circle3): return circ else: - print "debug: innerSoddyCircle bad parameters!\n" + print("debug: innerSoddyCircle bad parameters!\n") # FreeCAD.Console.PrintMessage("debug: innerSoddyCircle bad parameters!\n") return None @@ -2472,10 +2472,10 @@ def circleFrom3CircleTangents(circle1, circle2, circle3): r2 = circle2.Curve.Radius r3 = circle3.Curve.Radius outerSoddy = outerSoddyCircle(circle1, circle2, circle3) -# print str(outerSoddy) + "\n" # Debug +# print(str(outerSoddy) + "\n") # Debug innerSoddy = innerSoddyCircle(circle1, circle2, circle3) -# print str(innerSoddy) + "\n" # Debug +# print(str(innerSoddy) + "\n") # Debug circles = [] if outerSoddy: @@ -2495,7 +2495,7 @@ def circleFrom3CircleTangents(circle1, circle2, circle3): return None else: - print "debug: circleFrom3CircleTangents bad parameters!\n" + print("debug: circleFrom3CircleTangents bad parameters!\n") # FreeCAD.Console.PrintMessage("debug: circleFrom3CircleTangents bad parameters!\n") return None @@ -2593,7 +2593,7 @@ def findHomotheticCenterOfCircles(circle1, circle2): return None else: - print "debug: findHomotheticCenterOfCircles bad parameters!\n" + print("debug: findHomotheticCenterOfCircles bad parameters!\n") FreeCAD.Console.PrintMessage("debug: findHomotheticCenterOfCirclescleFrom3tan bad parameters!\n") return None @@ -2644,7 +2644,7 @@ def findRadicalAxis(circle1, circle2): else: return None else: - print "debug: findRadicalAxis bad parameters!\n" + print("debug: findRadicalAxis bad parameters!\n") FreeCAD.Console.PrintMessage("debug: findRadicalAxis bad parameters!\n") return None @@ -2678,7 +2678,7 @@ def findRadicalCenter(circle1, circle2, circle3): # No radical center could be calculated. return None else: - print "debug: findRadicalCenter bad parameters!\n" + print("debug: findRadicalCenter bad parameters!\n") FreeCAD.Console.PrintMessage("debug: findRadicalCenter bad parameters!\n") return None @@ -2714,7 +2714,7 @@ def pointInversion(circle, point): return invPoint else: - print "debug: pointInversion bad parameters!\n" + print("debug: pointInversion bad parameters!\n") FreeCAD.Console.PrintMessage("debug: pointInversion bad parameters!\n") return None @@ -2736,7 +2736,7 @@ def polarInversion(circle, edge): return inversionPole else: - print "debug: circleInversionPole bad parameters!\n" + print("debug: circleInversionPole bad parameters!\n") FreeCAD.Console.PrintMessage("debug: circleInversionPole bad parameters!\n") return None @@ -2761,7 +2761,7 @@ def circleInversion(circle, circle2): return Part.Circle(invCen2, norm, DraftVecUtils.dist(invCen2, invPointOnCircle2)) else: - print "debug: circleInversion bad parameters!\n" + print("debug: circleInversion bad parameters!\n") FreeCAD.Console.PrintMessage("debug: circleInversion bad parameters!\n") return None diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index ae7aa71ac..7684b9848 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -50,10 +50,10 @@ class todo: @staticmethod def doTasks(): - # print "debug: doing delayed tasks: commitlist: ",todo.commitlist," itinerary: ",todo.itinerary + # print("debug: doing delayed tasks: commitlist: ",todo.commitlist," itinerary: ",todo.itinerary) for f, arg in todo.itinerary: try: - # print "debug: executing",f + # print("debug: executing",f) if arg: f(arg) else: @@ -64,7 +64,7 @@ class todo: todo.itinerary = [] if todo.commitlist: for name,func in todo.commitlist: - #print "debug: committing ",str(name) + #print("debug: committing ",str(name)) try: name = str(name) FreeCAD.ActiveDocument.openTransaction(name) @@ -84,14 +84,14 @@ class todo: @staticmethod def delay (f, arg): - # print "debug: delaying",f + # print("debug: delaying",f) if todo.itinerary == []: QtCore.QTimer.singleShot(0, todo.doTasks) todo.itinerary.append((f,arg)) @staticmethod def delayCommit (cl): - # print "debug: delaying commit",cl + # print("debug: delaying commit",cl) QtCore.QTimer.singleShot(0, todo.doTasks) todo.commitlist = cl @@ -214,7 +214,7 @@ class DraftToolBar: self.cancel = None self.pointcallback = None self.taskmode = Draft.getParam("UiMode",1) - #print "taskmode: ",str(self.taskmode) + #print("taskmode: ",str(self.taskmode)) self.paramcolor = Draft.getParam("color",255)>>8 self.color = QtGui.QColor(self.paramcolor) self.facecolor = QtGui.QColor(204,204,204) @@ -1138,13 +1138,13 @@ class DraftToolBar: last = self.sourceCmd.node[0] else: last = self.sourceCmd.node[-1] - #print "last:",last + #print("last:",last) v = FreeCAD.Vector(numx,numy,numz) - #print "orig:",v + #print("orig:",v) if FreeCAD.DraftWorkingPlane: v = FreeCAD.Vector(numx,numy,numz) v = FreeCAD.DraftWorkingPlane.getGlobalRot(v) - #print "rotated:",v + #print("rotated:",v) numx = last.x + v.x numy = last.y + v.y numz = last.z + v.z @@ -1175,7 +1175,7 @@ class DraftToolBar: if self.sourceCmd: if (self.labelSString.isVisible()): if self.SStringValue.text(): -# print "debug: D_G DraftToolBar.validateSString type(SStringValue.text): " str(type(self.SStringValue.text)) + #print("debug: D_G DraftToolBar.validateSString type(SStringValue.text): " str(type(self.SStringValue.text))) #self.sourceCmd.validSString(str(self.SStringValue.text())) # QString to QByteArray to PyString self.sourceCmd.validSString(self.SStringValue.text()) # PySide returns Unicode from QString else: @@ -1194,15 +1194,15 @@ class DraftToolBar: dialogCaption, dialogDir, dialogFilter) - # print fname + # print(fname) #fname = str(fname.toUtf8()) # QString to PyString fname = fname[0].decode("utf8") -# print "debug: D_G DraftToolBar.pickFile type(fname): " str(type(fname)) +# print("debug: D_G DraftToolBar.pickFile type(fname): " str(type(fname))) except Exception as e: FreeCAD.Console.PrintMessage("DraftGui.pickFile: unable to select a font file.") - print type(e) - print e.args + print(type(e)) + print(e.args) else: if fname: self.FFileValue.setText(fname) @@ -1444,7 +1444,8 @@ class DraftToolBar: r = color.red()/255.0 g = color.green()/255.0 b = color.blue()/255.0 - else: print "draft: error: couldn't get a color for ",type," type." + else: + print("draft: error: couldn't get a color for ",type," type.") if rgb: return("rgb("+str(int(r*255))+","+str(int(g*255))+","+str(int(b*255))+")") else: @@ -1545,13 +1546,13 @@ class DraftToolBar: self.delButton.setChecked(False) def setRadiusValue(self,val,unit=None): - #print "DEBUG: setRadiusValue val: ", val, " unit: ", unit - if not isinstance(val, (int, long, float)): #??some code passes strings or ??? + #print("DEBUG: setRadiusValue val: ", val, " unit: ", unit) + if not isinstance(val, (int, float)): #??some code passes strings or ??? t = val elif unit: t= displayExternal(val,self.DECIMALS, unit) else: - print "Error: setRadiusValue called for number without Dimension" + print("Error: setRadiusValue called for number without Dimension") t = displayExternal(val,self.DECIMALS, None) self.radiusValue.setText(t) self.radiusValue.setFocus() @@ -1667,7 +1668,7 @@ class DraftToolBar: def changeEvent(self, event): if event.type() == QtCore.QEvent.LanguageChange: - #print "Language changed!" + #print("Language changed!") self.ui.retranslateUi(self) def Activated(self): diff --git a/src/Mod/Draft/DraftSnap.py b/src/Mod/Draft/DraftSnap.py index 07a2b0b61..37d47761c 100644 --- a/src/Mod/Draft/DraftSnap.py +++ b/src/Mod/Draft/DraftSnap.py @@ -164,7 +164,7 @@ class Snapper: elif isinstance(screenpos,coin.SbVec2s): screenpos = tuple(screenpos.getValue()) elif not isinstance(screenpos,tuple): - print "snap needs valid screen position (list, tuple or sbvec2s)" + print("snap needs valid screen position (list, tuple or sbvec2s)") return None # setup trackers if needed @@ -366,7 +366,7 @@ class Snapper: for snap in snaps: if (not snap) or (snap[0] == None): pass - #print "debug: Snapper: invalid snap point: ",snaps + #print("debug: Snapper: invalid snap point: ",snaps) else: delta = snap[0].sub(origin) if delta.Length < shortest: @@ -1078,7 +1078,7 @@ class Snapper: self.masterbutton.setChecked(True) QtCore.QObject.connect(self.masterbutton,QtCore.SIGNAL("toggled(bool)"),self.toggle) self.toolbar.addWidget(self.masterbutton) - for c,i in self.cursors.iteritems(): + for c,i in self.cursors.items(): if i: b = QtGui.QPushButton(None) b.setIcon(QtGui.QIcon(i)) @@ -1225,5 +1225,5 @@ if not hasattr(FreeCADGui,"Snapper"): if not hasattr(FreeCAD,"DraftWorkingPlane"): import WorkingPlane, Draft_rc FreeCAD.DraftWorkingPlane = WorkingPlane.plane() - #print FreeCAD.DraftWorkingPlane + #print(FreeCAD.DraftWorkingPlane) FreeCADGui.addIconPath(":/icons") diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py index a13a11076..857e23a25 100644 --- a/src/Mod/Draft/DraftTools.py +++ b/src/Mod/Draft/DraftTools.py @@ -269,7 +269,6 @@ class DraftTool: def commit(self,name,func): "stores actions to be committed to the FreeCAD document" - # print "committing" self.commitList.append((name,func)) def getStrings(self,addrot=None): @@ -670,7 +669,7 @@ class BSpline(Line): ['points='+pts, 'Draft.makeBSpline(points,closed='+str(closed)+',face='+fil+',support='+sup+')']) except: - print "Draft: error delaying commit" + print("Draft: error delaying commit") Creator.finish(self) if self.ui: if self.ui.continueMode: @@ -773,7 +772,7 @@ class BezCurve(Line): ['points='+pts, 'Draft.makeBezCurve(points,closed='+str(closed)+',support='+sup+')']) except: - print "Draft: error delaying commit" + print("Draft: error delaying commit") Creator.finish(self) if self.ui: if self.ui.continueMode: @@ -908,7 +907,7 @@ class Rectangle(Creator): 'pl.Base = '+DraftVecUtils.toString(p1), 'Draft.makeRectangle(length='+str(length)+',height='+str(height)+',placement=pl,face='+fil+',support='+sup+')']) except: - print "Draft: error delaying commit" + print("Draft: error delaying commit") self.finish(cont=True) def action(self,arg): @@ -1166,7 +1165,7 @@ class Arc(Creator): 'pl.Base='+DraftVecUtils.toString(self.center), 'Draft.makeCircle(radius='+str(self.rad)+',placement=pl,face='+fil+',support='+sup+')']) except: - print "Draft: error delaying commit" + print("Draft: error delaying commit") else: sta = math.degrees(self.firstangle) end = math.degrees(self.firstangle+self.angle) @@ -1192,7 +1191,7 @@ class Arc(Creator): 'pl.Base='+DraftVecUtils.toString(self.center), 'Draft.makeCircle(radius='+str(self.rad)+',placement=pl,face='+fil+',startangle='+str(sta)+',endangle='+str(end)+',support='+sup+')']) except: - print "Draft: error delaying commit" + print("Draft: error delaying commit") self.finish(cont=True) def numericInput(self,numx,numy,numz): @@ -1518,7 +1517,7 @@ class Ellipse(Creator): 'pl.Base = '+DraftVecUtils.toString(center), 'Draft.makeEllipse('+str(r1)+','+str(r2)+',placement=pl,face='+fil+',support='+sup+')']) except: - print "Draft: Error: Unable to create object." + print("Draft: Error: Unable to create object.") self.finish(cont=True) def action(self,arg): @@ -1598,7 +1597,7 @@ class Text(Creator): for l in self.text: if len(tx) > 1: tx += ',' - tx += '"'+str(unicode(l).encode("utf8"))+'"' + tx += '"'+str(unicode(l).encode("utf8"))+'"' #Python3 no more unicode tx += ']' FreeCADGui.addModule("Draft") self.commit(translate("draft","Create Text"), @@ -1843,7 +1842,7 @@ class Dimension(Creator): if (not self.node) and (not self.support): getSupport(arg) if (hasMod(arg,MODALT) or self.selectmode) and (len(self.node)<3): - #print "snapped: ",self.info + #print("snapped: ",self.info) if self.info: ob = self.doc.getObject(self.info['Object']) if 'Edge' in self.info['Component']: @@ -1878,7 +1877,7 @@ class Dimension(Creator): self.node[3], True,True) if c: - #print "centers:",c + #print("centers:",c) self.center = c[0] self.arctrack.setCenter(self.center) self.arctrack.on() @@ -1894,7 +1893,7 @@ class Dimension(Creator): else: self.node.append(self.point) self.selectmode = False - #print "node",self.node + #print("node",self.node) self.dimtrack.update(self.node) if (len(self.node) == 2): self.point2 = self.node[1] @@ -1959,18 +1958,18 @@ class ShapeString(Creator): def createObject(self): "creates object in the current doc" - #print "debug: D_T ShapeString.createObject type(self.SString): " str(type(self.SString)) + #print("debug: D_T ShapeString.createObject type(self.SString): " str(type(self.SString))) dquote = '"' - if type(self.SString) == unicode: + if type(self.SString) == unicode: # Python3: no more unicode String = 'u' + dquote + self.SString.encode('unicode_escape') + dquote else: String = dquote + self.SString + dquote Size = str(self.SSSize) # numbers are ascii so this should always work Tracking = str(self.SSTrack) # numbers are ascii so this should always work FFile = dquote + self.FFile + dquote -# print "debug: D_T ShapeString.createObject type(String): " str(type(String)) -# print "debug: D_T ShapeString.createObject type(FFile): " str(type(FFile)) +# print("debug: D_T ShapeString.createObject type(String): " str(type(String))) +# print("debug: D_T ShapeString.createObject type(FFile): " str(type(FFile))) try: qr,sup,points,fil = self.getStrings() @@ -2529,7 +2528,7 @@ class Offset(Modifier): if hasMod(arg,MODALT) or self.ui.isCopy.isChecked(): copymode = True FreeCADGui.addModule("Draft") if self.npts: - print "offset:npts=",self.npts + print("offset:npts=",self.npts) self.commit(translate("draft","Offset"), ['Draft.offset(FreeCAD.ActiveDocument.'+self.sel.Name+','+DraftVecUtils.toString(self.npts)+',copy='+str(copymode)+')', 'FreeCAD.ActiveDocument.recompute()']) @@ -2837,7 +2836,7 @@ class Trimex(Modifier): self.ui.labelRadius.setText("Angle") dist = math.degrees(-ang2) # if ang1 > ang2: ang1,ang2 = ang2,ang1 - #print "last calculated:",math.degrees(-ang1),math.degrees(-ang2) + #print("last calculated:",math.degrees(-ang1),math.degrees(-ang2)) ghost.setEndAngle(-ang2) ghost.setStartAngle(-ang1) ghost.setCenter(center) @@ -2855,9 +2854,11 @@ class Trimex(Modifier): ghost.on() # resetting the visible edges - if not reverse: list = range(npoint+1,len(self.edges)) - else: list = range(npoint-1,-1,-1) - for i in list: + if not reverse: + li = list(range(npoint+1,len(self.edges))) + else: + li = list(range(npoint-1,-1,-1)) + for i in li: edge = self.edges[i] ghost = self.ghost[i] if DraftGeomUtils.geomType(edge) == "Line": @@ -2882,7 +2883,7 @@ class Trimex(Modifier): "trims the actual object" if self.extrudeMode: delta = self.extrude(self.shift,real=True) - #print "delta",delta + #print("delta",delta) self.doc.openTransaction("Extrude") obj = Draft.extrude(self.obj,delta) self.doc.commitTransaction() @@ -2928,8 +2929,8 @@ class Trimex(Modifier): self.obj.Z1 = p[0].z elif Draft.getType(self.obj) == "Circle": angles = self.ghost[0].getAngles() - #print "original",self.obj.FirstAngle," ",self.obj.LastAngle - #print "new",angles + #print("original",self.obj.FirstAngle," ",self.obj.LastAngle) + #print("new",angles) if angles[0] > angles[1]: angles = (angles[1],angles[0]) self.obj.FirstAngle = angles[0] self.obj.LastAngle = angles[1] @@ -3930,7 +3931,7 @@ class Shape2DView(Modifier): for e in s.SubElementNames: if "Face" in e: faces.append(int(e[4:])-1) - #print objs,faces + #print(objs,faces) if len(objs) == 1: if faces: Draft.makeShape2DView(objs[0],facenumbers=faces) @@ -4041,7 +4042,7 @@ class PathArray(Modifier): if self.ui: self.ui.selectUi() msg(translate("draft", "Please select base and path objects\n")) -# print "Please select base and path objects" +# print("Please select base and path objects") self.call = self.view.addEventCallback("SoEvent",selectObject) else: self.proceed() diff --git a/src/Mod/Draft/DraftTrackers.py b/src/Mod/Draft/DraftTrackers.py index 90de53356..100143d28 100644 --- a/src/Mod/Draft/DraftTrackers.py +++ b/src/Mod/Draft/DraftTrackers.py @@ -468,7 +468,7 @@ class arcTracker(Tracker): center = Vector(c[0],c[1],c[2]) rad = pt.sub(center) a = DraftVecUtils.angle(rad,self.basevector,self.normal) - #print a + #print(a) return(a) def getAngles(self): @@ -600,7 +600,7 @@ class ghostTracker(Tracker): sep.addChild(coinobj.getChildren()[1]) # sep.addChild(coinobj) except: - print "Error retrieving coin node" + print("Error retrieving coin node") return sep class editTracker(Tracker): diff --git a/src/Mod/Draft/DraftVecUtils.py b/src/Mod/Draft/DraftVecUtils.py index a2c4f5603..09ba7e0e7 100644 --- a/src/Mod/Draft/DraftVecUtils.py +++ b/src/Mod/Draft/DraftVecUtils.py @@ -75,12 +75,12 @@ def equals(u,v): def scale(u,scalar): "scale(Vector,Float) - scales (multiplies) a vector by a factor" - typecheck ([(u,Vector), (scalar,(int,long,float))], "scale") + typecheck ([(u,Vector), (scalar,(int,float))], "scale") return Vector(u.x*scalar, u.y*scalar, u.z*scalar) def scaleTo(u,l): "scaleTo(Vector,length) - scales a vector to a given length" - typecheck ([(u,Vector),(l,(int,long,float))], "scaleTo") + typecheck ([(u,Vector),(l,(int,float))], "scaleTo") if u.Length == 0: return Vector(u) else: @@ -137,7 +137,7 @@ def rotate(u,angle,axis=Vector(0,0,1)): '''rotate(Vector,Float,axis=Vector): rotates the first Vector around the given axis, at the given angle. If axis is omitted, the rotation is made on the xy plane.''' - typecheck ([(u,Vector), (angle,(int,long,float)), (axis,Vector)], "rotate") + typecheck ([(u,Vector), (angle,(int,float)), (axis,Vector)], "rotate") if angle == 0: return u diff --git a/src/Mod/Draft/InitGui.py b/src/Mod/Draft/InitGui.py index ee54514d7..1afa3dcdd 100644 --- a/src/Mod/Draft/InitGui.py +++ b/src/Mod/Draft/InitGui.py @@ -100,7 +100,7 @@ class DraftWorkbench (Workbench): FreeCADGui.addLanguagePath(":/translations") FreeCADGui.addIconPath(":/icons") except Exception as inst: - print inst + print(inst) FreeCAD.Console.PrintError("Error: Initializing one or more of the Draft modules failed, Draft will not work as expected.\n") # setup menus diff --git a/src/Mod/Draft/importAirfoilDAT.py b/src/Mod/Draft/importAirfoilDAT.py index 10bba4bc2..1c4df55b1 100644 --- a/src/Mod/Draft/importAirfoilDAT.py +++ b/src/Mod/Draft/importAirfoilDAT.py @@ -41,7 +41,7 @@ def decodeName(name): try: decodedName = (name.decode("latin1")) except UnicodeDecodeError: - print "AirfoilDAT: error: couldn't determine character encoding" + print("AirfoilDAT: error: couldn't determine character encoding") decodedName = name return decodedName @@ -97,7 +97,7 @@ def process(doc,filename): if len(coords) < 3: - print 'Did not find enough coordinates\n' + print('Did not find enough coordinates\n') return # sometimes coords are divided in upper an lower side diff --git a/src/Mod/Draft/importDWG.py b/src/Mod/Draft/importDWG.py index 0d281c907..c9272acba 100644 --- a/src/Mod/Draft/importDWG.py +++ b/src/Mod/Draft/importDWG.py @@ -91,15 +91,15 @@ def convertToDxf(dwgfilename): outdir = tempfile.mkdtemp() basename = os.path.basename(dwgfilename) cmdline = '"%s" "%s" "%s" "ACAD2000" "DXF" "0" "1" "%s"' % (teigha, indir, outdir, basename) - print "Converting: " + cmdline + print("Converting: " + cmdline) os.system(cmdline) result = outdir + os.sep + os.path.splitext(basename)[0] + ".dxf" if os.path.exists(result): - print "Conversion successful" + print("Conversion successful") return result else: - print "Error during DWG to DXF conversion. Try moving the DWG file to a directory path" - print "without spaces and non-english characters, or try saving to a lower DWG version" + print("Error during DWG to DXF conversion. Try moving the DWG file to a directory path") + print("without spaces and non-english characters, or try saving to a lower DWG version") return None def convertToDwg(dxffilename,dwgfilename): @@ -111,7 +111,7 @@ def convertToDwg(dxffilename,dwgfilename): outdir = os.path.dirname(dwgfilename) basename = os.path.basename(dxffilename) cmdline = '"%s" "%s" "%s" "ACAD2000" "DWG" "0" "1" "%s"' % (teigha, indir, outdir, basename) - print "converting " + cmdline + print("converting " + cmdline) os.system(cmdline) return dwgfilename return None diff --git a/src/Mod/Draft/importDXF.py b/src/Mod/Draft/importDXF.py index 0b88a8b93..00f845039 100644 --- a/src/Mod/Draft/importDXF.py +++ b/src/Mod/Draft/importDXF.py @@ -106,7 +106,7 @@ def decodeName(name): try: decodedName = (name.decode("latin1")) except UnicodeDecodeError: - print "dxf: error: couldn't determine character encoding" + print("dxf: error: couldn't determine character encoding") decodedName = name return decodedName @@ -114,17 +114,17 @@ def deformat(text): "removes weird formats in texts and wipes UTF characters" # remove ACAD string formatation #t = re.sub('{([^!}]([^}]|\n)*)}', '', text) - #print "input text: ",text + #print("input text: ",text) t = text.strip("{}") t = re.sub("\\\.*?;","",t) # replace UTF codes by utf chars sts = re.split("\\\\(U\+....)",t) ns = u"" for ss in sts: - #print ss, type(ss) + #print(ss, type(ss)) if ss.startswith("U+"): ucode = "0x"+ss[2:] - ns += unichr(eval(ucode)) + ns += unichr(eval(ucode)) #Python3 - unichr doesn't exist anymore else: try: ns += ss.decode("utf8") @@ -132,12 +132,12 @@ def deformat(text): try: ns += ss.decode("latin1") except UnicodeError: - print "unable to decode text: ",text + print("unable to decode text: ",text) t = ns # replace degrees, diameters chars t = re.sub('%%d','°',t) t = re.sub('%%c','Ø',t) - #print "output text: ",t + #print("output text: ",t) return t def locateLayer(wantedLayer,color=None): @@ -585,7 +585,7 @@ def drawSpline(spline,forceShape=False): return ob else: sp = Part.BSplineCurve() - # print knots + # print(knots) sp.interpolate(verts) sh = Part.Wire(sp.toShape()) if closed: @@ -602,9 +602,9 @@ def drawBlock(blockref,num=None,createObject=False): if blockref.name[0] == '*': return None if len(blockref.entities.data) == 0: - print "skipping empty block ",blockref.name + print("skipping empty block ",blockref.name) return None - #print "creating block ", blockref.name, " containing ", len(blockref.entities.data), " entities" + #print("creating block ", blockref.name, " containing ", len(blockref.entities.data), " entities") shapes = [] for line in blockref.entities.get_type('line'): s = drawLine(line,forceShape=True) @@ -622,7 +622,7 @@ def drawBlock(blockref,num=None,createObject=False): s = drawCircle(circle,forceShape=True) if s: shapes.append(s) for insert in blockref.entities.get_type('insert'): - #print "insert ",insert," in block ",insert.block[0] + #print("insert ",insert," in block ",insert.block[0]) if dxfStarBlocks or insert.block[0] != '*': s = drawInsert(insert) if s: shapes.append(s) @@ -639,7 +639,7 @@ def drawBlock(blockref,num=None,createObject=False): for text in blockref.entities.get_type('mtext'): if dxfImportTexts: if dxfImportLayouts or (not rawValue(text,67)): - print "adding block text",text.value, " from ",blockref + print("adding block text",text.value, " from ",blockref) addText(text) try: shape = Part.makeCompound(shapes) except Part.OCCError: warn(blockref) @@ -659,7 +659,7 @@ def drawInsert(insert,num=None,clone=False): for a in attrs: addText(a,attrib=True) if clone: - if blockobjects.has_key(insert.block): + if insert.block in blockobjects: newob = Draft.clone(blockobjects[insert.block]) tsf = FreeCAD.Matrix() rot = math.radians(insert.rotation) @@ -674,7 +674,7 @@ def drawInsert(insert,num=None,clone=False): else: shape = None else: - if blockshapes.has_key(insert): + if insert in blockshapes: shape = blockshapes[insert.block].copy() else: shape = None @@ -799,7 +799,7 @@ def addText(text,attrib=False): yv = ax.cross(xv) if text.alignment in [1,2,3]: sup = DraftVecUtils.scaleTo(yv,fsize/TEXTSCALING).negative() - print ax,sup + #print(ax,sup) pos = pos.add(sup) elif text.alignment in [4,5,6]: sup = DraftVecUtils.scaleTo(yv,fsize/(2*TEXTSCALING)).negative() @@ -1254,8 +1254,8 @@ def processdxf(document,filename,getShapes=False): # make blocks, if any if dxfMakeBlocks: - print "creating layerblocks..." - for k,l in layerBlocks.iteritems(): + print("creating layerblocks...") + for k,l in layerBlocks.items(): shape = drawLayerBlock(l) if shape: newob = addObject(shape,k) @@ -1263,24 +1263,25 @@ def processdxf(document,filename,getShapes=False): # hide block objects, if any - for k,o in blockobjects.iteritems(): + for k,o in blockobjects.items(): if o.ViewObject: o.ViewObject.hide() del blockobjects # finishing - print "done processing" + print("done processing") doc.recompute() FreeCAD.Console.PrintMessage("successfully imported "+filename+"\n") - if badobjects: print "dxf: ",len(badobjects)," objects were not imported" + if badobjects: + print("dxf: ",len(badobjects)," objects were not imported") del doc del blockshapes def warn(dxfobject,num=None): "outputs a warning if a dxf object couldn't be imported" - print "dxf: couldn't import ", dxfobject, " (",num,")" + print("dxf: couldn't import ", dxfobject, " (",num,")") badobjects.append(dxfobject) def open(filename): @@ -1321,7 +1322,7 @@ def projectShape(shape,direction): try: groups = Drawing.projectEx(shape,direction) except OCCError: - print "unable to project shape on direction ",direction + print("unable to project shape on direction ",direction) return shape else: for g in groups[0:5]: @@ -1366,15 +1367,15 @@ def getArcData(edge): # method 2 - check the midpoint - not reliable either #ve3 = DraftGeomUtils.findMidpoint(edge) #ang3 = -math.degrees(DraftVecUtils.angle(ve3.sub(ce))) - #print "edge ",edge.hashCode()," data ",ang1, " , ",ang2," , ", ang3 + #print ("edge ",edge.hashCode()," data ",ang1, " , ",ang2," , ", ang3) #if (ang3 < ang1) and (ang2 < ang3): - # print "inverting, case1" + # print ("inverting, case1") # ang1, ang2 = ang2, ang1 #elif (ang3 > ang1) and (ang3 > ang2): - # print "inverting, case2" + # print ("inverting, case2") # ang1, ang2 = ang2, ang1 #elif (ang3 < ang1) and (ang3 < ang2): - # print "inverting, case3" + # print ("inverting, case3") # ang1, ang2 = ang2, ang1 return DraftVecUtils.tup(ce), radius, ang1, ang2 @@ -1392,7 +1393,7 @@ def getSplineSegs(edge): nbsegs = int(math.ceil(edge.Length/seglength)) step = (edge.LastParameter-edge.FirstParameter)/nbsegs for nv in range(1,nbsegs): - #print "value at",nv*step,"=",edge.valueAt(nv*step) + #print("value at",nv*step,"=",edge.valueAt(nv*step)) v = edge.valueAt(edge.FirstParameter+(nv*step)) points.append(v) points.append(edge.valueAt(edge.LastParameter)) @@ -1409,7 +1410,7 @@ def getWire(wire,nospline=False,lw=True): return ((v.x,v.y,v.z),None,[None,None],b) edges = DraftGeomUtils.sortEdges(wire.Edges) points = [] - # print "processing wire ",wire.Edges + # print("processing wire ",wire.Edges) for edge in edges: v1 = edge.Vertexes[0].Point if DraftGeomUtils.geomType(edge) == "Circle": @@ -1453,7 +1454,7 @@ def getWire(wire,nospline=False,lw=True): if not DraftGeomUtils.isReallyClosed(wire): v = edges[-1].Vertexes[-1].Point points.append(fmt(v)) - # print "wire verts: ",points + # print("wire verts: ",points) return points def getBlock(sh,obj,lwPoly=False): @@ -1495,7 +1496,7 @@ def writeShape(sh,ob,dxfobject,nospline=False,lwPoly=False): loneedges = [] for e in sh.Edges: if not(e.hashCode() in processededges): loneedges.append(e) - # print "lone edges ",loneedges + # print("lone edges ",loneedges) for edge in loneedges: if (DraftGeomUtils.geomType(edge) in ["BSplineCurve","BezierCurve"]): # splines if (len(edge.Vertexes) == 1) and (edge.Curve.isClosed()): @@ -1544,7 +1545,7 @@ def writeShape(sh,ob,dxfobject,nospline=False,lwPoly=False): ax = edge.Curve.Focus1.sub(edge.Curve.Center) major = DraftVecUtils.tup(DraftVecUtils.scaleTo(ax,edge.Curve.MajorRadius)) minor = edge.Curve.MinorRadius/edge.Curve.MajorRadius - # print "exporting ellipse: ",center,norm,start,end,major,minor + # print("exporting ellipse: ",center,norm,start,end,major,minor) dxfobject.append(dxfLibrary.Ellipse(center=center,majorAxis=major,normalAxis=norm, minorAxisRatio=minor,startParameter=start, endParameter=end, @@ -1563,14 +1564,14 @@ def writeShape(sh,ob,dxfobject,nospline=False,lwPoly=False): def writeMesh(ob,dxfobject): "export a shape as a polyface mesh" meshdata = ob.Shape.tessellate(0.5) - # print meshdata + # print(meshdata) points = [] faces = [] for p in meshdata[0]: points.append([p.x,p.y,p.z]) for f in meshdata[1]: faces.append([f[0]+1,f[1]+1,f[2]+1]) - # print len(points),len(faces) + # print(len(points),len(faces)) dxfobject.append(dxfLibrary.PolyLine([points,faces], [0.0,0.0,0.0], 64, color=getACI(ob), layer=getGroup(ob))) @@ -1599,7 +1600,7 @@ def export(objectslist,filename,nospline=False,lwPoly=False): # other cases, treat edges dxf = dxfLibrary.Drawing() for ob in exportList: - print "processing ",ob.Name + print("processing ",ob.Name) if ob.isDerivedFrom("Part::Feature"): if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft").GetBool("dxfmesh"): sh = None @@ -1687,7 +1688,7 @@ def exportPage(page,filename): template = template.replace(editables[i],values[i]) else: # dummy default template - print "DXF version of the template not found. Creating a default empty template." + print("DXF version of the template not found. Creating a default empty template.") template = "999\nFreeCAD DXF exporter v"+FreeCAD.Version()[0]+"."+FreeCAD.Version()[1]+"-"+FreeCAD.Version()[2]+"\n" template += "0\nSECTION\n2\nHEADER\n9\n$ACADVER\n1\nAC1009\n0\nENDSEC\n" template += "0\nSECTION\n2\nBLOCKS\n$blocks\n0\nENDSEC\n" @@ -1765,7 +1766,7 @@ def getViewDXF(view): dxfhandle += 1 else: - print "Unable to get DXF representation from view: ",view.Label + print("Unable to get DXF representation from view: ",view.Label) return block,insert diff --git a/src/Mod/Draft/importOCA.py b/src/Mod/Draft/importOCA.py index 14e9fae56..e3c4a51cd 100644 --- a/src/Mod/Draft/importOCA.py +++ b/src/Mod/Draft/importOCA.py @@ -44,7 +44,7 @@ params = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft") def getpoint(data): "turns an OCA point definition into a FreeCAD Vector" - print "found point ",data + print("found point ",data) if (len(data) == 3): return Vector(float(data[0]),float(data[1]),float(data[2])) elif (data[0] == "P") and (len(data) == 4): @@ -69,7 +69,7 @@ def getpoint(data): def getarea(data): "turns an OCA area definition into a FreeCAD Part Wire" - print "found area ",data + print("found area ",data) if (data[0] == "S"): if (data[1] == "POL"): pts = data[2:] @@ -82,7 +82,7 @@ def getarea(data): def getarc(data): "turns an OCA arc definition into a FreeCAD Part Edge" - print "found arc ", data + print("found arc ", data) c = None if (data[0] == "ARC"): # 3-points arc @@ -126,7 +126,7 @@ def getarc(data): if c: return c.toShape() def getline(data): - print "found line ", data + print("found line ", data) "turns an OCA line definition into a FreeCAD Part Edge" verts = [] for p in range(len(data)): @@ -139,7 +139,7 @@ def getline(data): def gettranslation(data): "retrieves a transformation vector" - print "found translation ",data + print("found translation ",data) if (data[0] == "Z"): return Vector(0,0,float(data[1])) elif (data[0] == "Y"): @@ -214,7 +214,7 @@ def decodeName(name): try: decodedName = (name.decode("latin1")) except UnicodeDecodeError: - print "oca: error: couldn't determine character encoding" + print("oca: error: couldn't determine character encoding") decodedName = name return decodedName @@ -249,7 +249,7 @@ def export(exportList,filename): for e in ob.Shape.Edges: edges.append(e) if not (edges or faces): - print "oca: found no data to export" + print("oca: found no data to export") return # writing file diff --git a/src/Mod/Draft/importSVG.py b/src/Mod/Draft/importSVG.py index dd180b95c..f9f48bd8a 100644 --- a/src/Mod/Draft/importSVG.py +++ b/src/Mod/Draft/importSVG.py @@ -201,7 +201,7 @@ svgcolors = { 'OldLace': (253, 245, 230) } svgcolorslower = dict((key.lower(),value) for key,value in \ - svgcolors.items()) + list(svgcolors.items())) def getcolor(color): "checks if the given string is a RGB value, or if it is a named color. returns 1-based RGBA tuple." @@ -411,7 +411,7 @@ class svgHandler(xml.sax.ContentHandler): FreeCAD.Console.PrintMessage('existing group transform: %s\n'%(str(self.grouptransform))) data = {} - for (keyword,content) in attrs.items(): + for (keyword,content) in list(attrs.items()): #print keyword,content content = content.replace(',',' ') content = content.split() @@ -670,9 +670,9 @@ class svgHandler(xml.sax.ContentHandler): (d =="S" or d == "s"): smooth = (d == 'S' or d == 's') if smooth: - piter = zip(pointlist[2::4],pointlist[3::4],pointlist[0::4],pointlist[1::4],pointlist[2::4],pointlist[3::4]) + piter = list(zip(pointlist[2::4],pointlist[3::4],pointlist[0::4],pointlist[1::4],pointlist[2::4],pointlist[3::4])) else: - piter = zip(pointlist[0::6],pointlist[1::6],pointlist[2::6],pointlist[3::6],pointlist[4::6],pointlist[5::6]) + piter = list(zip(pointlist[0::6],pointlist[1::6],pointlist[2::6],pointlist[3::6],pointlist[4::6],pointlist[5::6])) for p1x,p1y,p2x,p2y,x,y in piter: if smooth: if lastpole is not None and lastpole[0]=='cubic': @@ -714,9 +714,9 @@ class svgHandler(xml.sax.ContentHandler): (d =="T" or d == "t"): smooth = (d == 'T' or d == 't') if smooth: - piter = zip(pointlist[1::2],pointlist[1::2],pointlist[0::2],pointlist[1::2]) + piter = list(zip(pointlist[1::2],pointlist[1::2],pointlist[0::2],pointlist[1::2])) else: - piter = zip(pointlist[0::4],pointlist[1::4],pointlist[2::4],pointlist[3::4]) + piter = list(zip(pointlist[0::4],pointlist[1::4],pointlist[2::4],pointlist[3::4])) for px,py,x,y in piter: if smooth: if lastpole is not None and lastpole[0]=='quadratic':