diff --git a/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py b/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py index 8c801635e..546c8d7ac 100644 --- a/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py +++ b/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py @@ -459,31 +459,29 @@ def superWireReverse(debuglist,closed=False): print newedges return Part.Wire(newedges) -dxfcache = {} def importDXFface(filename,layer=None,doc=None): import FreeCAD,importDXF doc = doc or FreeCAD.activeDocument() - global dxfcache - layers=dxfcache.get(id(doc),[]) - if layers: - try: - groupobj=[go for go in layers if (not layer) or go.Label == layer] - except: - groupobj= None - else: - groupobj= None - if not groupobj: - layers = importDXF.processdxf(doc,filename) or importDXF.layers - dxfcache[id(doc)] = layers[:] - for l in layers: - if FreeCAD.GuiUp: - for o in l.Group: - o.ViewObject.hide() - l.ViewObject.hide() - groupobj=[go for go in layers if (not layer) or go.Label == layer] + layers = importDXF.processdxf(doc,filename) or importDXF.layers + for l in layers: + if FreeCAD.GuiUp: + for o in l.Group: + o.ViewObject.hide() + l.ViewObject.hide() + 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 for shapeobj in groupobj[0].Group: edges.extend(shapeobj.Shape.Edges) - return edgestofaces(edges) + faces = edgestofaces(edges) + # in order to allow multiple import with the same layer name + # we need to remove used objects from the layer group + #shapeobj.Document.removeObject(shapeobj.Name) + #groupobj[0].Document.removeObject(groupobj[0].Name) + for layer in layers: #remove everything that has been imported + layer.removeObjectsFromDocument() + #for obj in layer.Group: + # obj.Document.removeObject(obj.Name) + layer.Document.removeObject(layer.Name) + return faces diff --git a/src/Mod/OpenSCAD/importCSG.py b/src/Mod/OpenSCAD/importCSG.py index 4113d57ca..745690522 100644 --- a/src/Mod/OpenSCAD/importCSG.py +++ b/src/Mod/OpenSCAD/importCSG.py @@ -710,12 +710,10 @@ def processDXF(fname,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 face = importDXFface(filename,layer,doc) - #obj=doc.addObject("Part::FeaturePython",'import_dxf_%s_%s'%(objname,layera)) - obj=doc.addObject('Part::Feature',layer or "dxf") - #ImportObject(obj,groupobj[0]) #This object is not mutable from the GUI - #ViewProviderTree(obj.ViewObject) + 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