Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Honeycomb

The honeycomb motif as in FVS-222 is an advanced design that step by step creates (helper) points by interpolating and the use of the fred function. It is a "Projected crossover" used in a way to get a perfect honeycomb pattern. Note that the actual cuttings angles are computed and adapt when the starting position changes due to e.g. optimization. GemCad allows designing (by using Shift-click) checkerboards but not more "free form" patterns like this one.

FSL Spec

name = "FVS-222 Honeycomb"
ri = 1.54
gear = 96

G1 5 @ 90 :size xx6
P1 5 @ 43.02 +/- 2% : cp()
G2 0 @ 90 : ep(edge(G1:5, P1:5), 0.75)
P2 0 @ 41.3 : mp(G1,G2,P1)
P3 8 @ 40.9 : mp(G1,P1)
C1 5 @ 35 : mp(P3) + girdle
C2 0 @ 28.6 : mp(G2, G1, C1, { index: 4, angle: 45 })

p1 = mp(G2, G1, C2, { index: 4, angle: 45 })
p2 = mp(G2, G1, C2, { index: 10, angle: 45 })

p3 = fred(p1,p2,  edge(C1:11, C1:5))
show(p1, "#6d4370")
show(p2, "purple")
show(p3, "#1eff00")

C3 8 @ 25.04 : p3

p4 = mp(G2, G1, C2, { index: 46, angle: 45 })
show(p4, "red")

p_white = fred(p1, p4, edge(C2:0, C3:8))
show(p_white, "white")

orange1 = mp(C1, C1, C3, { index: 88, angle: 45 })
orange2 = mp(C1, C1, C3, { index: 24, angle: 45 })
show(orange1, "#9c3540")
show(orange2, "#2b2417")

center = mp(C1, C1, C3, { index: 0, angle: 45 })
show(center, "#b6a486")

blue1 = mp(C3, { index: 0, angle: 5 })


green1 = fred(orange1, orange2, center, blue1) 
        

C4 0 :green1 :p_white        
T 0 @ 0 : ep(edge(C4:0,C4:16), 0.5)

 

-- lua script
name("FVS-222 Honeycomb")
ri(1.54)
gear(96)
local girdle = Point(0,0,0.04)

TierAD("G1", 5, 90, 1.0, "xx6")

local p1_ang = val(43.02, "2%")
TierAP("P1", 5, p1_ang, cp())

TierAP("G2", 0, 90, ep(edge("G1:5", "P1:5"), 0.75))
TierAP("P2", 0, 41.3, mp("G1", "G2", "P1"))
TierAP("P3", 8, 40.9, mp("G1", "P1"))

TierAP("C1", 5, 35, mp("P3"):add(girdle))
TierAP("C2", 0, 28.6, mp("G2", "G1", "C1", { index = 4, angle = 45 }))

local p1 = mp("G2", "G1", "C2", { index = 4, angle = 45 })
local p2 = mp("G2", "G1", "C2", { index = 10, angle = 45 })
local p3 = fred(p1, p2, edge("C1:11", "C1:5"))

show(p1, "#6d4370")
show(p2, "purple")
show(p3, "#1eff00")

TierAP("C3", 8, 25.04, p3)

local p4 = mp("G2", "G1", "C2", { index = 46, angle = 45 })
show(p4, "red")

local p_white = fred(p1, p4, edge("C2:0", "C3:8"))
show(p_white, "white")

local orange1 = mp("C1", "C1", "C3", { index = 88, angle = 45 })
local orange2 = mp("C1", "C1", "C3", { index = 24, angle = 45 })
show(orange1, "#9c3540")
show(orange2, "#2b2417")

local center = mp("C1", "C1", "C3", { index = 0, angle = 45 })
show(center, "#b6a486")

local blue1 = mp("C3", { index = 0, angle = 5 })
local green1 = fred(orange1, orange2, center, blue1)

TierPP("C4", 0, green1, p_white)
TierAP("T", 0, 0, ep(edge("C4:0", "C4:16"), 0.5))