diff --git a/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py b/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py index 546c8d7ac..6779259bf 100644 --- a/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py +++ b/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py @@ -59,6 +59,7 @@ class Overlappingfaces(): return bigface.common(smallface).Area > 0 def builddepdict(self): + import Part import itertools #isinsidelist = [] self.isinsidedict = {} @@ -67,7 +68,7 @@ class Overlappingfaces(): try: overlap = Overlappingfaces.dofacesoverlapboolean(\ self.sortedfaces[bigfacei],self.sortedfaces[smallfacei]) - except: + except Part.OCCError: overlap = Overlappingfaces.dofacesoverlapallverts(\ self.sortedfaces[bigfacei],self.sortedfaces[smallfacei]) if overlap: @@ -324,7 +325,7 @@ def edgestowires(edgelist,eps=0.001): #if not close or wire.isClosed or outerd > 0.0001: wirelist.append(Part.Wire(path)) done = True - except: + except Part.OCCError: pass if not done: comp=Part.Compound(path) @@ -373,7 +374,7 @@ def edgestofaces(edges,algo=3,eps=0.001): edges2.append(Part.Line(p1,p0).toShape()) w = Part.Wire(edges2) #w = Part.Wire(fcgeo.sortEdges(edges2)) - except: + except OCCError: comp=Part.Compound(edges2) w = comp.connectEdgesToWires(False,eps).Wires[0] facel.append(Part.Face(w)) diff --git a/src/Mod/OpenSCAD/OpenSCADFeatures.py b/src/Mod/OpenSCAD/OpenSCADFeatures.py index b02d12fe2..667c598a9 100644 --- a/src/Mod/OpenSCAD/OpenSCADFeatures.py +++ b/src/Mod/OpenSCAD/OpenSCADFeatures.py @@ -57,13 +57,9 @@ class ViewProviderTree: def __setstate__(self,state): if state is not None: - try: - import FreeCAD - doc = FreeCAD.ActiveDocument #crap - self.Object = doc.getObject(state['ObjectName']) - except: - raise -# return None + import FreeCAD + doc = FreeCAD.ActiveDocument #crap + self.Object = doc.getObject(state['ObjectName']) def claimChildren(self): objs = [] @@ -448,7 +444,7 @@ class Twist: solid.reverse() assert(solid.Volume >= 0) solids.append(solid) - except: + except Part.OCCError: solids.append(Part.Compound(faces)) fp.Shape=Part.Compound(solids) diff --git a/src/Mod/OpenSCAD/OpenSCADUtils.py b/src/Mod/OpenSCAD/OpenSCADUtils.py index de0150892..4c3f58d8c 100644 --- a/src/Mod/OpenSCAD/OpenSCADUtils.py +++ b/src/Mod/OpenSCAD/OpenSCADUtils.py @@ -35,7 +35,13 @@ def translate(context,text): return QtGui.QApplication.translate(context, text, None, \ QtGui.QApplication.UnicodeUTF8) -class OpenSCADError(Exception): +try: + import FreeCAD + BaseError = FreeCAD.Base.FreeCADError +except ImportError,AttributeError: + BaseError = RuntimeError + +class OpenSCADError(BaseError): def __init__(self,value): self.value= value #def __repr__(self): diff --git a/src/Mod/OpenSCAD/exportDRAWEXE.py b/src/Mod/OpenSCAD/exportDRAWEXE.py index ae4b3cb75..5b6888f32 100644 --- a/src/Mod/OpenSCAD/exportDRAWEXE.py +++ b/src/Mod/OpenSCAD/exportDRAWEXE.py @@ -95,9 +95,10 @@ def saveShape(csg,filename,shape,name,hasplacement = True,cleanshape=False): breppath=os.path.join(spath,'%s.brep'%uname) csg.write("restore %s.brep %s\n" % (uname,name)) if cleanshape: + import Part try: shape = shape.cleaned() - except: + except Part.OCCError: shape = shape.copy() if hasplacement is None: # saved with placement hasplacement = False # saved with placement diff --git a/src/Mod/OpenSCAD/importCSG.py b/src/Mod/OpenSCAD/importCSG.py index 1daca0e95..b25766e0c 100644 --- a/src/Mod/OpenSCAD/importCSG.py +++ b/src/Mod/OpenSCAD/importCSG.py @@ -92,7 +92,7 @@ def insert(filename,docname): groupname = os.path.splitext(os.path.basename(filename))[0] try: doc=FreeCAD.getDocument(docname) - except: + except FreeCAD.Base.FreeCADError: doc=FreeCAD.newDocument(docname) #importgroup = doc.addObject("App::DocumentObjectGroup",groupname) if filename.lower().endswith('.scad'): @@ -599,10 +599,7 @@ def process_linear_extrude(obj,h) : mylinear.Base = newobj #obj mylinear.Dir = (0,0,h) mylinear.Placement=FreeCAD.Placement() - try: - mylinear.Solid = True - except: - pass + mylinear.Solid = True if gui: newobj.ViewObject.hide() return(mylinear) diff --git a/src/Mod/OpenSCAD/prototype.py b/src/Mod/OpenSCAD/prototype.py index a73cabe1c..b1996cb9b 100644 --- a/src/Mod/OpenSCAD/prototype.py +++ b/src/Mod/OpenSCAD/prototype.py @@ -340,8 +340,7 @@ class Node: try: global lastimportpath filename=os.path.join(lastimportpath,filename) - except: - raise #no path given + except: raise #no path given # Check for a mesh fileformat support by the Mesh mddule if extension.lower() in reverseimporttypes()['Mesh']: import Mesh @@ -372,10 +371,7 @@ class Node: global dxfcache layers=dxfcache.get(id(doc),[]) if layers: - try: - groupobj=[go for go in layers if (not layera) or go.Label == layera] - except: - groupobj= None + groupobj=[go for go in layers if (not layera) or go.Label == layera] else: groupobj= None if not groupobj: @@ -392,7 +388,7 @@ class Node: edges.extend(shapeobj.Shape.Edges) try: f=edgestofaces(edges) - except: + except Part.OCCError: FreeCAD.Console.PrintError(\ 'processing of dxf import faild\nPlease rework \'%s\' manualy\n' % layera) f=Part.Shape() #empty Shape @@ -507,8 +503,7 @@ class Node: if fcpar: try: obj.ViewObject.hide() - except: - raise + except: raise if True: #never refine the Shape, as it itroduces crashes return obj else: #refine Shape @@ -684,7 +679,7 @@ def open(filename): def insert(filename,docname): try: doc=FreeCAD.getDocument(docname) - except: + except NameError: doc=FreeCAD.newDocument(docname) readfile(filename).addtofreecad(doc) #doc.recompute()