Skip to content
Snippets Groups Projects
Commit 0532c56b authored by Charles-BZ's avatar Charles-BZ
Browse files

all structures curved corner

parent d2fd4872
No related merge requests found
......@@ -178,9 +178,10 @@ def triangle(
side_length: Annotated[float, Query(gt=0)],
beads_per_side: Annotated[int, Query(gt=0)],
hole_radius: Annotated[float, Query()],
corner_type: Annotated[int, Query()]
):
result = structureGen.triangleStructGen(
side_length=side_length, beads_per_side=beads_per_side, hole_radius=hole_radius
side_length=side_length, beads_per_side=beads_per_side, hole_radius=hole_radius, corner_type=corner_type
)
filename = result[0]
return FileResponse(path=directory + filename, filename=filename)
......@@ -192,12 +193,14 @@ def polygon(
side_length: Annotated[float, Query(gt=0)],
beads_per_side: Annotated[int, Query(gt=1)],
hole_radius: Annotated[float, Query(gt=0)],
corner_type: Annotated[int, Query()]
):
result = structureGen.polygonStructGen(
num_sides=num_sides,
side_length=side_length,
beads_per_side=beads_per_side,
hole_radius=hole_radius,
corner_type=corner_type
)
filename = result[0]
return FileResponse(path=directory + filename, filename=filename)
......@@ -43,59 +43,73 @@ def squareStructGen(side_length, beads_per_side, hole_radius, corner_type):
return (tools.exportSTL(combined, "square-struct", 1), combined)
def triangleStructGen(side_length, beads_per_side, hole_radius):
def triangleStructGen(side_length, beads_per_side, hole_radius, corner_type):
bead_array = shape_array_generation.new_triangle_bead_chain(side_length, beads_per_side)
beads = []
count = 0
for i in range(0, len(bead_array)):
bead = bead_array[i]
if(i == 0):
if(bead_array[i+1][1] != 0):
new_bead = tempBeadGen.junctionBead(1, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
if(corner_type == 0 ):
if(i == 0):
if(bead_array[i+1][1] != 0):
new_bead = tempBeadGen.junctionBead(1, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
else:
new_bead = tempBeadGen.cylinderBead(0, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead[1] == 120):
new_bead = beadGen.generateAngledBead(bead[0], hole_radius, [0, bead[1]], False)[1]
else:
new_bead = tempBeadGen.cylinderBead(0, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead[1] == 120):
new_bead = beadGen.generateAngledBead(bead[0], hole_radius, [0, bead[1]], False)[1]
else:
if(bead_array[i+1][1] != 0 and bead_array[i-1][1] != 0):
new_bead = tempBeadGen.junctionBead(1, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead_array[i+1][1] != 0 and bead_array[i-1][1] == 0):
new_bead = tempBeadGen.junctionBead(1, 0, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead_array[i+1][1] == 0 and bead_array[i-1][1] != 0):
new_bead = tempBeadGen.cylinderBead(0, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
if(bead_array[i+1][1] != 0 and bead_array[i-1][1] != 0):
new_bead = tempBeadGen.junctionBead(1, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead_array[i+1][1] != 0 and bead_array[i-1][1] == 0):
new_bead = tempBeadGen.junctionBead(1, 0, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead_array[i+1][1] == 0 and bead_array[i-1][1] != 0):
new_bead = tempBeadGen.cylinderBead(0, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
else:
new_bead = tempBeadGen.cylinderBead(0, 0, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(corner_type==1): #curved cylinder
if(bead[1] == 120):
new_bead = tempBeadGen.curvedCylinderBead(bead[0]/2, bead[1], hole_radius)
if(i==len(bead_array)-1):
new_bead -= Pos(0,bead[0]/2, bead[0]/3)*Cylinder(hole_radius, bead[0], rotation=(45,0,0), align=(Align.CENTER, Align.CENTER, Align.MIN))
else:
new_bead = tempBeadGen.cylinderBead(0, 0, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
new_bead = tempBeadGen.cylinderBead(0, 0, bead[0]/2, bead[0], hole_radius, 0)
beads.append(new_bead)
count += 1
combined = tools.combineItemList(beads, 2.5*side_length/beads_per_side)
return (tools.exportSTL(combined, "triangle-struct", 1), combined)
def polygonStructGen(num_sides, side_length, beads_per_side, hole_radius):
def polygonStructGen(num_sides, side_length, beads_per_side, hole_radius, corner_type):
bead_array = shape_array_generation.polygon_chain(num_sides, side_length, beads_per_side)
beads = []
for i in range(0, len(bead_array)):
bead = bead_array[i]
if(i == 0):
if(bead_array[i+1][1] != 0):
new_bead = tempBeadGen.junctionBead(1, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
if(corner_type==0):
if(i == 0):
if(bead_array[i+1][1] != 0):
new_bead = tempBeadGen.junctionBead(1, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
else:
new_bead = tempBeadGen.cylinderBead(0, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead[1] != 0):
new_bead = beadGen.generateAngledBead(bead[0]*(abs(math.sin(math.radians(bead[1])))), hole_radius, [0, bead[1]], cutout_query=False)[1]
else:
new_bead = tempBeadGen.cylinderBead(0, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead[1] != 0):
new_bead = beadGen.generateAngledBead(bead[0]*(abs(math.sin(math.radians(bead[1])))), hole_radius, [0, bead[1]], cutout_query=False)[1]
else:
if(bead_array[i+1][1] != 0 and bead_array[i-1][1] != 0):
new_bead = tempBeadGen.junctionBead(1, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead_array[i+1][1] != 0 and bead_array[i-1][1] == 0):
new_bead = tempBeadGen.junctionBead(1, 0, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead_array[i+1][1] == 0 and bead_array[i-1][1] != 0):
new_bead = tempBeadGen.cylinderBead(0, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
if(bead_array[i+1][1] != 0 and bead_array[i-1][1] != 0):
new_bead = tempBeadGen.junctionBead(1, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead_array[i+1][1] != 0 and bead_array[i-1][1] == 0):
new_bead = tempBeadGen.junctionBead(1, 0, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(bead_array[i+1][1] == 0 and bead_array[i-1][1] != 0):
new_bead = tempBeadGen.cylinderBead(0, 1, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
else:
new_bead = tempBeadGen.cylinderBead(0, 0, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
elif(corner_type==1):
if(bead[1] != 0):
new_bead = tempBeadGen.curvedCylinderBead(bead[0]/2, bead[1], hole_radius)
if(i==len(bead_array)-1):
new_bead -= Pos(0,bead[0]/2, bead[0]/3)*Cylinder(hole_radius, bead[0], rotation=(45,0,0), align=(Align.CENTER, Align.CENTER, Align.MIN))
else:
new_bead = tempBeadGen.cylinderBead(0, 0, bead[0]/2, bead[0], hole_radius, bead[0]*0.707)
new_bead = tempBeadGen.cylinderBead(0, 0, bead[0]/2, bead[0], hole_radius, 0)
beads.append(new_bead)
combined = tools.combineItemList(beads, 2*side_length/beads_per_side)
......
......@@ -13,7 +13,7 @@
let loader = new STLLoader();
let scene = new THREE.Scene();
let struct_type = "polygon";
let struct_type = "triangle";
let corner_type = 1;
let side_length = 30;
let beads_per_side = 3;
......@@ -25,9 +25,9 @@
if (struct_type == "square") {
api_path = `http://localhost:8000/api/square-struct?side_length=${side_length}&beads_per_side=${beads_per_side}&hole_radius=${hole_radius}&corner_type=${corner_type}`;
} else if (struct_type == "triangle") {
api_path = `http://localhost:8000/api/triangle-struct?side_length=${side_length}&beads_per_side=${beads_per_side}&hole_radius=${hole_radius}`;
api_path = `http://localhost:8000/api/triangle-struct?side_length=${side_length}&beads_per_side=${beads_per_side}&hole_radius=${hole_radius}&corner_type=${corner_type}`;
} else if (struct_type == "polygon") {
api_path = `http://localhost:8000/api/polygon-struct?num_sides=${num_sides}&side_length=${side_length}&beads_per_side=${beads_per_side}&hole_radius=${hole_radius}`;
api_path = `http://localhost:8000/api/polygon-struct?num_sides=${num_sides}&side_length=${side_length}&beads_per_side=${beads_per_side}&hole_radius=${hole_radius}&corner_type=${corner_type}`;
}
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment