use exceptions in OpenSCAD module

derive OpenSCADError from FreeCADError if possible
This commit is contained in:
Sebastian Hoogen 2014-08-20 19:07:28 +02:00
parent 57db95a1c3
commit 333e6e3155
6 changed files with 24 additions and 28 deletions

View File

@ -59,6 +59,7 @@ class Overlappingfaces():
return bigface.common(smallface).Area > 0 return bigface.common(smallface).Area > 0
def builddepdict(self): def builddepdict(self):
import Part
import itertools import itertools
#isinsidelist = [] #isinsidelist = []
self.isinsidedict = {} self.isinsidedict = {}
@ -67,7 +68,7 @@ class Overlappingfaces():
try: try:
overlap = Overlappingfaces.dofacesoverlapboolean(\ overlap = Overlappingfaces.dofacesoverlapboolean(\
self.sortedfaces[bigfacei],self.sortedfaces[smallfacei]) self.sortedfaces[bigfacei],self.sortedfaces[smallfacei])
except: except Part.OCCError:
overlap = Overlappingfaces.dofacesoverlapallverts(\ overlap = Overlappingfaces.dofacesoverlapallverts(\
self.sortedfaces[bigfacei],self.sortedfaces[smallfacei]) self.sortedfaces[bigfacei],self.sortedfaces[smallfacei])
if overlap: if overlap:
@ -324,7 +325,7 @@ def edgestowires(edgelist,eps=0.001):
#if not close or wire.isClosed or outerd > 0.0001: #if not close or wire.isClosed or outerd > 0.0001:
wirelist.append(Part.Wire(path)) wirelist.append(Part.Wire(path))
done = True done = True
except: except Part.OCCError:
pass pass
if not done: if not done:
comp=Part.Compound(path) comp=Part.Compound(path)
@ -373,7 +374,7 @@ def edgestofaces(edges,algo=3,eps=0.001):
edges2.append(Part.Line(p1,p0).toShape()) edges2.append(Part.Line(p1,p0).toShape())
w = Part.Wire(edges2) w = Part.Wire(edges2)
#w = Part.Wire(fcgeo.sortEdges(edges2)) #w = Part.Wire(fcgeo.sortEdges(edges2))
except: except OCCError:
comp=Part.Compound(edges2) comp=Part.Compound(edges2)
w = comp.connectEdgesToWires(False,eps).Wires[0] w = comp.connectEdgesToWires(False,eps).Wires[0]
facel.append(Part.Face(w)) facel.append(Part.Face(w))

View File

@ -57,13 +57,9 @@ class ViewProviderTree:
def __setstate__(self,state): def __setstate__(self,state):
if state is not None: if state is not None:
try: import FreeCAD
import FreeCAD doc = FreeCAD.ActiveDocument #crap
doc = FreeCAD.ActiveDocument #crap self.Object = doc.getObject(state['ObjectName'])
self.Object = doc.getObject(state['ObjectName'])
except:
raise
# return None
def claimChildren(self): def claimChildren(self):
objs = [] objs = []
@ -448,7 +444,7 @@ class Twist:
solid.reverse() solid.reverse()
assert(solid.Volume >= 0) assert(solid.Volume >= 0)
solids.append(solid) solids.append(solid)
except: except Part.OCCError:
solids.append(Part.Compound(faces)) solids.append(Part.Compound(faces))
fp.Shape=Part.Compound(solids) fp.Shape=Part.Compound(solids)

View File

@ -35,7 +35,13 @@ def translate(context,text):
return QtGui.QApplication.translate(context, text, None, \ return QtGui.QApplication.translate(context, text, None, \
QtGui.QApplication.UnicodeUTF8) 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): def __init__(self,value):
self.value= value self.value= value
#def __repr__(self): #def __repr__(self):

View File

