def addGroove(derivation, negatives):
 copyShallow = derivation.elementNode.getCopyShallow()
 extrude.setElementNodeToEndStart(copyShallow, Vector3((- derivation.demilength)), Vector3(derivation.demilength))
 extrudeDerivation = extrude.ExtrudeDerivation(copyShallow)
 bottom = (derivation.demiheight - (0.5 * derivation.grooveWidth))
 outside = derivation.demiwidth
 top = derivation.demiheight
 leftGroove = [complex((- outside), bottom), complex((- derivation.innerDemiwidth), derivation.demiheight), complex((- outside), top)]
 rightGroove = [complex(outside, top), complex(derivation.innerDemiwidth, derivation.demiheight), complex(outside, bottom)]
 groovesComplex = [leftGroove, rightGroove]
 groovesVector3 = euclidean.getVector3Paths(groovesComplex)
 extrude.addPositives(extrudeDerivation, groovesVector3, negatives)

def addGroove ( derivation , negatives ) : copyShallow = derivation . elementNode . getCopyShallow ( ) extrude . setElementNodeToEndStart ( copyShallow , Vector3 ( ( - derivation . demilength ) ) , Vector3 ( derivation . demilength ) ) extrudeDerivation = extrude . ExtrudeDerivation ( copyShallow ) bottom = ( derivation . demiheight - ( 0.5 * derivation . grooveWidth ) ) outside = derivation . demiwidth top = derivation . demiheight leftGroove = [ complex ( ( - outside ) , bottom ) , complex ( ( - derivation . innerDemiwidth ) , derivation . demiheight ) , complex ( ( - outside ) , top ) ] rightGroove = [ complex ( outside , top ) , complex ( derivation . innerDemiwidth , derivation . demiheight ) , complex ( outside , bottom ) ] groovesComplex = [ leftGroove , rightGroove ] groovesVector3 = euclidean . getVector3Paths ( groovesComplex ) extrude . addPositives ( extrudeDerivation , groovesVector3 , negatives )
add groove on each side of cage .