diff --git a/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py b/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py index 26ba2ab60..ae755c5e3 100644 --- a/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py +++ b/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py @@ -95,7 +95,7 @@ class Overlappingfaces(): if faceidx not in dict1: return curdepth+1 else: - #print dict1[faceidx],[(finddepth(dict1,childface,curdepth)) for childface in dict1[faceidx]] + #print(dict1[faceidx],[(finddepth(dict1,childface,curdepth)) for childface in dict1[faceidx]]) return max([(Overlappingfaces.finddepth(dict1,childface,curdepth+1)) for childface in dict1[faceidx]]) def findrootdepth(self): @@ -139,7 +139,7 @@ class Overlappingfaces(): def printtree(isinsidedict,facenum): def printtreechild(isinsidedict,facenum,parent): children=Overlappingfaces.directchildren(isinsidedict,parent) - print 'parent %d directchild %s' % (parent,children) + print('parent %d directchild %s' % (parent,children)) if children: subdict=isinsidedict.copy() del subdict[parent] @@ -206,22 +206,22 @@ class Overlappingfaces(): isinsidedict=self.isinsidedict.copy() finishedwith=[] while not all([Overlappingfaces.hasnoparentstatic(isinsidedict,fi) for fi in range(len(faces))]): - #print [(Overlappingfaces.hasnoparentstatic(isinsidedict,fi),\ - #Overlappingfaces.directchildren(isinsidedict,fi)) for fi in range(len(faces))] + #print([(Overlappingfaces.hasnoparentstatic(isinsidedict,fi),\ + #Overlappingfaces.directchildren(isinsidedict,fi)) for fi in range(len(faces))]) for fi in range(len(faces))[::-1]: directchildren = Overlappingfaces.directchildren(isinsidedict,fi) if not directchildren: continue elif len(directchildren) == 1: faces[fi]=faces[fi].cut(faces[directchildren[0]]) - #print fi,'-' ,directchildren[0], faces[fi],faces[directchildren[0]] + #print(fi,'-' ,directchildren[0], faces[fi],faces[directchildren[0]]) removefaces(directchildren) else: toolface=fusefaces([faces[tfi] for tfi in directchildren]) faces[fi]=faces[fi].cut(toolface) - #print fi, '- ()', directchildren, [faces[tfi] for tfi in directchildren] + #print(fi, '- ()', directchildren, [faces[tfi] for tfi in directchildren]) removefaces(directchildren) - #print fi,directchildren + #print(fi,directchildren) faces =[face for index,face in enumerate(faces) if index not in finishedwith] # return faces return fusefaces(faces) @@ -269,7 +269,7 @@ def findConnectedEdges(edgelist,eps=1e-6,debug=False): #we are finished for this edge debuglist.append(newedge) retlist.append([item[0] for item in newedge]) #strip off direction - #print debuglist + #print(debuglist) if debug: return retlist,debuglist else: @@ -319,7 +319,7 @@ def edgestowires(edgelist,eps=0.001): maxd,mind,outerd = endpointdistancedebuglist(debug) assert(maxd <= eps*2) # Assume the input to be broken if maxd < eps*2 and maxd > 0.000001: #OCC wont like it if maxd > 0.02: - print 'endpointdistance max:%f min:%f, ends:%f' %(maxd,mind,outerd) + print('endpointdistance max:%f min:%f, ends:%f' %(maxd,mind,outerd)) if True: tobeclosed = outerd < eps*2 @@ -424,7 +424,7 @@ def superWireReverse(debuglist,closed=False): from draftlibs.fcgeo import findMidpoint #workaround for Version 0.12 import Part #edges = sortEdges(edgeslist) - print debuglist + print(debuglist) newedges = [] for i in range(len(debuglist)): curr = debuglist[i] @@ -442,7 +442,7 @@ def superWireReverse(debuglist,closed=False): nexte = None else: nexte = debuglist[i+1] - print i,prev,curr,nexte + print(i,prev,curr,nexte) if prev: if curr[0].Vertexes[-1*(not curr[1])].Point == \ prev[0].Vertexes[-1*prev[1]].Point: @@ -462,16 +462,16 @@ def superWireReverse(debuglist,closed=False): else: p2 = curr[0].Vertexes[-1*(curr[1])].Point if isinstance(curr[0].Curve,(Part.LineSegment, Part.Line)): - print "line",p1,p2 + print("line",p1,p2) newedges.append(Part.LineSegment(p1,p2).toShape()) elif isinstance(curr[0].Curve,Part.Circle): p3 = findMidpoint(curr[0]) - 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 importDXFface(filename,layer=None,doc=None): @@ -489,7 +489,7 @@ def importDXFface(filename,layer=None,doc=None): groupobj=[go for go in layers if (not layer) or go.Label == layer] edges=[] if not groupobj: - raise ValueError, 'import of layer %s failed' % layer + raise ValueError('import of layer %s failed' % layer) for shapeobj in groupobj[0].Group: edges.extend(shapeobj.Shape.Edges) faces = edgestofaces(edges) diff --git a/src/Mod/OpenSCAD/OpenSCADCommands.py b/src/Mod/OpenSCAD/OpenSCADCommands.py index 1d51d956c..ce22e7203 100644 --- a/src/Mod/OpenSCAD/OpenSCADCommands.py +++ b/src/Mod/OpenSCAD/OpenSCADCommands.py @@ -308,7 +308,7 @@ class AddSCADTask: except OSError: pass - except OpenSCADUtils.OpenSCADError, e: + except OpenSCADUtils.OpenSCADError as e: FreeCAD.Console.PrintError(e.value) class OpenSCADMeshBooleanWidget(QtGui.QWidget): diff --git a/src/Mod/OpenSCAD/OpenSCADFeatures.py b/src/Mod/OpenSCAD/OpenSCADFeatures.py index 1874e27a0..50e38d555 100644 --- a/src/Mod/OpenSCAD/OpenSCADFeatures.py +++ b/src/Mod/OpenSCAD/OpenSCADFeatures.py @@ -396,7 +396,7 @@ class Twist: pipeshell.setSpineSupport(spine) pipeshell.add(wire) pipeshell.setAuxiliarySpine(auxspine,True,False) - print pipeshell.getStatus() + print(pipeshell.getStatus()) assert(pipeshell.isReady()) #fp.Shape=pipeshell.makeSolid() pipeshell.build() diff --git a/src/Mod/OpenSCAD/OpenSCADUtils.py b/src/Mod/OpenSCAD/OpenSCADUtils.py index 1785d430d..1fbe555ec 100644 --- a/src/Mod/OpenSCAD/OpenSCADUtils.py +++ b/src/Mod/OpenSCAD/OpenSCADUtils.py @@ -44,7 +44,7 @@ except AttributeError: try: import FreeCAD BaseError = FreeCAD.Base.FreeCADError -except ImportError,AttributeError: +except (ImportError, AttributeError): BaseError = RuntimeError class OpenSCADError(BaseError): diff --git a/src/Mod/OpenSCAD/exportCSG.py b/src/Mod/OpenSCAD/exportCSG.py index 1cc583a96..02ca79504 100644 --- a/src/Mod/OpenSCAD/exportCSG.py +++ b/src/Mod/OpenSCAD/exportCSG.py @@ -95,40 +95,40 @@ def shape2polyhedron(shape): def process_object(csg,ob): - print "Placement" - print "Pos : "+str(ob.Placement.Base) - print "axis : "+str(ob.Placement.Rotation.Axis) - print "angle : "+str(ob.Placement.Rotation.Angle) + print("Placement") + print("Pos : "+str(ob.Placement.Base)) + print("axis : "+str(ob.Placement.Rotation.Axis)) + print("angle : "+str(ob.Placement.Rotation.Angle)) if ob.TypeId == "Part::Sphere" : - print "Sphere Radius : "+str(ob.Radius) + print("Sphere Radius : "+str(ob.Radius)) check_multmatrix(csg,ob,0,0,0) csg.write("sphere($fn = 0, "+fafs+", r = "+str(ob.Radius)+");\n") elif ob.TypeId == "Part::Box" : - print "cube : ("+ str(ob.Length)+","+str(ob.Width)+","+str(ob.Height)+")" + print("cube : ("+ str(ob.Length)+","+str(ob.Width)+","+str(ob.Height)+")") mm = check_multmatrix(csg,ob,-ob.Length/2,-ob.Width/2,-ob.Height/2) csg.write("cube (size = ["+str(ob.Length.Value)+", "+str(ob.Width.Value)+", "+str(ob.Height.Value)+"], center = "+center(mm)+");\n") if mm == 1 : csg.write("}\n") elif ob.TypeId == "Part::Cylinder" : - print "cylinder : Height "+str(ob.Height)+ " Radius "+str(ob.Radius) + print("cylinder : Height "+str(ob.Height)+ " Radius "+str(ob.Radius)) mm = check_multmatrix(csg,ob,0,0,-ob.Height/2) csg.write("cylinder($fn = 0, "+fafs+", h = "+str(ob.Height.Value)+ ", r1 = "+str(ob.Radius.Value)+\ ", r2 = " + str(ob.Radius.Value) + ", center = "+center(mm)+");\n") if mm == 1 : csg.write("}\n") elif ob.TypeId == "Part::Cone" : - print "cone : Height "+str(ob.Height)+ " Radius1 "+str(ob.Radius1)+" Radius2 "+str(ob.Radius2) + print("cone : Height "+str(ob.Height)+ " Radius1 "+str(ob.Radius1)+" Radius2 "+str(ob.Radius2)) mm = check_multmatrix(csg,ob,0,0,-ob.Height/2) csg.write("cylinder($fn = 0, "+fafs+", h = "+str(ob.Height.Value)+ ", r1 = "+str(ob.Radius1.Value)+\ ", r2 = "+str(ob.Radius2.Value)+", center = "+center(mm)+");\n") if mm == 1 : csg.write("}\n") elif ob.TypeId == "Part::Torus" : - print "Torus" - print ob.Radius1 - print ob.Radius2 + print("Torus") + print(ob.Radius1) + print(ob.Radius2) if ob.Angle3 == 360.00 : mm = check_multmatrix(csg,ob,0,0,0) csg.write("rotate_extrude("+convexity+", $fn = 0, "+fafs+")\n") @@ -155,9 +155,9 @@ def process_object(csg,ob): if mm == 1: csg.write("}\n") elif ob.TypeId == "Part::Extrusion" : - print "Extrusion" - print ob.Base - print ob.Base.Name + print("Extrusion") + print(ob.Base) + print(ob.Base.Name) if ob.Base.isDerivedFrom('Part::Part2DObjectPython') and \ hasattr(ob.Base,'Proxy') and hasattr(ob.Base.Proxy,'TypeId'): ptype=ob.Base.Proxy.TypeId @@ -165,9 +165,9 @@ def process_object(csg,ob): f = str(ob.Base.FacesNumber) r = str(ob.Base.Radius) h = str(ob.Dir[2]) - print "Faces : " + f - print "Radius : " + r - print "Height : " + h + print("Faces : " + f) + print("Radius : " + r) + print("Height : " + h) mm = check_multmatrix(csg,ob,0,0,-float(h)/2) csg.write("cylinder($fn = "+f+", "+fafs+", h = "+h+", r1 = "+r+\ ", r2 = "+r+", center = "+center(mm)+");\n") @@ -176,16 +176,16 @@ def process_object(csg,ob): elif ptype == "Circle" : r = str(ob.Base.Radius) h = str(ob.Dir[2]) - print "Radius : " + r - print "Height : " + h + print("Radius : " + r) + print("Height : " + h) mm = check_multmatrix(csg,ob,0,0,-float(h)/2) csg.write("cylinder($fn = 0, "+fafs+", h = "+h+", r1 = "+r+\ ", r2 = "+r+", center = "+center(mm)+");\n") if mm == 1: csg.write("}\n") elif ptype == "Wire" : - print "Wire extrusion" - print ob.Base + print("Wire extrusion") + print(ob.Base) mm = check_multmatrix(csg,ob,0,0,0) csg.write("linear_extrude(height = "+str(ob.Dir[2])+", center = "+center(mm)+", "+convexity+", twist = 0, slices = 2, $fn = 0, "+fafs+")\n{\n") csg.write(vertexs2polygon(ob.Base.Shape.Vertexes)) @@ -202,42 +202,42 @@ def process_object(csg,ob): pass #There should be a fallback solution elif ob.TypeId == "Part::Cut" : - print "Cut" + print("Cut") csg.write("difference() {\n") process_object(csg,ob.Base) process_object(csg,ob.Tool) csg.write("}\n") elif ob.TypeId == "Part::Fuse" : - print "union" + print("union") csg.write("union() {\n") process_object(csg,ob.Base) process_object(csg,ob.Tool) csg.write("}\n") elif ob.TypeId == "Part::Common" : - print "intersection" + print("intersection") csg.write("intersection() {\n") process_object(csg,ob.Base) process_object(csg,ob.Tool) csg.write("}\n") elif ob.TypeId == "Part::MultiFuse" : - print "Multi Fuse / union" + print("Multi Fuse / union") csg.write("union() {\n") for subobj in ob.Shapes: process_object(csg,subobj) csg.write("}\n") elif ob.TypeId == "Part::MultiCommon" : - print "Multi Common / intersection" + print("Multi Common / intersection") csg.write("intersection() {\n") for subobj in ob.Shapes: process_object(csg,subobj) csg.write("}\n") elif ob.isDerivedFrom('Part::Feature') : - print "Part::Feature" + print("Part::Feature") mm = check_multmatrix(csg,ob,0,0,0) csg.write('%s\n' % shape2polyhedron(ob.Shape)) if mm == 1 : csg.write("}\n") @@ -246,21 +246,21 @@ def export(exportList,filename): "called when freecad exports a file" # process Objects - print "\nStart Export 0.1d\n" - print "Open Output File" + print("\nStart Export 0.1d\n") + print("Open Output File") csg = pythonopen(filename,'w') - print "Write Inital Output" + print("Write Inital Output") # Not sure if comments as per scad are allowed in csg file csg.write("// CSG file generated from FreeCAD %s\n" % \ '.'.join(FreeCAD.Version()[0:3])) #write initial group statements - not sure if required csg.write("group() {\n group(){\n") for ob in exportList: - print ob - print "Name : "+ob.Name - print "Type : "+ob.TypeId - print "Shape : " - print ob.Shape + print(ob) + print("Name : "+ob.Name) + print("Type : "+ob.TypeId) + print("Shape : ") + print(ob.Shape) process_object(csg,ob) # write closing group braces diff --git a/src/Mod/OpenSCAD/importCSG.py b/src/Mod/OpenSCAD/importCSG.py index ff1d570ec..27e50461d 100644 --- a/src/Mod/OpenSCAD/importCSG.py +++ b/src/Mod/OpenSCAD/importCSG.py @@ -38,7 +38,7 @@ if FreeCAD.GuiUp: import FreeCADGui gui = True else: - if printverbose: print "FreeCAD Gui not present." + if printverbose: print("FreeCAD Gui not present.") gui = False @@ -122,31 +122,31 @@ def insert(filename,docname): def processcsg(filename): global doc - - if printverbose: print 'ImportCSG Version 0.6a' + + if printverbose: print ('ImportCSG Version 0.6a') # Build the lexer - if printverbose: print 'Start Lex' + if printverbose: print('Start Lex') lex.lex(module=tokrules) - if printverbose: print 'End Lex' + if printverbose: print('End Lex') # Build the parser - if printverbose: print 'Load Parser' + if printverbose: print('Load Parser') # No debug out otherwise Linux has protection exception parser = yacc.yacc(debug=0) - if printverbose: print 'Parser Loaded' + if printverbose: print('Parser Loaded') # Give the lexer some input #f=open('test.scad', 'r') f = pythonopen(filename, 'r') #lexer.input(f.read()) - if printverbose: print 'Start Parser' + if printverbose: print('Start Parser') # Swap statements to enable Parser debugging #result = parser.parse(f.read(),debug=1) result = parser.parse(f.read()) f.close() if printverbose: - print 'End Parser' - print result + print('End Parser') + print(result) FreeCAD.Console.PrintMessage('End processing CSG file\n') doc.recompute() @@ -157,23 +157,23 @@ def p_block_list_(p): | statementwithmod | block_list statementwithmod ''' - if printverbose: print "Block List" - if printverbose: print p[1] + if printverbose: print("Block List") + if printverbose: print(p[1]) if(len(p) > 2) : - if printverbose: print p[2] + if printverbose: print(p[2]) p[0] = p[1] + p[2] else : p[0] = p[1] - if printverbose: print "End Block List" + if printverbose: print("End Block List") def p_render_action(p): 'render_action : render LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' - if printverbose: print "Render (ignored)" + if printverbose: print("Render (ignored)") p[0] = p[6] def p_group_action1(p): 'group_action1 : group LPAREN RPAREN OBRACE block_list EBRACE' - if printverbose: print "Group" + if printverbose: print("Group") # Test if need for implicit fuse if (len(p[5]) > 1) : p[0] = [fuse(p[5],"Group")] @@ -182,7 +182,7 @@ def p_group_action1(p): def p_group_action2(p) : 'group_action2 : group LPAREN RPAREN SEMICOL' - if printverbose: print "Group2" + if printverbose: print("Group2") p[0] = [] def p_boolean(p) : @@ -249,7 +249,7 @@ def p_part(p): def p_2d_point(p): '2d_point : OSQUARE NUMBER COMMA NUMBER ESQUARE' global points_list - if printverbose: print "2d Point" + if printverbose: print("2d Point") p[0] = [float(p[2]),float(p[4])] def p_points_list_2d(p): @@ -260,21 +260,21 @@ def p_points_list_2d(p): ''' if p[2] == ',' : if printverbose: - print "Start List" - print p[1] + print("Start List") + print(p[1]) p[0] = [p[1]] else : if printverbose: - print p[1] - print p[2] + print(p[1]) + print(p[2]) p[1].append(p[2]) p[0] = p[1] - if printverbose: print p[0] + if printverbose: print(p[0]) def p_3d_point(p): '3d_point : OSQUARE NUMBER COMMA NUMBER COMMA NUMBER ESQUARE' global points_list - if printverbose: print "3d point" + if printverbose: print("3d point") p[0] = [p[2],p[4],p[6]] def p_points_list_3d(p): @@ -284,15 +284,15 @@ def p_points_list_3d(p): | points_list_3d 3d_point ''' if p[2] == ',' : - if printverbose: print "Start List" - if printverbose: print p[1] + if printverbose: print("Start List") + if printverbose: print(p[1]) p[0] = [p[1]] else : - if printverbose: print p[1] - if printverbose: print p[2] + if printverbose: print(p[1]) + if printverbose: print(p[2]) p[1].append(p[2]) p[0] = p[1] - if printverbose: print p[0] + if printverbose: print(p[0]) def p_path_points(p): ''' @@ -300,24 +300,24 @@ def p_path_points(p): | path_points NUMBER COMMA | path_points NUMBER ''' - if printverbose: print "Path point" + if printverbose: print("Path point") if p[2] == ',' : - if printverbose: print 'Start list' - if printverbose: print p[1] + if printverbose: print('Start list') + if printverbose: print(p[1]) p[0] = [int(p[1])] else : - if printverbose: print p[1] - if printverbose: print len(p[1]) - if printverbose: print p[2] + if printverbose: print(p[1]) + if printverbose: print(len(p[1])) + if printverbose: print(p[2]) p[1].append(int(p[2])) p[0] = p[1] - if printverbose: print p[0] + if printverbose: print(p[0]) def p_path_list(p): 'path_list : OSQUARE path_points ESQUARE' - if printverbose: print 'Path List ' - if printverbose: print p[2] + if printverbose: print('Path List ') + if printverbose: print(p[2]) p[0] = p[2] def p_path_set(p) : @@ -325,14 +325,14 @@ def p_path_set(p) : path_set : path_list | path_set COMMA path_list ''' - if printverbose: print 'Path Set' - if printverbose: print len(p) + if printverbose: print('Path Set') + if printverbose: print(len(p)) if len(p) == 2 : p[0] = [p[1]] else : p[1].append(p[3]) p[0] = p[1] - if printverbose: print p[0] + if printverbose: print(p[0]) def p_operation(p): ''' @@ -422,7 +422,7 @@ def p_not_supported(p): def p_size_vector(p): 'size_vector : OSQUARE NUMBER COMMA NUMBER COMMA NUMBER ESQUARE' - if printverbose: print "size vector" + if printverbose: print("size vector") p[0] = [p[2],p[4],p[6]] def p_keywordargument(p): @@ -435,7 +435,7 @@ def p_keywordargument(p): | ID EQ stripped_string ''' p[0] = (p[1],p[3]) - if printverbose: print p[0] + if printverbose: print(p[0]) def p_keywordargument_list(p): ''' @@ -451,7 +451,7 @@ def p_keywordargument_list(p): def p_color_action(p): 'color_action : color LPAREN vector RPAREN OBRACE block_list EBRACE' import math - if printverbose: print "Color" + if printverbose: print("Color") color = tuple([float(f) for f in p[3][:3]]) #RGB transp = 100 - int(math.floor(100*float(p[3][3]))) #Alpha if gui: @@ -462,27 +462,27 @@ def p_color_action(p): # Error rule for syntax errors def p_error(p): - if printverbose: print "Syntax error in input!" - if printverbose: print p + if printverbose: print("Syntax error in input!") + if printverbose: print(p) def fuse(lst,name): global doc - if printverbose: print "Fuse" - if printverbose: print lst + if printverbose: print("Fuse") + if printverbose: print(lst) if len(lst) == 0: myfuse = placeholder('group',[],'{}') elif len(lst) == 1: return lst[0] # Is this Multi Fuse elif len(lst) > 2: - if printverbose: print "Multi Fuse" + if printverbose: print("Multi Fuse") myfuse = doc.addObject('Part::MultiFuse',name) myfuse.Shapes = lst if gui: for subobj in myfuse.Shapes: subobj.ViewObject.hide() else: - if printverbose: print "Single Fuse" + if printverbose: print("Single Fuse") myfuse = doc.addObject('Part::Fuse',name) myfuse.Base = lst[0] myfuse.Tool = lst[1] @@ -493,18 +493,18 @@ def fuse(lst,name): def p_union_action(p): 'union_action : union LPAREN RPAREN OBRACE block_list EBRACE' - if printverbose: print "union" + if printverbose: print("union") newpart = fuse(p[5],p[1]) - if printverbose: print "Push Union Result" + if printverbose: print("Push Union Result") p[0] = [newpart] - if printverbose: print "End Union" + if printverbose: print("End Union") def p_difference_action(p): 'difference_action : difference LPAREN RPAREN OBRACE block_list EBRACE' - if printverbose: print "difference" - if printverbose: print len(p[5]) - if printverbose: print p[5] + if printverbose: print("difference") + if printverbose: print(len(p[5])) + if printverbose: print(p[5]) if (len(p[5]) == 0 ): #nochild mycut = placeholder('group',[],'{}') elif (len(p[5]) == 1 ): #single object @@ -515,31 +515,31 @@ def p_difference_action(p): mycut.Base = p[5][0] # Can only Cut two objects do we need to fuse extras if (len(p[5]) > 2 ): - if printverbose: print "Need to Fuse Extra First" + if printverbose: print("Need to Fuse Extra First") mycut.Tool = fuse(p[5][1:],'union') else : mycut.Tool = p[5][1] if gui: mycut.Base.ViewObject.hide() mycut.Tool.ViewObject.hide() - if printverbose: print "Push Resulting Cut" + if printverbose: print("Push Resulting Cut") p[0] = [mycut] - if printverbose: print "End Cut" + if printverbose: print("End Cut") def p_intersection_action(p): 'intersection_action : intersection LPAREN RPAREN OBRACE block_list EBRACE' - if printverbose: print "intersection" + if printverbose: print("intersection") # Is this Multi Common if (len(p[5]) > 2): - if printverbose: print "Multi Common" + if printverbose: print("Multi Common") mycommon = doc.addObject('Part::MultiCommon',p[1]) mycommon.Shapes = p[5] if gui: for subobj in mycommon.Shapes: subobj.ViewObject.hide() elif (len(p[5]) == 2): - if printverbose: print "Single Common" + if printverbose: print("Single Common") mycommon = doc.addObject('Part::Common',p[1]) mycommon.Base = p[5][0] mycommon.Tool = p[5][1] @@ -551,7 +551,7 @@ def p_intersection_action(p): else : # 1 child mycommon = placeholder('group',[],'{}') p[0] = [mycommon] - if printverbose: print "End Intersection" + if printverbose: print("End Intersection") def process_rotate_extrude(obj): newobj=doc.addObject("Part::FeaturePython",'RefineRotateExtrude') @@ -576,21 +576,21 @@ def process_rotate_extrude(obj): def p_rotate_extrude_action(p): 'rotate_extrude_action : rotate_extrude LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' - if printverbose: print "Rotate Extrude" + if printverbose: print("Rotate Extrude") if (len(p[6]) > 1) : part = fuse(p[6],"Rotate Extrude Union") else : part = p[6][0] p[0] = [process_rotate_extrude(part)] - if printverbose: print "End Rotate Extrude" + if printverbose: print("End Rotate Extrude") def p_rotate_extrude_file(p): 'rotate_extrude_file : rotate_extrude LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print "Rotate Extrude File" + if printverbose: print("Rotate Extrude File") filen,ext =p[3]['file'] .rsplit('.',1) obj = process_import_file(filen,ext,p[3]['layer']) p[0] = [process_rotate_extrude(obj)] - if printverbose: print "End Rotate Extrude File" + if printverbose: print("End Rotate Extrude File") def process_linear_extrude(obj,h) : #if gui: @@ -631,9 +631,9 @@ def process_linear_extrude_with_twist(base,height,twist) : def p_linear_extrude_with_twist(p): 'linear_extrude_with_twist : linear_extrude LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' - if printverbose: print "Linear Extrude With Twist" + if printverbose: print("Linear Extrude With Twist") h = float(p[3]['height']) - if printverbose: print "Twist : ",p[3] + if printverbose: print("Twist : ",p[3]) if 'twist' in p[3]: t = float(p[3]['twist']) else: @@ -649,33 +649,33 @@ def p_linear_extrude_with_twist(p): if p[3]['center']=='true' : center(newobj,0,0,h) p[0] = [newobj] - if printverbose: print "End Linear Extrude with twist" + if printverbose: print("End Linear Extrude with twist") def p_import_file1(p): 'import_file1 : import LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print "Import File" + if printverbose: print("Import File") filen,ext =p[3]['file'].rsplit('.',1) p[0] = [process_import_file(filen,ext,p[3]['layer'])] - if printverbose: print "End Import File" + if printverbose: print("End Import File") def p_surface_action(p): 'surface_action : surface LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print "Surface" + if printverbose: print("Surface") obj = doc.addObject("Part::Feature",'surface') obj.Shape,xoff,yoff=makeSurfaceVolume(p[3]['file']) if p[3]['center']=='true' : center(obj,xoff,yoff,0.0) p[0] = [obj] - if printverbose: print "End surface" + if printverbose: print("End surface") def process_import_file(fname,ext,layer): - if printverbose: print "Importing : "+fname+"."+ext+" Layer : "+layer + if printverbose: print("Importing : "+fname+"."+ext+" Layer : "+layer) if ext.lower() in reverseimporttypes()['Mesh']: obj=process_mesh_file(fname,ext) elif ext.lower() == 'dxf' : obj=processDXF(fname,layer) else: - raise ValueError, "Unsupported file extension %s" % ext + raise ValueError("Unsupported file extension %s" % ext) return(obj) def process_mesh_file(fname,ext): @@ -729,33 +729,33 @@ def processDXF(fname,layer): global doc global pathName from OpenSCAD2Dgeom import importDXFface - if printverbose: print "Process DXF file" - if printverbose: print "File Name : "+fname - if printverbose: print "Layer : "+layer - if printverbose: print "PathName : "+pathName + if printverbose: print("Process DXF file") + if printverbose: print("File Name : "+fname) + if printverbose: print("Layer : "+layer) + if printverbose: print("PathName : "+pathName) dxfname = fname+'.dxf' filename = os.path.join(pathName,dxfname) shortname = os.path.split(fname)[1] - if printverbose: print "DXF Full path : "+filename + if printverbose: print("DXF Full path : "+filename) face = importDXFface(filename,layer,doc) obj=doc.addObject('Part::Feature','dxf_%s_%s' % (shortname,layer or "all")) obj.Shape=face - if printverbose: print "DXF Diagnostics" - if printverbose: print obj.Shape.ShapeType - if printverbose: print "Closed : "+str(obj.Shape.isClosed()) - if printverbose: print obj.Shape.check() - if printverbose: print [w.isClosed() for w in obj.Shape.Wires] + if printverbose: print("DXF Diagnostics") + if printverbose: print(obj.Shape.ShapeType) + if printverbose: print("Closed : "+str(obj.Shape.isClosed())) + if printverbose: print(obj.Shape.check()) + if printverbose: print([w.isClosed() for w in obj.Shape.Wires]) return(obj) def processSTL(fname): - if printverbose: print "Process STL file" + if printverbose: print("Process STL file") def p_multmatrix_action(p): 'multmatrix_action : multmatrix LPAREN matrix RPAREN OBRACE block_list EBRACE' - if printverbose: print "MultMatrix" + if printverbose: print("MultMatrix") transform_matrix = FreeCAD.Matrix() - if printverbose: print "Multmatrix" - if printverbose: print p[3] + if printverbose: print("Multmatrix") + if printverbose: print(p[3]) m1l=sum(p[3],[]) if any('x' in me for me in m1l): #hexfloats m1l=[float.fromhex(me) for me in m1l] @@ -768,8 +768,8 @@ def p_multmatrix_action(p): m1l=[round(float(me),12) for me in m1l] #round matrixisrounded=True transform_matrix = FreeCAD.Matrix(*tuple(m1l)) - if printverbose: print transform_matrix - if printverbose: print "Apply Multmatrix" + if printverbose: print(transform_matrix) + if printverbose: print("Apply Multmatrix") # If more than one object on the stack for multmatrix fuse first if (len(p[6]) == 0) : part = placeholder('group',[],'{}') @@ -778,9 +778,9 @@ def p_multmatrix_action(p): else : part = p[6][0] if (isspecialorthogonalpython(fcsubmatrix(transform_matrix))) : - if printverbose: print "special orthogonal" + if printverbose: print("special orthogonal") if matrixisrounded: - if printverbose: print "rotation rounded" + if printverbose: print("rotation rounded") plm=FreeCAD.Placement(transform_matrix) plm=FreeCAD.Placement(plm.Base,roundrotation(plm.Rotation)) part.Placement=plm.multiply(part.Placement) @@ -789,13 +789,13 @@ def p_multmatrix_action(p): part.Placement) new_part = part elif isrotoinversionpython(fcsubmatrix(transform_matrix)): - if printverbose: print "orthogonal and inversion" + if printverbose: print("orthogonal and inversion") cmat,axisvec = decomposerotoinversion(transform_matrix) new_part=doc.addObject("Part::Mirroring",'mirr_%s'%part.Name) new_part.Source=part new_part.Normal=axisvec if matrixisrounded: - if printverbose: print "rotation rounded" + if printverbose: print("rotation rounded") plm=FreeCAD.Placement(cmat) new_part.Placement=FreeCAD.Placement(plm.Base,roundrotation(plm.Rotation)) else: @@ -817,7 +817,7 @@ def p_multmatrix_action(p): new_part.ViewObject.Proxy = 0 part.ViewObject.hide() else : - if printverbose: print "Transform Geometry" + if printverbose: print("Transform Geometry") # Need to recompute to stop transformGeometry causing a crash doc.recompute() new_part = doc.addObject("Part::Feature","Matrix Deformation") @@ -835,16 +835,16 @@ def p_multmatrix_action(p): p[0] = [newobj] else : p[0] = [new_part] - if printverbose: print "Multmatrix applied" + if printverbose: print("Multmatrix applied") def p_matrix(p): 'matrix : OSQUARE vector COMMA vector COMMA vector COMMA vector ESQUARE' - if printverbose: print "Matrix" + if printverbose: print("Matrix") p[0] = [p[2],p[4],p[6],p[8]] def p_vector(p): 'vector : OSQUARE NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER ESQUARE' - if printverbose: print "Vector" + if printverbose: print("Vector") p[0] = [p[2],p[4],p[6],p[8]] def center(obj,x,y,z): @@ -854,18 +854,18 @@ def center(obj,x,y,z): def p_sphere_action(p): 'sphere_action : sphere LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print "Sphere : ",p[3] + if printverbose: print("Sphere : ",p[3]) r = float(p[3]['r']) mysphere = doc.addObject("Part::Sphere",p[1]) mysphere.Radius = r - if printverbose: print "Push Sphere" + if printverbose: print("Push Sphere") p[0] = [mysphere] - if printverbose: print "End Sphere" + if printverbose: print("End Sphere") def myPolygon(n,r1): # Adapted from Draft::_Polygon import math - if printverbose: print "My Polygon" + if printverbose: print("My Polygon") angle = math.pi*2/n nodes = [FreeCAD.Vector(r1,0,0)] for i in range(n-1) : @@ -880,7 +880,7 @@ def myPolygon(n,r1): def p_cylinder_action(p): 'cylinder_action : cylinder LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print "Cylinder" + if printverbose: print("Cylinder") tocenter = p[3]['center'] h = float(p[3]['h']) r1 = float(p[3]['r1']) @@ -889,16 +889,16 @@ def p_cylinder_action(p): fnmax = FreeCAD.ParamGet(\ "User parameter:BaseApp/Preferences/Mod/OpenSCAD").\ GetInt('useMaxFN') - if printverbose: print p[3] + if printverbose: print(p[3]) if h > 0: if ( r1 == r2 and r1 > 0): - if printverbose: print "Make Cylinder" + if printverbose: print("Make Cylinder") if n < 3 or fnmax != 0 and n > fnmax: mycyl=doc.addObject("Part::Cylinder",p[1]) mycyl.Height = h mycyl.Radius = r1 else : - if printverbose: print "Make Prism" + if printverbose: print("Make Prism") if False: #user Draft Polygon mycyl=doc.addObject("Part::Extrusion","prism") mycyl.Dir = (0,0,h) @@ -909,7 +909,7 @@ def p_cylinder_action(p): # If Draft can't import (probably due to lack of Pivy on Mac and # Linux builds of FreeCAD), this is a fallback. # or old level of FreeCAD - if printverbose: print "Draft makePolygon Failed, falling back on manual polygon" + if printverbose: print("Draft makePolygon Failed, falling back on manual polygon") mycyl.Base = myPolygon(n,r1) # mycyl.Solid = True @@ -925,13 +925,13 @@ def p_cylinder_action(p): elif (r1 != r2): if n < 3 or fnmax != 0 and n > fnmax: - if printverbose: print "Make Cone" + if printverbose: print("Make Cone") mycyl=doc.addObject("Part::Cone",p[1]) mycyl.Height = h mycyl.Radius1 = r1 mycyl.Radius2 = r2 else: - if printverbose: print "Make Frustum" + if printverbose: print("Make Frustum") mycyl=doc.addObject("Part::FeaturePython",'frustum') Frustum(mycyl,r1,r2,n,h) if gui: @@ -949,7 +949,7 @@ def p_cylinder_action(p): FreeCAD.Console.PrintWarning('cylinder with height <= zero\n') mycyl=doc.addObject("Part::Feature","emptycyl") mycyl.Shape = Part.Compound([]) - if printverbose: print "Center = ",tocenter + if printverbose: print("Center = ",tocenter) if tocenter=='true' : center(mycyl,0,0,h) if False : @@ -967,14 +967,14 @@ def p_cylinder_action(p): p[0] = [newobj] else : p[0] = [mycyl] - if printverbose: print "End Cylinder" + if printverbose: print("End Cylinder") def p_cube_action(p): 'cube_action : cube LPAREN keywordargument_list RPAREN SEMICOL' global doc l,w,h = [float(str1) for str1 in p[3]['size']] if (l > 0 and w > 0 and h >0): - if printverbose: print "cube : ",p[3] + if printverbose: print("cube : ",p[3]) mycube=doc.addObject('Part::Box',p[1]) mycube.Length=l mycube.Width=w @@ -986,11 +986,11 @@ def p_cube_action(p): if p[3]['center']=='true' : center(mycube,l,w,h); p[0] = [mycube] - if printverbose: print "End Cube" + if printverbose: print("End Cube") def p_circle_action(p) : 'circle_action : circle LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print "Circle : "+str(p[3]) + if printverbose: print("Circle : "+str(p[3])) r = float(p[3]['r']) n = int(p[3]['$fn']) fnmax = FreeCAD.ParamGet(\ @@ -1017,12 +1017,12 @@ def p_circle_action(p) : mycircle.MakeFace = True if gui: Draft._ViewProviderDraft(mycircle.ViewObject) - if printverbose: print "Push Circle" + if printverbose: print("Push Circle") p[0] = [mycircle] def p_square_action(p) : 'square_action : square LPAREN keywordargument_list RPAREN SEMICOL' - if printverbose: print "Square" + if printverbose: print("Square") size = p[3]['size'] x = float(size[0]) y = float(size[1]) @@ -1061,45 +1061,45 @@ def p_text_action(p) : def convert_points_list_to_vector(l): v = [] for i in l : - if printverbose: print i + if printverbose: print(i) v.append(FreeCAD.Vector(i[0],i[1])) - if printverbose: print v + if printverbose: print(v) return(v) def p_polygon_action_nopath(p) : 'polygon_action_nopath : polygon LPAREN points EQ OSQUARE points_list_2d ESQUARE COMMA paths EQ undef COMMA keywordargument_list RPAREN SEMICOL' - if printverbose: print "Polygon" - if printverbose: print p[6] + if printverbose: print("Polygon") + if printverbose: print(p[6]) v = convert_points_list_to_vector(p[6]) mypolygon = doc.addObject('Part::Feature',p[1]) - if printverbose: print "Make Parts" + if printverbose: print("Make Parts") # Close Polygon v.append(v[0]) parts = Part.makePolygon(v) - if printverbose: print "update object" + if printverbose: print("update object") mypolygon.Shape = Part.Face(parts) p[0] = [mypolygon] def p_polygon_action_plus_path(p) : 'polygon_action_plus_path : polygon LPAREN points EQ OSQUARE points_list_2d ESQUARE COMMA paths EQ OSQUARE path_set ESQUARE COMMA keywordargument_list RPAREN SEMICOL' - if printverbose: print "Polygon with Path" - if printverbose: print p[6] + if printverbose: print("Polygon with Path") + if printverbose: print(p[6]) v = convert_points_list_to_vector(p[6]) - if printverbose: print "Path Set List" - if printverbose: print p[12] + if printverbose: print("Path Set List") + if printverbose: print(p[12]) for i in p[12] : - if printverbose: print i + if printverbose: print(i) mypolygon = doc.addObject('Part::Feature','wire') path_list = [] for j in i : j = int(j) - if printverbose: print j + if printverbose: print(j) path_list.append(v[j]) # Close path path_list.append(v[int(i[0])]) - if printverbose: print 'Path List' - if printverbose: print path_list + if printverbose: print('Path List') + if printverbose: print(path_list) wire = Part.makePolygon(path_list) mypolygon.Shape = Part.Face(wire) p[0] = [mypolygon] @@ -1113,19 +1113,19 @@ def make_face(v1,v2,v3): def p_polyhedron_action(p) : '''polyhedron_action : polyhedron LPAREN points EQ OSQUARE points_list_3d ESQUARE COMMA faces EQ OSQUARE points_list_3d ESQUARE COMMA keywordargument_list RPAREN SEMICOL | polyhedron LPAREN points EQ OSQUARE points_list_3d ESQUARE COMMA triangles EQ OSQUARE points_list_3d ESQUARE COMMA keywordargument_list RPAREN SEMICOL''' - if printverbose: print "Polyhedron Points" + if printverbose: print("Polyhedron Points") v = [] for i in p[6] : - if printverbose: print i + if printverbose: print(i) v.append(FreeCAD.Vector(float(i[0]),float(i[1]),float(i[2]))) if printverbose: - print v - print "Polyhedron triangles" - print p[12] + print(v) + print("Polyhedron triangles") + print(p[12]) faces_list = [] mypolyhed = doc.addObject('Part::Feature',p[1]) for i in p[12] : - if printverbose: print i + if printverbose: print(i) f = make_face(v[int(i[0])],v[int(i[1])],v[int(i[2])]) faces_list.append(f) shell=Part.makeShell(faces_list) @@ -1137,7 +1137,7 @@ def p_polyhedron_action(p) : def p_projection_action(p) : 'projection_action : projection LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE' - if printverbose: print 'Projection' + if printverbose: print('Projection') if p[3]['cut']=='true' : planedim=1e9 # large but finite #inifinite planes look bad in the GUI diff --git a/src/Mod/OpenSCAD/prototype.py b/src/Mod/OpenSCAD/prototype.py index b1996cb9b..ee4335c13 100644 --- a/src/Mod/OpenSCAD/prototype.py +++ b/src/Mod/OpenSCAD/prototype.py @@ -35,7 +35,7 @@ def openscadmesh(doc,scadstr,objname): obj.Shape=solid#.removeSplitter() return obj else: - print scadstr + print(scadstr) class Node: #fnmin=12 # maximal fn for implicit polygon renderfing @@ -544,7 +544,7 @@ class Node: argstr = ' (%s)' % self.arguments else: argstr = '' - print '%s %s%s' %(' '*level,self.name,argstr) + print('%s %s%s' %(' '*level,self.name,argstr)) for child in self.children: child.pprint(level+1) @@ -554,7 +554,7 @@ class Node: argstr = ' (%s)' % self.arguments else: argstr = '' - print '%s %s%s' %(path.ljust(pathjust),self.name,argstr) + print('%s %s%s' %(path.ljust(pathjust),self.name,argstr)) for i,child in enumerate(self.children): child.pprint2('%s[%d]'%(path,i),pathjust) @@ -603,7 +603,7 @@ def parseargs(argstring): else: a.append(char) tok.append(''.join(a).strip()) - #print tok + #print(tok) argdict=dict(zip(tok[0::2],[parseexpression(argstring) for argstring in tok[1::2]])) # argdict={} # for key, value in re.findall(r"(\$?\w+)\s*=\s*(\[?\w+]?),?\s*",argstring): diff --git a/src/Mod/OpenSCAD/replaceobj.py b/src/Mod/OpenSCAD/replaceobj.py index ebafa1092..cb99404a9 100644 --- a/src/Mod/OpenSCAD/replaceobj.py +++ b/src/Mod/OpenSCAD/replaceobj.py @@ -45,8 +45,8 @@ def replaceobj(parent,oldchild,newchild): else: if propvalue == oldchild: setattr(parent,propname,newchild) - print propname, parent.getPropertyByName(propname) - #else: print propname,propvalue + print(propname, parent.getPropertyByName(propname)) + #else: print(propname,propvalue) parent.touch() def replaceobjfromselection(objs): diff --git a/src/Mod/OpenSCAD/tokrules.py b/src/Mod/OpenSCAD/tokrules.py index cf2ec6c54..75b371757 100644 --- a/src/Mod/OpenSCAD/tokrules.py +++ b/src/Mod/OpenSCAD/tokrules.py @@ -132,5 +132,5 @@ t_ignore = " \t\r" # Error handling rule def t_error(t): - print "Illegal character '%s'" % t.value[0] + print("Illegal character '%s'" % t.value[0]) t.lexer.skip(1)