p1, v1 = gp_Pnt(50, 50, 50), gp_Vec(0, 0, -1) fc1 = make_face(gp_Pln(p1, vec_to_dir(v1)), -1000, 1000, -1000, 1000) # limited, not infinite plane p2, v2 = gp_Pnt(50, 50, 50), gp_Vec(0, 1, -1) fc2 = make_face(gp_Pln(p2, vec_to_dir(v2)), -1000, 1000, -1000, 1000) # limited, not infinite plane p3, v3 = gp_Pnt(50, 50, 25), gp_Vec(1, 1, -1) fc3 = make_face(gp_Pln(p3, vec_to_dir(v3)), -1000, 1000, -1000, 1000) # limited, not infinite plane bo = BOPAlgo_Builder() bo.AddArgument(box) bo.AddArgument(fc1) bo.AddArgument(fc2) bo.AddArgument(fc3) bo.Perform() #print("error status: {}".format(bo.ErrorStatus())) colos = ["BLUE", "RED", "GREEN", "YELLOW", "BLACK", "WHITE", "BLUE", "RED"] top = Topo(bo.Shape()) for i, sol in enumerate(top.solids()): display.DisplayShape(sol, color=colos[i], transparency=0.5) display.FitAll() start_display()
def read_file(self): h_doc = TDocStd.Handle_TDocStd_Document() #print "Empty Doc?", h_doc.IsNull() # Create the application app = XCAFApp.GetApplication().GetObject() app.NewDocument(TCollection.TCollection_ExtendedString("MDTV-CAF"), h_doc) # Get root assembly doc = h_doc.GetObject() h_shape_tool = XCAFDoc.XCAFDoc_DocumentTool_shapetool(doc.Main()) l_Colors = XCAFDoc.XCAFDoc_DocumentTool_colortool(doc.Main()) l_Layers = XCAFDoc.XCAFDoc_DocumentTool_layertool(doc.Main()) l_materials = XCAFDoc.XCAFDoc_DocumentTool_materialtool(doc.Main()) STEPReader = STEPCAFControl_Reader() STEPReader.SetColorMode(True) STEPReader.SetLayerMode(True) STEPReader.SetNameMode(True) STEPReader.SetMatMode(True) status = STEPReader.ReadFile(str(self.filename)) if status == IFSelect_RetDone: STEPReader.Transfer(doc.GetHandle()) Labels = TDF_LabelSequence() ColorLabels = TDF_LabelSequence() #TopoDS_Shape aShape; shape_tool = h_shape_tool.GetObject() h_shape_tool.GetObject().GetFreeShapes(Labels) print('Number of shapes at root :%i' % Labels.Length()) for i in range(Labels.Length()): sub_shapes_labels = TDF_LabelSequence() print("Is Assembly?", shape_tool.isassembly(Labels.Value(i + 1))) sub_shapes = shape_tool.getsubshapes(Labels.Value(i + 1), sub_shapes_labels) print('Number of subshapes in the assemly :%i' % sub_shapes_labels.Length()) l_Colors.GetObject().GetColors(ColorLabels) print('Number of colors=%i' % ColorLabels.Length()) #if(CL_Len>0): # ColorTool->GetColor(ColorLabels.Value(1),DefaultColor); for i in range(Labels.Length()): #print i print(Labels.Value(i + 1)) aShape = h_shape_tool.GetObject().getshape(Labels.Value(i + 1)) m = l_Layers.GetObject().GetLayers(aShape) print(dir(h_shape_tool.GetObject())) #print c print("Lenght of popo :%i" % m.GetObject().Length()) #v = m.GetObject().Value(0)#Value() #print v,v.Length() #for i in v.Length(): # print chr(v.Value(i+1)) #layer_labels = TDF_LabelSequence() #popo = Handle_TColStd_HSequenceOfExtendedString() #print 'Number of layers :%i'%layer_labels.Length() #print aShape,aShape.ShapeType() if aShape.ShapeType() == TopAbs_COMPOUND: t = Topo(aShape) for t in t.solids(): self._shapes.append(t) return True