Code: Select all
import FreeCAD
from FreeCAD import Base, Part
def make_polygon(point_list):
#append the first point as last point to close the polygon
point_list.append(point_list[0])
polygon = Part.makePolygon(point_list)
pface = Part.makeFilledFace(polygon.Edges)
return pface
def extrude(face, vector, height):
vec_h = Base.Vector(vector)*height
extrusion = face.extrude(vec_h)
return extrusion
def divide_face(face, u_div, v_div):
#returns a series of polygons
pt_list = []
face_list = []
umin, umax, vmin, vmax = face.ParameterRange
print face.ParameterRange
u_seg = (umax-umin)/u_div
v_seg = (vmax-vmin)/v_div
for ucnt in range(u_div+1):
for vcnt in range(v_div+1):
u = umin + (ucnt*u_seg)
v = vmin + (vcnt*v_seg)
print u,v
print face.isPartOfDomain(u,v)
pt = face.valueAt(u, v)
pt_list.append(pt)
for pucnt in range(u_div):
for pvcnt in range(v_div):
pcnt = pucnt*(v_div+1) + pvcnt
pt1 = pt_list[pcnt]
pt2 = pt_list[pcnt+v_div+1]
pt3 = pt_list[pcnt+v_div+2]
pt4 = pt_list[pcnt+1]
polygon = Part.makePolygon([pt1, pt2, pt3, pt4,pt1])
pface = Part.makeFilledFace(polygon.Edges)
face_list.append(pface)
Part.show(pface)
return face_list
#==============================================================================================================
#main script
#==============================================================================================================
points1 = [(0,50,0), (50,0,0), (100,50,0), (50,100,0)]
f1 = make_polygon(points1)
extrusion = extrude(f1, (1,1,1), 100)
e_faces = extrusion.Faces
Part.show(extrusion)
for f in e_faces:
divide_face(f, 5, 10)