def test_write_step_file(self): ''' Exports a colored box into a STEP file ''' ### initialisation h_doc = Handle_TDocStd_Document() assert (h_doc.IsNull()) # Create the application app = XCAFApp_Application.GetApplication().GetObject() app.NewDocument(TCollection_ExtendedString("MDTV-CAF"), h_doc) # Get root assembly doc = h_doc.GetObject() h_shape_tool = XCAFDoc_DocumentTool_ShapeTool(doc.Main()) l_Colors = XCAFDoc_DocumentTool_ColorTool(doc.Main()) shape_tool = h_shape_tool.GetObject() colors = l_Colors.GetObject() ### create the shape to export test_shape = BRepPrimAPI_MakeBox(100., 100., 100.).Shape() ### add shape shp_label = shape_tool.AddShape(test_shape) ### set a color for this shape r = 1 g = b = 0.5 red_color = Quantity_Color(r, g, b, 0) colors.SetColor(shp_label, red_color, XCAFDoc_ColorGen) # write file WS = XSControl_WorkSession() writer = STEPCAFControl_Writer(WS.GetHandle(), False) writer.Transfer(h_doc, STEPControl_AsIs) status = writer.Write("./test_io/test_ocaf_generated.stp") assert status assert os.path.isfile("./test_io/test_ocaf_generated.stp")
def test_write_step_file(self) -> None: """Exports a colored box into a STEP file""" ### initialisation doc = TDocStd_Document(TCollection_ExtendedString("pythonocc-doc")) self.assertTrue(doc is not None) # Get root assembly shape_tool = XCAFDoc_DocumentTool.ShapeTool(doc.Main()) colors = XCAFDoc_DocumentTool.ColorTool(doc.Main()) ### create the shape to export test_shape = BRepPrimAPI_MakeBox(100.0, 100.0, 100.0).Shape() ### add shape shp_label = shape_tool.AddShape(test_shape) ### set a color for this shape r = 1.0 g = b = 0.5 red_color = Quantity_Color(r, g, b, Quantity_TypeOfColor.Quantity_TOC_RGB) colors.SetColor(shp_label, red_color, XCAFDoc_ColorGen) # write file WS = XSControl_WorkSession() writer = STEPCAFControl_Writer(WS, False) writer.Transfer(doc, STEPControl_AsIs) status = writer.Write("./test_io/test_ocaf_generated.stp") self.assertTrue(status) self.assertTrue(os.path.isfile("./test_io/test_ocaf_generated.stp"))
def doc_linter(self, doc=None): """Clean self.doc by cycling through a STEP save/load cycle.""" if doc is None: doc = self.doc # Create a file object to save to fname = "deleteme.txt" # Initialize STEP exporter WS = XSControl_WorkSession() step_writer = STEPCAFControl_Writer(WS, False) # Transfer shapes and write file step_writer.Transfer(doc, STEPControl_AsIs) status = step_writer.Write(fname) assert status == IFSelect_RetDone # Create new TreeModel and read STEP data tmodel = TreeModel("DOC") shape_tool = tmodel.shape_tool color_tool = tmodel.color_tool step_reader = STEPCAFControl_Reader() step_reader.SetColorMode(True) step_reader.SetLayerMode(True) step_reader.SetNameMode(True) step_reader.SetMatMode(True) status = step_reader.ReadFile(fname) if status == IFSelect_RetDone: logger.info("Transfer doc to STEPCAFControl_Reader") step_reader.Transfer(tmodel.doc) os.remove(fname) return tmodel.doc
def write_file(self): r"""Write file""" work_session = XSControl_WorkSession() writer = STEPCAFControl_Writer(work_session.GetHandle(), False) transfer_status = writer.Transfer(self.h_doc, STEPControl_AsIs) if transfer_status != IFSelect_RetDone: msg = "An error occurred while transferring a shape " \ "to the STEP writer" logger.error(msg) raise StepShapeTransferException(msg) logger.info('Writing STEP file') write_status = writer.Write(self.filename) if write_status == IFSelect_RetDone: logger.info("STEP file write successful.") else: msg = "An error occurred while writing the STEP file" logger.error(msg) raise StepFileWriteException(msg)
def saveStepDoc(self): """Export self.doc to STEP file.""" prompt = 'Choose filename for step file.' fnametuple = QFileDialog.getSaveFileName( None, prompt, './', "STEP files (*.stp *.STP *.step)") fname, _ = fnametuple if not fname: print("Save step cancelled.") return # initialize STEP exporter WS = XSControl_WorkSession() step_writer = STEPCAFControl_Writer(WS, False) # transfer shapes and write file step_writer.Transfer(self.doc, STEPControl_AsIs) status = step_writer.Write(fname) assert status == IFSelect_RetDone