@@ -430,6 +430,9 @@ try {
430430 .movez(motor. getMaxZ())
431431 double hornDepth = horn. getTotalZ()
432432 double halfServoDistance = motor. getTotalX()/ 2
433+ double servoSplit= 2
434+ double plateThickness = 2 ;
435+ double topPlateStandoff = 5.5 ;
433436 CSG tire = Vitamins . get(" oRing" , " 2inchOD" )
434437
435438 CSG wheepCore = new Cylinder (tire. getTotalZ()/ 2-3 , hornDepth). toCSG()
@@ -446,15 +449,15 @@ try {
446449 .movez(-8 )
447450 .movey(10 )
448451 .roty(90 )
449- .movex(bot. getMinX())
452+ .movex(bot. getMinX()- servoSplit )
450453 .movez(bot. getMinZ()- halfServoDistance)
451454 .movey(5 )
452455
453456 Transform rightSide = new Transform ()
454457 .movez(-8 )
455458 .movey(10 )
456459 .roty(-90 )
457- .movex(bot. getMaxX())
460+ .movex(bot. getMaxX()+ servoSplit )
458461 .movez(bot. getMinZ()- halfServoDistance)
459462 .movey(5 )
460463
@@ -503,8 +506,8 @@ try {
503506 .movey(bot. getMaxY()- caseRounding)
504507 .toXMax()
505508 .movex(bot. getMaxX()- caseRounding)
506- CSG servoCover = servoBlock. difference(servoBlock. movez(2 ))
507- .movez(-2 )
509+ CSG servoCover = servoBlock. difference(servoBlock. movez(plateThickness ))
510+ .movez(- plateThickness )
508511 double servoCoverSurfaceDistance = servoCover. getMinZ()
509512 double distanceFromBottomToGround= Math . abs(tireMovedR. getMinZ()- servoCoverSurfaceDistance)
510513 CSG Caster = new Sphere (distanceFromBottomToGround,20 ,30 ). toCSG()
@@ -519,7 +522,12 @@ try {
519522 .movey(servoBlock. getMinY()+12 )
520523 .movez(-5 )
521524
522-
525+ CSG threads = Vitamins . get(" heatedThreadedInsert" , " M3" )
526+ CSG threadsBottom = threads
527+ .rotx(180 )
528+ .toZMin()
529+ .movez(servoCoverSurfaceDistance+ plateThickness)
530+ .movex(servoCover. getMinX())
523531 CSG coverscrew = Vitamins . get(" chamferedScrew" , " M3x16" )
524532 .rotx(180 )
525533 .toZMin()
@@ -528,7 +536,9 @@ try {
528536 double InsetScrew = 10
529537 CSG screws = coverscrew. movex(InsetScrew ). union(coverscrew. movex(servoCover. getTotalX()- InsetScrew ))
530538 .movey(servoCover. getTotalY()/ 2 )
531-
539+ CSG bottomThreads = threadsBottom. movex(InsetScrew ). union(threadsBottom. movex(servoCover. getTotalX()- InsetScrew ))
540+ .movey(servoCover. getTotalY()/ 2 )
541+
532542 double batterySunkIn = 10
533543 CSG NineVolt = Vitamins . get(" BatteryBox" , " 9vbattery" )
534544 CSG batteryHolder = NineVolt . getBoundingBox(). scalex(1.15 )
@@ -550,9 +560,13 @@ try {
550560 .toZMax()
551561 .movez(servoCover. getMaxZ())
552562 .difference(NineVolt )
553-
563+ CSG ninevoltRemovalCuts = new Cylinder (10 , NineVolt . getTotalZ()+ Caster . getTotalZ()). toCSG()
564+ .movez(Caster . getMinZ())
565+ .movey(NineVolt . getMaxY())
566+ CSG fingers = ninevoltRemovalCuts. movex(NineVolt . getMaxX())
567+ .union(ninevoltRemovalCuts. movex(NineVolt . getMinX()))
568+
554569 CSG workplateScrew = Vitamins . get(" chamferedScrew" , " M3x16" )
555- CSG threads = Vitamins . get(" heatedThreadedInsert" , " M3" )
556570
557571 double hingePartThickness = 5
558572 double hingePartRadius= 8
@@ -569,35 +583,47 @@ try {
569583 .movey(top. getMinY()- hingePartRadius/ 2-1 )
570584
571585 Transform hingeFastener = new Transform ()
572- .movez(top. getMaxZ()+2 )
586+ .movez(top. getMaxZ()+ plateThickness )
573587 .movex(top. getCenterX()+15 )
574588 .movey(top. getMaxY()-5 )
575589
576590
577591 CSG screwBoss = new Cylinder (5 , hingePartThickness). toCSG()
578592 .toZMax()
579- .movez(-2 )
593+ .movez(- plateThickness )
580594 .transformed(hingeFastener)
581- CSG hingeScrew = workplateScrew. movez(hingePartThickness+2 ). transformed(hingeLocation)
595+ CSG screwStandoff = new Cylinder (5 , topPlateStandoff). toCSG()
596+ .toZMax()
597+ .movez(- plateThickness+ topPlateStandoff)
598+ .transformed(hingeFastener)
599+ CSG hingeScrew = workplateScrew. movez(hingePartThickness+ plateThickness). transformed(hingeLocation)
582600
583- CSG hingeFastenerScrew = workplateScrew. toZMax(). transformed(hingeFastener)
601+ CSG hingeFastenerScrew = workplateScrew. toZMax(). movez(topPlateStandoff) . transformed(hingeFastener)
584602 CSG movedHingeLug= hingeLug. transformed(hingeLocation)
585- CSG hingeConnection = new Cube (hingePartRadius,hingePartRadius,hingePartThickness). toCSG()
603+ CSG hingeConnection = new Cube (hingePartRadius+ topPlateStandoff ,hingePartRadius,hingePartThickness). toCSG()
586604 .toXMin()
587605 hingeLugMoving= hingeLugMoving. union(hingeConnection)
588606 // Threaded inserts for the top plate
589607 CSG hingeThread = threads. toZMax(). movez(- hingePartThickness/ 2-0.5 ). transformed(hingeLocation)
590- CSG closureThreads = threads. toZMax(). movez(-2 ). transformed(hingeFastener)
608+ CSG closureThreads = threads. toZMax(). movez(- plateThickness ). transformed(hingeFastener)
591609
610+ // USB cable resting place
611+ CSG usb = new Cube (12.0 , 14.5 ,4.56 ). toCSG()
612+ .toYMax()
613+ .toXMin()
614+ .movey(servoBlock. getMaxY())
615+ .movez(servoBlock. getMinZ()+6 )
616+ .movex(servoBlock. getMinX()+3 )
592617
593- CSG hingingPlate = new Cube (bot. getTotalX()- caseRounding* 2 ,bot. getTotalY()+ hingePartRadius+ hingePartRadius/ 2 , 2 ). toCSG()
618+ CSG hingingPlate = new Cube (bot. getTotalX()- caseRounding* 2 ,bot. getTotalY()+ hingePartRadius+ hingePartRadius/ 2 , plateThickness ). toCSG()
594619 .toZMin()
595- .movez(top. getMaxZ())
620+ .movez(top. getMaxZ()+ topPlateStandoff )
596621 .movex(top. getCenterX())
597622 .toYMax()
598623 .movey(top. getMaxY())
599624 .union(hingeLugMoving. movez(hingePartThickness+1 ). transformed(hingeLocation))
600625 .union(hingeLugMoving. movez(- hingePartThickness-1 ). transformed(hingeLocation))
626+ .union(screwStandoff)
601627 .difference(hingeScrew)
602628 .difference(hingeFastenerScrew)
603629 .difference(hingeThread)
@@ -611,12 +637,15 @@ try {
611637 .union(Caster )
612638 .union(batteryHolder)
613639 .difference(NineVolt )
640+ .difference(fingers)
614641 .difference(screws)
615642 bot= bot. union(servoBlock)
643+ .difference(usb)
616644 .difference(bothDrive)
617645 .difference(blockCordCut)
618646 .difference(NineVolt )
619647 .difference(screws)
648+ .difference(bottomThreads)
620649
621650 hingeThread. setColor(Color . GOLD )
622651 .setManufacturing({ toMfg ->
@@ -671,7 +700,10 @@ try {
671700 .setManufacturing({ toMfg ->
672701 return null
673702 })
674-
703+ bottomThreads. setColor(Color . GOLD )
704+ .setManufacturing({ toMfg ->
705+ return null
706+ })
675707 hingingPlate. setName(" hingingPlate" )
676708 .setManufacturing({ toMfg ->
677709 return toMfg. roty(180 ). toZMin()
@@ -700,6 +732,7 @@ try {
700732 bothDrive. addAssemblyStep(4 , new Transform (). movez(-30 ))
701733 servoCover. addAssemblyStep(5 , new Transform (). movez(-40 ))
702734 screws. addAssemblyStep(6 , new Transform (). movez(-60 ))
735+ bottomThreads. addAssemblyStep(1 , new Transform (). movez(-30 ))
703736 NineVolt . addAssemblyStep(11 , new Transform (). movey(-60 ))
704737
705738 leftWheel. addAssemblyStep(9 , new Transform (). movex(-30 ))
@@ -730,7 +763,9 @@ try {
730763 hingeFastenerScrew,
731764 hingingPlate,
732765 hingeThread,
733- closureThreads
766+ closureThreads,
767+ bottomThreads
768+
734769 ]
735770}catch (Throwable tr) {
736771 tr. printStackTrace()
0 commit comments