def process2D_ObjectsViaOpenSCADShape(ObjList, Operation, doc): import FreeCAD, importDXF import os, tempfile # https://www.freecadweb.org/tracker/view.php?id=3419 params = FreeCAD.ParamGet( "User parameter:BaseApp/Preferences/Mod/OpenSCAD") fn = params.GetInt('fnForImport', 32) fnStr = ",$fn=" + str(fn) # dir1 = tempfile.gettempdir() filenames = [] for item in ObjList: outputfilename = os.path.join(dir1, '%s.dxf' % next(tempfilenamegen)) importDXF.export([item], outputfilename, True, True) filenames.append(outputfilename) # https://www.freecadweb.org/tracker/view.php?id=3419 dxfimports = ' '.join("import(file = \"%s\" %s);" % \ #filename \ (os.path.split(filename)[1], fnStr) for filename in filenames) # tmpfilename = callopenscadstring('%s(){%s}' % (Operation, dxfimports), 'dxf') from OpenSCAD2Dgeom import importDXFface # TBD: assure the given doc is active face = importDXFface(tmpfilename, None, None) #clean up filenames.append(tmpfilename) #delete the output file as well try: os.unlink(tmpfilename) except OSError: pass return face
def process2D_ObjectsViaOpenSCADShape(ObjList, Operation, doc): import FreeCAD, importDXF import os, tempfile dir1 = tempfile.gettempdir() filenames = [] for item in ObjList: outputfilename = os.path.join(dir1, "%s.dxf" % tempfilenamegen.next()) importDXF.export([item], outputfilename, True, True) filenames.append(outputfilename) dxfimports = " ".join( 'import(file = "%s");' % # filename \ os.path.split(filename)[1] for filename in filenames ) tmpfilename = callopenscadstring("%s(){%s}" % (Operation, dxfimports), "dxf") from OpenSCAD2Dgeom import importDXFface # TBD: assure the given doc is active face = importDXFface(tmpfilename, None, None) # clean up filenames.append(tmpfilename) # delete the ouptut file as well try: os.unlink(tmpfilename) except OSError: pass return face
def process2D_ObjectsViaOpenSCADShape(ObjList,Operation,doc): import FreeCAD,importDXF import os,tempfile # Mantis 3419 params = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD") fn = params.GetInt('fnForImport',32) fnStr = ",$fn=" + str(fn) # dir1=tempfile.gettempdir() filenames = [] for item in ObjList : outputfilename=os.path.join(dir1,'%s.dxf' % tempfilenamegen.next()) importDXF.export([item],outputfilename,True,True) filenames.append(outputfilename) # Mantis 3419 dxfimports = ' '.join("import(file = \"%s\" %s);" % \ #filename \ (os.path.split(filename)[1], fnStr) for filename in filenames) # tmpfilename = callopenscadstring('%s(){%s}' % (Operation,dxfimports),'dxf') from OpenSCAD2Dgeom import importDXFface # TBD: assure the given doc is active face = importDXFface(tmpfilename,None,None) #clean up filenames.append(tmpfilename) #delete the output file as well try: os.unlink(tmpfilename) except OSError: pass return face
def processTextCmd(t): from OpenSCADUtils import callopenscadstring tmpfilename = callopenscadstring(t,'dxf') from OpenSCAD2Dgeom import importDXFface face = importDXFface(tmpfilename,None,None) obj=doc.addObject('Part::Feature','text') obj.Shape=face try: os.unlink(tmpfilename) except OSError: pass return(obj)
def processTextCmd(t): import os from OpenSCADUtils import callopenscadstring tmpfilename = callopenscadstring(t,'dxf') from OpenSCAD2Dgeom import importDXFface face = importDXFface(tmpfilename,None,None) obj=doc.addObject('Part::Feature','text') obj.Shape=face try: os.unlink(tmpfilename) except OSError: pass return(obj)
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 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::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(f.isClosed()) if printverbose: print f.check() if printverbose: print [w.isClosed() for w in obj.Shape.Wires]
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) 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::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]) return(obj)
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 dxfname = fname+'.dxf' filename = os.path.join(pathName,dxfname) 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.Shape=face if printverbose: print "DXF Diagnostics" if printverbose: print obj.Shape.ShapeType if printverbose: print "Closed : "+str(f.isClosed()) if printverbose: print f.check() if printverbose: print [w.isClosed() for w in obj.Shape.Wires]
def process2D_ObjectsViaOpenSCAD(ObjList, Operation, doc=None): import FreeCAD, importDXF import os, tempfile #print "process2D" doc = doc or FreeCAD.activeDocument() dir1 = tempfile.gettempdir() filenames = [] #print "Export DXF" for item in ObjList: outputfilename = os.path.join(dir1, '%s.dxf' % tempfilenamegen.next()) #print "Call Export : "+outputfilename importDXF.export([item], outputfilename, True, True) #print "File Exported" filenames.append(outputfilename) dxfimports = ' '.join("import(file = \"%s\");" % \ #filename \ os.path.split(filename)[1] for filename in filenames) #print "Call OpenSCAD : "+dxfimports tmpfilename = callopenscadstring('%s(){%s}' % (Operation, dxfimports), 'dxf') #from importCSG import processDXF #import the result #obj = processDXF(tmpfilename,None) from OpenSCAD2Dgeom import importDXFface #print "Import DXF" face = importDXFface(tmpfilename, None, None) #print "Add Hull" obj = doc.addObject('Part::Feature', Operation) obj.Shape = face # Hide Children if FreeCAD.GuiUp: for index in ObjList: index.ViewObject.hide() #clean up filenames.append(tmpfilename) #delete the ouptut file as well try: os.unlink(tmpfilename) except OSError: pass return (obj)
def process2D_ObjectsViaOpenSCAD(ObjList,Operation,doc=None): import FreeCAD,importDXF import os,tempfile #print "process2D" doc = doc or FreeCAD.activeDocument() dir1=tempfile.gettempdir() filenames = [] #print "Export DXF" for item in ObjList : outputfilename=os.path.join(dir1,'%s.dxf' % tempfilenamegen.next()) #print "Call Export : "+outputfilename importDXF.export([item],outputfilename,True,True) #print "File Exported" filenames.append(outputfilename) dxfimports = ' '.join("import(file = \"%s\");" % \ #filename \ os.path.split(filename)[1] for filename in filenames) #print "Call OpenSCAD : "+dxfimports tmpfilename = callopenscadstring('%s(){%s}' % (Operation,dxfimports),'dxf') #from importCSG import processDXF #import the result #obj = processDXF(tmpfilename,None) from OpenSCAD2Dgeom import importDXFface #print "Import DXF" face = importDXFface(tmpfilename,None,None) #print "Add Hull" obj=doc.addObject('Part::Feature',Operation) obj.Shape=face # Hide Children if FreeCAD.GuiUp: for index in ObjList : index.ViewObject.hide() #clean up filenames.append(tmpfilename) #delete the ouptut file as well try: os.unlink(tmpfilename) except OSError: pass return(obj)
def process2D_ObjectsViaOpenSCADShape(ObjList,Operation,doc): import FreeCAD,importDXF import os,tempfile dir1=tempfile.gettempdir() filenames = [] for item in ObjList : outputfilename=os.path.join(dir1,'%s.dxf' % tempfilenamegen.next()) importDXF.export([item],outputfilename,True,True) filenames.append(outputfilename) dxfimports = ' '.join("import(file = \"%s\");" % \ #filename \ os.path.split(filename)[1] for filename in filenames) tmpfilename = callopenscadstring('%s(){%s}' % (Operation,dxfimports),'dxf') from OpenSCAD2Dgeom import importDXFface # TBD: assure the given doc is active face = importDXFface(tmpfilename,None,None) #clean up filenames.append(tmpfilename) #delete the ouptut file as well try: os.unlink(tmpfilename) except OSError: pass return face
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 dxfname = fname + '.dxf' filename = os.path.join(pathName, dxfname) 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.Shape = face if printverbose: print "DXF Diagnostics" if printverbose: print obj.Shape.ShapeType if printverbose: print "Closed : " + str(f.isClosed()) if printverbose: print f.check() if printverbose: print[w.isClosed() for w in obj.Shape.Wires] return (obj)