Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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)
Example #5
0
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)
Example #6
0
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]
Example #7
0
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)
Example #8
0
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]
Example #9
0
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
Example #12
0
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)