コード例 #1
0
ファイル: Sketchfab.py プロジェクト: MakerReduxCorp/FreeCAD
    def saveFile(self):

        import FreeCADGui
        if self.form.Radio_Selection.isChecked():
            objects = FreeCADGui.Selection.getSelection()
        else:
            objects = [
                obj for obj in FreeCAD.ActiveDocument.Objects
                if obj.ViewObject.isVisible()
            ]
        if not objects:
            QtGui.QMessageBox.critical(
                None, translate("Web", "Nothing to upload"),
                translate(
                    "The selection of the document contains no object to upload"
                ))
            return None
        filename = os.path.join(tempfile._get_default_tempdir(),
                                next(tempfile._get_candidate_names()))
        filetype = self.form.Combo_Filetype.currentIndex()
        # 0 = obj + mtl, 1 = obj, 2 = dae, 3 = stl, 4 = IGES, 5 = iv (currently not working)
        if filetype == 0:  # OBJ + MTL
            import importOBJ
            importOBJ.export(objects, filename + ".obj")
            return self.packFiles(filename,
                                  [filename + ".obj", filename + ".mtl"])
        elif filetype == 1:  # OBJ (mesh exporter)
            import Mesh
            Mesh.export(objects, filename + ".obj")
            return self.packFiles(filename, [filename + ".obj"])
        elif filetype == 2:  # DAE
            import importDAE
            importDAE.export(objects, filename + ".dae")
            return self.packFiles(filename, [filename + ".dae"])
        elif filetype == 3:  # STL
            import Mesh
            Mesh.export(objects, filename + ".stl")
            return self.packFiles(filename, [filename + ".stl"])
        elif filetype == 4:  # IGES
            import Part
            Part.export(objects, filename + ".iges")
            return self.packFiles(filename, [filename + ".iges"])
        elif filetype == 5:  # IV
            import FreeCADGui
            FreeCADGui.export(objects, filename + ".iv")
            # removing FreeCAD-specific nodes
            f = open(filename + ".iv", "rb")
            s = f.read()
            f.close()
            s = s.replace("SoBrepEdgeSet", "SoIndexedLineSet")
            s = s.replace("SoBrepFaceSet", "SoIndexedFaceSet")
            s = s.replace("\n", "--endl--")
            s = re.sub("highlightIndex .*?\]", " ", s)
            s = re.sub("partIndex .*?\]", " ", s)
            s = s.replace("--endl--", "\n")
            f = open(filename + ".iv", "wb")
            f.write(s)
            f.close()
            return self.packFiles(filename, [filename + ".iv"])
コード例 #2
0
def exportDAE(obj, omesh_path):
    """
    Export ./\"meshfolder_path\"/\"Label\"/full.dae from the FreeCAD object.
    Uses importDAE module and returns path to the DAE.
    """
    omesh_path += ".dae"
    importDAE.export([obj], omesh_path)
    return omesh_path
コード例 #3
0
ファイル: Sketchfab.py プロジェクト: Patola/WebTools
 def saveFile(self):
     
     import FreeCADGui
     if self.form.Radio_Selection.isChecked():
         objects = FreeCADGui.Selection.getSelection()
     else:
         objects = [obj for obj in FreeCAD.ActiveDocument.Objects if obj.ViewObject.isVisible()]
     if not objects:
         QtGui.QMessageBox.critical(None,translate("WebTools","Nothing to upload"),translate("The selection of the document contains no object to upload"))
         return None
     filename = os.path.join(tempfile._get_default_tempdir(),next(tempfile._get_candidate_names()))
     filetype = self.form.Combo_Filetype.currentIndex()
     # 0 = obj + mtl, 1 = obj, 2 = dae, 3 = stl, 4 = IGES, 5 = iv (currently not working)
     if filetype == 0: # OBJ + MTL
         import importOBJ
         importOBJ.export(objects,filename+".obj")
         return self.packFiles(filename,[filename+".obj",filename+".mtl"])
     elif filetype == 1: # OBJ (mesh exporter)
         import Mesh
         Mesh.export(objects,filename+".obj")
         return self.packFiles(filename,[filename+".obj"])
     elif filetype == 2: # DAE
         import importDAE
         importDAE.export(objects,filename+".dae")
         return self.packFiles(filename,[filename+".dae"])
     elif filetype == 3: # STL
         import Mesh
         Mesh.export(objects,filename+".stl")
         return self.packFiles(filename,[filename+".stl"])
     elif filetype == 4: # IGES
         import Part
         Part.export(objects,filename+".iges")
         return self.packFiles(filename,[filename+".iges"])
     elif filetype == 5: # IV
         import FreeCADGui
         # remove objects with no face (unsupported by this format)
         nobjects = []
         for o in objects:
             if o.isDerivedFrom("Part::Feature"):
                 if o.Shape.Faces:
                     nobjects.append(o)
         FreeCADGui.export(nobjects,filename+".iv")
         # removing FreeCAD-specific nodes
         f = open(filename+".iv","rb")
         s = f.read()
         f.close()
         ver = FreeCAD.Version()
         vinfo = "# Exported by FreeCAD v" + ver[0] + "." + ver[1] + " build" + ver[2] + "\n"
         vinfo += "# http://www.freecadweb.org\n"
         s = s.replace("#Inventor V2.1 ascii","#Inventor V2.1 ascii\n"+vinfo)
         s = s.replace("SoBrepEdgeSet","IndexedLineSet")
         s = s.replace("SoBrepFaceSet","IndexedFaceSet")
         s = s.replace("SoBrepPointSet","IndexedPointSet")
         s = s.replace("\n","--endl--")
         s = re.sub("--endl--[ \t]+highlightIndex.*?--endl--","--endl--",s)
         s = re.sub("--endl--[ \t]+partIndex.*?--endl--","--endl--",s)
         s = re.sub("--endl--[ \t]+selectionIndex.*?--endl--","--endl--",s)
         s = re.sub("SFInt32 highlightIndex, ","",s)
         s = re.sub("MFInt32 partIndex, ","",s)
         s = re.sub("MFInt32 selectionIndex ","",s)
         s = re.sub(", \]"," \]",s)
         s = s.replace("--endl--","\n")
         f = open(filename+".iv","wb")
         f.write(s)
         f.close()
         print("saved "+filename+".iv")
         return self.packFiles(filename,[filename+".iv"])
コード例 #4
0
ファイル: stp-to-gltf.py プロジェクト: maul-a/stp-to-gltf
import sys
sys.path.append("/home/trojande/work/freecad-code/lib")

import FreeCAD
import Part
import importDAE
import pyassimp

file = u"/home/trojande/work/github.com/maul-a/stp-to-gltf/part.stp"
FreeCAD.newDocument()
FreeCAD.setActiveDocument("Unnamed")
doc = FreeCAD.getDocument("Unnamed")
Part.insert(file, "Unnamed")
importDAE.export(doc.Objects, u"/home/trojande/work/github.com/maul-a/stp-to-gltf/part.dae")
assimp_scene = pyassimp.load('part.dae')
pyassimp.export(assimp_scene, 'part.gltf', 'gltf2')