CadQuery / cadquery

A python parametric CAD scripting framework based on OCCT
https://cadquery.readthedocs.io
Other
3.15k stars 289 forks source link

Adding existing geometry into sketches? #1588

Open l29ah opened 4 months ago

l29ah commented 4 months ago

I want to make holes spaced out all around the edge of my part. It's easy to put holes along existing vertices, but i'm not sure how to split up the lines to get more vertices. I've made a Wire in my Workplane and figured distribute() would be appropriate to do it, but seems like it's only accessible inside a Sketch. Meanwhile in a Sketch i don't have access to any external geometry it seems, even with tag() and select(). How can i do it? So far my attempts look like:

import cadquery as cq

shit = cq.Workplane('XY').box(5, 5, 5)
shitfaced = shit.faces('>Z').edges().toPending().offset2D(-0.5, forConstruction=True).tag('loh')
#ok = shitfaced.positions() #project()#sketch().select('loh').distribute(10)
adam-urbanczyk commented 4 months ago

The Sketch API has to be updated to enable such things. I think currently the easiest method would be:

import cadquery as cq

base = cq.Workplane().box(5, 5, 5)
f = base.faces('>Z').edges().toPending().offset2D(-0.5, forConstruction=True).val()

locs = f.positions((1/8)*i for i in range(8))

#import numpy as np
#locs = f.positions(np.linspace(0,1,8,endpoint=False))

result = base.pushPoints(locs).circle(0.4).cutBlind(-1)