Exemple #1
0
    def preview(self, input, direction):
        if self.step == 0:
            from OCC import TopExp, TopAbs, BRep
            exp = TopExp.TopExp_Explorer(input, TopAbs.TopAbs_VERTEX)
            v1 = TopoDS.topods_Vertex(exp.Current())
            v1_ = BRep.BRep_Tool.Pnt(TopoDS.TopoDS_Vertex(v1))
            # TODO: 0.3: finish: automatically determine orthogonal direction
            # from
            #   input
            self.previous_data = [input, direction]
            try:
                wire = TopoDS.TopoDS_Wire(input)
                print(dir(wire))
            except:
                pass
            return ()
        elif self.step == 1:
            object, dir_ = self.previous_data[:]

            dirvec = [0, 0, 0]
            dirvec[dir_] = input[dir_]
            if dirvec == [0, 0, 0]:
                raise InvalidInputException
            self.remove = [self.previous_data[0]]
            self._final = [BRepPrimAPI.BRepPrimAPI_MakePrism(
                                object, gp.gp_Vec(*dirvec)).Shape()]
            return self._final
Exemple #2
0
    def preview(self, input, direction):
        veclist = []
        for edge in subshapes(input, TopAbs_EDGE):
            vertices = subshapes(edge, TopAbs_VERTEX)
            vec_ = gp_Pnt_(vertices[0]) - gp_Pnt_(vertices[1])
            veclist.append(vec_)

        prisms = []
        for vec_ in veclist:
            vec_ = vec_ * (1/vec_.length())*100
            v = vec(vec_[1], -vec_[0], 100)

            prism = BRepPrimAPI.BRepPrimAPI_MakePrism(input, 
                        gp.gp_Vec(v[0], v[1], v[2])).Shape()
            prisms.append(prism)

        p = prisms.pop()
        for p_ in prisms:
            p = intersection(p, p_)[0]

        self._final = [p]
        return self._final