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
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
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
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