Пример #1
0
    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()
Пример #2
0
    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