@ -95,9 +95,10 @@ def saveShape(csg,filename,shape,name,hasplacement = True,cleanshape=False):
breppath=os.path.join(spath,'%s.brep'%uname) breppath=os.path.join(spath,'%s.brep'%uname)
csg.write("restore %s.brep %s\n" % (uname,name)) csg.write("restore %s.brep %s\n" % (uname,name))
if cleanshape: if cleanshape:
import Part
try: try:
shape = shape.cleaned() shape = shape.cleaned()
except: except Part.OCCError:
shape = shape.copy() shape = shape.copy()
if hasplacement is None: # saved with placement if hasplacement is None: # saved with placement
hasplacement = False # saved with placement hasplacement = False # saved with placement

View File

@ -92,7 +92,7 @@ def insert(filename,docname):
groupname = os.path.splitext(os.path.basename(filename))[0] groupname = os.path.splitext(os.path.basename(filename))[0]
try: try:
doc=FreeCAD.getDocument(docname) doc=FreeCAD.getDocument(docname)
except: except FreeCAD.Base.FreeCADError:
doc=FreeCAD.newDocument(docname) doc=FreeCAD.newDocument(docname)
#importgroup = doc.addObject("App::DocumentObjectGroup",groupname) #importgroup = doc.addObject("App::DocumentObjectGroup",groupname)
if filename.lower().endswith('.scad'): if filename.lower().endswith('.scad'):
@ -599,10 +599,7 @@ def process_linear_extrude(obj,h) :
mylinear.Base = newobj #obj mylinear.Base = newobj #obj
mylinear.Dir = (0,0,h) mylinear.Dir = (0,0,h)
mylinear.Placement=FreeCAD.Placement() mylinear.Placement=FreeCAD.Placement()
try: mylinear.Solid = True
mylinear.Solid = True
except:
pass
if gui: if gui:
newobj.ViewObject.hide() newobj.ViewObject.hide()
return(mylinear) return(mylinear)

View File

@ -340,8 +340,7 @@ class Node:
try: try:
global lastimportpath global lastimportpath
filename=os.path.join(lastimportpath,filename) filename=os.path.join(lastimportpath,filename)
except: except: raise #no path given
raise #no path given
# Check for a mesh fileformat support by the Mesh mddule # Check for a mesh fileformat support by the Mesh mddule
if extension.lower() in reverseimporttypes()['Mesh']: if extension.lower() in reverseimporttypes()['Mesh']:
import Mesh import Mesh
@ -372,10 +371,7 @@ class Node:
global dxfcache global dxfcache
layers=dxfcache.get(id(doc),[]) layers=dxfcache.get(id(doc),[])
if layers: if layers:
try: groupobj=[go for go in layers if (not layera) or go.Label == layera]
groupobj=[go for go in layers if (not layera) or go.Label == layera]
except:
groupobj= None
else: else:
groupobj= None groupobj= None
if not groupobj: if not groupobj:
@ -392,7 +388,7 @@ class Node:
edges.extend(shapeobj.Shape.Edges) edges.extend(shapeobj.Shape.Edges)
try: try:
f=edgestofaces(edges) f=edgestofaces(edges)
except: except Part.OCCError:
FreeCAD.Console.PrintError(\ FreeCAD.Console.PrintError(\
'processing of dxf import faild\nPlease rework \'%s\' manualy\n' % layera) 'processing of dxf import faild\nPlease rework \'%s\' manualy\n' % layera)
f=Part.Shape() #empty Shape f=Part.Shape() #empty Shape
@ -507,8 +503,7 @@ class Node:
if fcpar: if fcpar:
try: try:
obj.ViewObject.hide() obj.ViewObject.hide()
except: except: raise
raise
if True: #never refine the Shape, as it itroduces crashes if True: #never refine the Shape, as it itroduces crashes
return obj return obj
else: #refine Shape else: #refine Shape
@ -684,7 +679,7 @@ def open(filename):
def insert(filename,docname): def insert(filename,docname):
try: try:
doc=FreeCAD.getDocument(docname) doc=FreeCAD.getDocument(docname)
except: except NameError:
doc=FreeCAD.newDocument(docname) doc=FreeCAD.newDocument(docname)
readfile(filename).addtofreecad(doc) readfile(filename).addtofreecad(doc)
#doc.recompute() #doc.recompute()