from ocp_vscode import * from build123d import * set_port(3939) # Set the number of clips horizontal: number_clips_horizontal = 3 number_clips_vertical = 3 # Distance hart to hart holes pegboard 1-1/2" or about 38.1 mm hdhh = hole_distance_hart_to_hart = 38.1 wmh = width_multiconnector_hole = 20.3 dmh = depth_multiconnector_hole = 4.15 dbr = depth_big_round = 1.2121 dsr = depth_small_round = 0.4379 db = depth_bevel = 2.5 el = extrusion_length = 10.0 pts = [ (0, 0), ((wmh+4)/2, 0), (((wmh+4)/2), dmh+2), (((wmh+4)/2)-db-2, dmh+2), (((wmh+4)/2)-db-2, dmh+2-dsr), ((wmh+4)/2-2, dbr+2), ((wmh+4)/2-2, 2), (0, 2), (0, 0) ] # Make one basic connector def one_clip(): with BuildPart() as backSlot: # Make a polyline sketch and revolve it 180 degrees with BuildSketch(Plane.XZ) as sk_backSlot: with BuildLine(Plane.XZ) as ln_backSlot: Polyline(pts) make_face() revolve(revolution_arc=180.0, axis=Axis.Z) return backSlot.part # Add a straight part to it def extrusion_clip(): with BuildPart() as extrusion: with BuildSketch(Plane.XZ) as sk_extrusion: with BuildLine(Plane.XZ) as ln_extrusion: Polyline(pts) make_face() mirror(about=Plane.YZ) extrude(amount = el) return extrusion.part # Generate a raster of clips with BuildPart() as raster: for i in range(number_clips_horizontal): for j in range(number_clips_vertical): # Put the clips on the right locations with Locations((i * hdhh, j * hdhh, 0)): clip = one_clip() add(clip) # Connect the clips together one_extrusion = extrusion_clip() add(one_extrusion) #export_stl(backSlot.part, "backSlot.stl") #export_step(backSlot.part, "backSlot.step") show_all()