示例#1
0
 def execute(self, fp):
     try:
         if fp.Border == None or fp.Holes == None:
             return
         
         if fp.Thickness.Value <= 0:
             fp.Thickness.Value = 0.1
             return
         
         try:
             self.oldHeight = fp.Shape.BoundBox.ZMax
         except:
             self.oldHeight = 0
         # holes
         borderOutline = OpenSCAD2Dgeom.edgestofaces(fp.Border.Shape.Wires)
         
         holes = []
         for i in fp.Holes.Shape.Wires:
             holes.append(Part.Face(i))
         
         if len(holes):
             face = borderOutline.cut(Part.makeCompound(holes))
         else:
             face = borderOutline
         #
         fp.Shape = face.extrude(FreeCAD.Base.Vector(0, 0, fp.Thickness.Value))
     except:
         pass
示例#2
0
def cutToBoardShape(pads):
    if not FreeCAD.activeDocument():
        return False
    #
    # cut to board shape
    board = OpenSCAD2Dgeom.edgestofaces(FreeCAD.ActiveDocument.Board.Border.Shape.Edges)
    #board = FreeCAD.ActiveDocument.Board.Border.Shape
    #board = Part.Face(board)
    board = board.extrude(FreeCAD.Base.Vector(0, 0, 2))
    board.Placement.Base.z = -1
    #Part.show(board)
    pads = board.common(pads)
    return pads
示例#3
0
def cutToBoardShape(pads):
    if not FreeCAD.activeDocument():
        return pads
    #
    pcb = getPCBheight()
    if pcb[0]:  # board is available
        # cut to board shape
        board = OpenSCAD2Dgeom.edgestofaces(pcb[2].Border.Shape.Edges)
        # board = FreeCAD.ActiveDocument.Board.Border.Shape
        # board = Part.Face(board)
        board = board.extrude(FreeCAD.Base.Vector(0, 0, pcb[2].Thickness + 2))
        board.Placement.Base.z = -1
        # Part.show(board)
        pads = board.common(pads)
        return pads
    #
    return pads
示例#4
0
    def execute(self, fp):
        try:
            if fp.Border is None or fp.Holes is None:
                return
            # elif not fp.AutoUpdate:
            # return
            #
            if fp.Thickness < 0.5:
                fp.Thickness = 0.5
            #
            try:
                self.oldHeight = fp.Shape.BoundBox.ZMax
            except:
                self.oldHeight = 0

            face = OpenSCAD2Dgeom.edgestofaces(fp.Border.Shape.Wires)
            ############################################################
            # BASED ON  realthunder PROPOSAL/SOLUTION
            ############################################################
            try:
                holes = None
                if fp.Display is True:
                    self.getHoles(fp)
                    if self.holesComp is not None:
                        face = face.cut(self.holesComp)
            except Exception as e:
                FreeCAD.Console.PrintWarning("3. {0}\n".format(e))
            ############################################################
            fp.Shape = face.extrude(FreeCAD.Base.Vector(0, 0, fp.Thickness))
            #
            try:
                fp.purgeTouched()
            except:
                pass
        except:
            pass