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 composer(temp_file_name): """ :param temp_file_name: path of a :class:`.tempfile` **.arb** that contains the information to generate a :class:`.Product` relative to the arborescense of a **.stp** file For every node of the :class:`.Product` the attribute **doc_file_path** indicates where is store the file **.stp** that represents the node """ output = open(temp_file_name.encode(), "r") product = Product.from_list(json.loads(output.read())) output.close() output = open(temp_file_name.encode(), "w+") # erase old data output.close() WS = XSControl_WorkSession() my_step_importer = StepImporter(product.doc_path) st = my_step_importer.shape_tool lr = TDF_LabelSequence() st.GetFreeShapes(lr) add_labels(product, lr.Value(1), st) writer = STEPCAFControl_Writer(WS.GetHandle(), False) for i in range(lr.Length()): writer.Transfer(lr.Value(i + 1), STEPControl_AsIs) writer.Write(temp_file_name)
class ExportCAFMethod(object): def __init__(self, name="name", tol=1.0E-10): self.name = name self.step = STEPCAFControl_Writer() self.step.SetNameMode(True) self.h_doc = Handle_TDocStd_Document() self.x_app = XCAFApp_Application.GetApplication().GetObject() self.x_app.NewDocument(TCollection_ExtendedString("MDTV-CAF"), self.h_doc) self.doc = self.h_doc.GetObject() self.h_shape_tool = XCAFDoc_DocumentTool_ShapeTool(self.doc.Main()) self.shape_tool = self.h_shape_tool.GetObject() Interface_Static_SetCVal("write.step.schema", "AP214") def Add(self, shape, name="name"): """ STEPControl_AsIs translates an Open CASCADE shape to its highest possible STEP representation. STEPControl_ManifoldSolidBrep translates an Open CASCADE shape to a STEP manifold_solid_brep or brep_with_voids entity. STEPControl_FacetedBrep translates an Open CASCADE shape into a STEP faceted_brep entity. STEPControl_ShellBasedSurfaceModel translates an Open CASCADE shape into a STEP shell_based_surface_model entity. STEPControl_GeometricCurveSet translates an Open CASCADE shape into a STEP geometric_curve_set entity. """ label = self.shape_tool.AddShape(shape) self.step.Transfer(self.h_doc, STEPControl_AsIs) def Write(self, filename=None): if not filename: filename = self.name path, ext = os.path.splitext(filename) if not ext: ext = ".stp" status = self.step.Write(path + ext) assert (status == IFSelect_RetDone)
def __init__(self, name="name", tol=1.0E-10): self.name = name self.step = STEPCAFControl_Writer() self.step.SetNameMode(True) self.h_doc = Handle_TDocStd_Document() self.x_app = XCAFApp_Application.GetApplication().GetObject() self.x_app.NewDocument(TCollection_ExtendedString("MDTV-CAF"), self.h_doc) self.doc = self.h_doc.GetObject() self.h_shape_tool = XCAFDoc_DocumentTool_ShapeTool(self.doc.Main()) self.shape_tool = self.h_shape_tool.GetObject() Interface_Static_SetCVal("write.step.schema", "AP214")
def export_STEPFile_single(shape, filename, tol=1.0E-6): """ Exports a .stp file containing the input shapes Parameters ---------- shape : TopoDS_Shape filename : string The output filename """ step = STEPCAFControl_Writer() step.SetNameMode(True) step.SetPropsMode(True) h_doc = Handle_TDocStd_Document() x_app = XCAFApp_Application.GetApplication().GetObject() x_app.NewDocument(TCollection_ExtendedString("MDTV-CAF"), h_doc) doc = h_doc.GetObject() h_shape_tool = XCAFDoc_DocumentTool_ShapeTool(doc.Main()) shape_tool = h_shape_tool.GetObject() Interface_Static_SetCVal("write.step.schema", "AP214") # transfer shapes print(filename) shape_tool.AddShape(shape) step.Transfer(h_doc, STEPControl_AsIs) status = step.Write(filename) assert (status == IFSelect_RetDone)
def export_STEPFile_Airconics(AirconicsShapes, filename): """ Writes a Step file with names defined in the AirconicsShapes. This function is not fully tested and should not yet be used. Notes ----- Work in progress """ print("This function is a work in progress. For now, use export_STEPFile") # create an handle to a document h_doc = Handle_TDocStd_Document() # Create the application app = XCAFApp_Application.GetApplication().GetObject() app.NewDocument(TCollection_ExtendedString("MDTV-CAF"), h_doc) # Get root assembly doc = h_doc.GetObject() shape_tool = XCAFDoc_DocumentTool_ShapeTool(doc.Main()).GetObject() # l_colors = XCAFDoc_DocumentTool_ColorTool(doc.Main()) # l_layers = XCAFDoc_DocumentTool_LayerTool(doc.Main()) # l_materials = XCAFDoc_DocumentTool_MaterialTool(doc.Main()) step_writer = STEPCAFControl_Writer() step_writer.SetColorMode(True) step_writer.SetLayerMode(True) step_writer.SetNameMode(True) # step_writer.SetMaterialMode(True) for ACshape in AirconicsShapes: for comp in ACshape.Components: print("Writing {} to {}".format(comp, filename)) lbl = shape_tool.AddShape(ACshape.Components[comp]) name = TCollection_ExtendedString(comp) # tdn = TDataStd_Name() # tdn.Set(lbl, name) step_writer.Transfer(lbl, STEPControl_AsIs) status = step_writer.Write(filename) assert (status == IFSelect_RetDone) return status
FR = 3 # radius FD = 2 # depth FS = 2 # fan's distance from radiator's bottom FX = float(RL)/2+RX; FYleft = RY; FYright = RY+RW; FZ = RZ+FS+FR p = gp_Ax2(gp_Pnt(FX,FYleft,FZ),-gp_DY()) leftFan = BRepPrimAPI_MakeCylinder(p,FR,FD).Shape() p = gp_Ax2(gp_Pnt(FX,FYright,FZ),gp_DY()) rightFan = BRepPrimAPI_MakeCylinder(p,FR,FD).Shape() # 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()) shape_tool = h_shape_tool.GetObject() #add shape shp_label = shape_tool.AddShape(tank) WS = XSControl_WorkSession() writer = STEPCAFControl_Writer(WS.GetHandle(),False) writer.Transfer(h_doc,STEPControl_AsIs) writer.SetNameMode(True) writer.Write("CAFtestPyOCC.stp")