def LoadFile(self, filename): extension = os.path.basename(filename).split(".").pop().lower() start_time = time.time() if extension =="step" or extension == "stp": stepReader = STEPControl.STEPControl_Reader() stepReader.ReadFile(str(filename)) numTranslated = stepReader.TransferRoots() shape = stepReader.OneShape() elif extension == "stl": shape = TopoDS.TopoDS_Shape() stl_reader = StlAPI.StlAPI_Reader() stl_reader.Read(shape,str(filename)) elif extension =="iges" or extension =="igs": i = IGESControl.IGESControl_Controller() i.Init() iges_reader = IGESControl.IGESControl_Reader() iges_reader.ReadFile(str(filename)) iges_reader.TransferRoots() shape = iges_reader.OneShape() elif extension == "brep": shape = TopoDS.TopoDS_Shape() builder = BRep.BRep_Builder() BRepTools.BRepTools().Read(shape,str(filename),builder) else: return True self.canva._3dDisplay.EraseAll() self.canva._3dDisplay.DisplayShape(shape) wx.SafeYield() self.canva._3dDisplay.View_Iso() self.canva._3dDisplay.FitAll() end_time = time.time() self.SetTitle("pythonOCC Interactive Console %s:%s"%(VERSION,filename)) duration = end_time-start_time print "%s STEP file loaded and displayed in %f seconds."%(filename,duration)
def file_to_shape(pth): '''get a Shape from an .iges or .step file''' assert os.path.isfile(pth), '%s is not a valid directory' % (pth) ext = os.path.splitext(pth)[1] print 'ext', ext assert ext in ['.iges', '.igs', '.stp', '.step', '.brep', '.stl'], '%s is not an readable format' % (ext) if ext in ['.iges', '.igs']: __i = IGESControl_Controller() __i.Init() reader = IGESControl_Reader() elif ext in ['.step', '.stp']: reader = STEPControl_Reader() elif ext == '.brep': from OCC import TopoDS, BRep, BRepTools shape = TopoDS.TopoDS_Shape() builder = BRep.BRep_Builder() BRepTools.BRepTools().Read(shape, pth, builder) return shape elif ext == '.stl': from OCC import TopoDS, StlAPI shape = TopoDS.TopoDS_Shape() stl_reader = StlAPI.StlAPI_Reader() stl_reader.Read(shape, pth) return shape reader.ReadFile(pth) n_translated = reader.TransferRoots() shape = reader.OneShape() del reader return shape
def LoadFile(self,filename): extension = os.path.basename(filename).split(".").pop().lower() start_time = time.time() if extension =="step" or extension == "stp": from OCC.Utils.DataExchange.STEP import STEPImporter stepReader = STEPImporter(str(filename)) stepReader.read_file() shape = stepReader.get_shapes() elif extension == "stl": from OCC import TopoDS, StlAPI shape = TopoDS.TopoDS_Shape() stl_reader = StlAPI.StlAPI_Reader() stl_reader.Read(shape,str(filename)) elif extension =="iges" or extension =="igs": from OCC import IGESControl i = IGESControl.IGESControl_Controller() i.Init() iges_reader = IGESControl.IGESControl_Reader() iges_reader.ReadFile(str(filename)) iges_reader.TransferRoots() shape = iges_reader.OneShape() elif extension == "brep": from OCC import TopoDS, BRep, BRepTools shape = TopoDS.TopoDS_Shape() builder = BRep.BRep_Builder() BRepTools.BRepTools().Read(shape,str(filename),builder) else: return True self.canva._display.DisplayShape(shape) end_time = time.time() self.SetTitle("CAD Viewer - pythonOCC %s:%s"%(VERSION,filename)) duration = end_time-start_time print "%s STEP file loaded and displayed in %f seconds."%(filename,duration)
def shape_to_file(shape, pth, filename, format='iges'): '''write a Shape to a .iges .brep .stl or .step file''' _pth = os.path.join(pth, filename) assert not os.path.isdir(_pth), 'wrong path, filename' _file = "%s.%s" % (_pth, format) _formats = ['iges', 'igs', 'step', 'stp', 'brep', 'stl'] assert format in _formats, '%s is not a readable format, should be one of %s ' % ( format, _formats) if format in ['iges', 'igs']: i = IGESControl_Controller() i.Init() writer = IGESControl_Writer() writer.AddShape(shape) writer.Write(_file) return _file elif format in ['step', 'stp']: i = STEPControl_Controller() i.Init() writer = STEPControl_Writer() writer.Transfer(shape, STEPControl_AsIs) writer.Write(_file) return _file elif format == 'brep': from OCC import TopoDS, BRep, BRepTools #shape = TopoDS.TopoDS_Shape() builder = BRep.BRep_Builder() BRepTools.BRepTools().Write(shape, _file) elif format == 'stl': from OCC import TopoDS, StlAPI #shape = TopoDS.TopoDS_Shape() stl_reader = StlAPI.StlAPI_Writer() stl_reader.Read(shape, _file) else: raise TypeError( 'format should be one of [iges,igs], [step,stp], brep, stl\ngot %s' % (format))
from OCC import TopTools, BRepBndLib, Bnd, gp, BRepBuilderAPI, GProp, BRepGProp, BRepPrimAPI, BRepAlgoAPI, BRepTools, BRepAlgo from OCC.Utils.Topology import Topo from OCC.Utils import Topology import SlicingOptions import Wrappers import OCCUtil from Extruder import * from Constants import * import hatchlib import Util import debugdisplay brt = BRepTools.BRepTools() """ Slices a solid, Still to implement: (1) Filling (a) implement fill density (b) implement alternating fill angle (c) join paths (2) Output (a) SVG output (b) Gcode output (3) Testing: try loading STL (4) support (5) hexagonal fill ( even though it is slow )
from OCC.Display.SimpleGui import * from OCC import BRep from OCC.BRepTools import * from OCC import TopoDS from OCC.Message import Message_PrinterOStream import sys fileName = 'input.brp' if (len(sys.argv) > 1): fileName = sys.argv[1] brep_instance = BRepTools() shape = TopoDS.TopoDS_Shape() builder = BRep.BRep_Builder() printrerStream = Message_PrinterOStream() s = printrerStream.GetStream() brep_instance.Read(shape, str(fileName), builder)