diff --git a/Marcos.xml b/Marcos.xml index 2d641183..11dc6208 100644 --- a/Marcos.xml +++ b/Marcos.xml @@ -72,7 +72,7 @@ -5.0 0.01 - 38.0 + 31.0 -89.97 @@ -273,7 +273,7 @@ -5.0 0.01 - 38.0 + 31.0 -89.97 @@ -474,7 +474,7 @@ -5.0 0.01 - 38.0 + 31.0 -89.97 @@ -675,7 +675,7 @@ -5.0 0.0 - 38.0 + 31.0 -90.0 diff --git a/MarcosCad.groovy b/MarcosCad.groovy index 05415390..61829385 100644 --- a/MarcosCad.groovy +++ b/MarcosCad.groovy @@ -267,14 +267,14 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ CSG c1 = new Cylinder(r - chamferHeight,r - chamferHeight, h,40).toCSG() CSG c2 = new Cylinder(r,r, h - chamferHeight * 2,40).toCSG().movez(chamferHeight) return c1.union(c2).hull() - } - + } + CSG StraightChamfer(double x, double y, double chamferHeight) { - CSG c1 = new Cube(x, y, chamferHeight).toCSG().movez(chamferHeight) - CSG c2 = new Cube(x+chamferHeight,y+chamferHeight, chamferHeight).toCSG() - CSG c3 = c1.union(c2).hull() - return c3.difference(c2).toZMin() - + CSG c1 = new Cube(x, y, chamferHeight).toCSG().movez(chamferHeight) + CSG c2 = new Cube(x+chamferHeight,y+chamferHeight, chamferHeight).toCSG() + CSG c3 = c1.union(c2).hull() + return c3.difference(c2).toZMin() + } CSG ChamferedRoundCornerLug(double x, double y,double r, double h, double chamferHeight) { CSG corners = ChamferedCylinder(r,h,chamferHeight) @@ -283,6 +283,7 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ } public CSG calibrationLink(double rotationCenterToBoltCenter,CSG bolt) { + CSG core= linkCore(rotationCenterToBoltCenter, bolt) double defaultValue = numbers.LinkLength - endOfPassiveLinkToBolt CSG stl= Vitamins.get(ScriptingEngine.fileFromGit( "https://github.com/OperationSmallKat/Marcos.git", @@ -306,9 +307,9 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ double SquareNutHeight = numbers.SquareNutHeight + numbers.LooseTolerance double SquareNutCutOutHeight = linkThickness/2+SquareNutWidth/2 double LinkSqaureNutSpacing = numbers.LinkSqaureNutSpacing - + //Solving for Angle of setscrew. - double hypot1 = Math.hypot(ServoHornRad + SetscrewLength + numbers.LooseTolerance, SetscrewSize/2) + double hypot1 = Math.hypot(ServoHornRad + SetscrewLength + numbers.LooseTolerance, SetscrewSize/2) double angle1 = Math.asin(linkRadius/hypot1) double angle2 = Math.asin((ServoHornRad + SetscrewLength + numbers.LooseTolerance)/hypot1) double angle3 = (Math.PI/2)-angle1 @@ -316,40 +317,11 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ double SetScrewAngle = Math.toDegrees((Math.PI/2)-(angle3+angle4)) double SetScrewChamferLength = linkRadius/Math.sin((Math.PI/2)-(angle3+angle4)) double SetScrewCutOutLength = numbers.LinkLength/Math.cos((Math.PI/2)-(angle3+angle4)) - - + + println(SetScrewChamferLength) println(SetScrewCutOutLength) - // Hull together a toolshape to make the cutter to make the shape appropratly - CSG cornerFilletCutter = new Cylinder(filletRad, linkThickness, 30).toCSG() - // cut from the corner to the ege of the link - cornerFilletCutter=cornerFilletCutter.union(cornerFilletCutter.movey(LinkMountingCutOutWidth)).hull() - // cut from the corner to the end of where the fillet should end - cornerFilletCutter=cornerFilletCutter.union(cornerFilletCutter.movex(chamfer)).hull() - CSG leftCorner = cornerFilletCutter.movex(blockx).movey(linkWidth/2-LinkMountingCutOutWidth+filletRad) - CSG rightCorner = cornerFilletCutter.movex(blockx).movey(-linkWidth/2-filletRad) - CSG lowerEnd = ChamferedCylinder(linkWidth/2, linkThickness, chamfer) - CSG linkBlock = new ChamferedCube(blockx+chamfer, linkWidth, linkThickness, chamfer).toCSG() - .toZMin() - .toXMin() - // Trim the end chamfer off the end of the link block to make the end flat - //linkBlock=linkBlock.intersect(linkBlock.getBoundingBox().movex(-chamfer)) - // Use chamferd cylendars to make the lug at the end of the link - CSG mountLug = ChamferedRoundCornerLug(blockx, linkWidth-(LinkMountingCutOutWidth*2),filletRad, linkThickness+chamfer, chamfer) - .toZMin() - .toXMax() - // Make a champfered cylendar to make the inner chamfer radius' - CSG LowerInnerCornerChamferCutLeft= ChamferedCylinder(filletRad+chamfer, chamfer*2+1, chamfer) - .movex(blockx) - .movey(linkWidth/2-LinkMountingCutOutWidth+filletRad) - .toZMax() - .movez(chamfer) - LowerInnerCornerChamferCutLeft=LowerInnerCornerChamferCutLeft.union(LowerInnerCornerChamferCutLeft.movey(LinkMountingCutOutWidth)).hull() - CSG LowerInnerCornerChamferCutRight = LowerInnerCornerChamferCutLeft.movey(-linkWidth) - // trim off the top chamfers and mofe the block end to the tip of the link block - mountLug=mountLug.difference(mountLug.getBoundingBox().movez(linkThickness)) - .movex(rotationCenterToBoltCenter+endOfPassiveLinkToBolt) CSG ServoHornCutoutChamfer = ChamferedCylinder(ServoHornRad+smallChamfer,ServoHornHeight+smallChamfer,smallChamfer) .toZMax() @@ -358,88 +330,60 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ CSG ServoHornCutout = ChamferedCylinder(ServoHornRad,ServoHornHeight,smallChamfer) //.movez(-smallChamfer) .union(ServoHornCutoutChamfer) - CSG MountHeadHoleCutoutChamfer = ChamferedCylinder(mountHeadRad+smallChamfer,linkThickness+smallChamfer,smallChamfer) - .toZMin() - .movez(linkThickness-smallChamfer) - - CSG MountHoleCutoutChamfer = ChamferedCylinder(mountRad+smallChamfer,linkThickness+smallChamfer,smallChamfer) - .toZMax() - .movez(smallChamfer) - CSG boltHole = bolt.toZMax() - .movez(linkThickness) - CSG mountAssebmbly = MountHoleCutoutChamfer - //.union(MountHeadHoleCutoutChamfer) - .union(boltHole) - .movex(rotationCenterToBoltCenter) - - CSG decritiveDivit = ChamferedCylinder(decritiveRad+chamfer,chamfer*2+1,chamfer) - .movez(linkThickness-chamfer) - CSG decoration = decorationGen(rotationCenterToBoltCenter) - CSG SquareNutCutOut = new Cube(SquareNutHeight,SquareNutWidth, SquareNutCutOutHeight).toCSG() - .toZMin() - .movex((LinkSqaureNutSpacing+linkRadius)-(SquareNutHeight/2)) - + .toZMin() + .movex((LinkSqaureNutSpacing+linkRadius)-(SquareNutHeight/2)) + CSG SquareNutChamfer = StraightChamfer(SquareNutHeight,SquareNutWidth,smallChamfer) - .movex((LinkSqaureNutSpacing+linkRadius)-(SquareNutHeight/2)) - + .movex((LinkSqaureNutSpacing+linkRadius)-(SquareNutHeight/2)) + CSG SetScrewCutOut = new Cylinder(SetscrewSize/2, SetScrewCutOutLength).toCSG() - .toZMin() - .roty(-90) - .movez(linkThickness/2) - + .toZMin() + .roty(-90) + .movez(linkThickness/2) + //Chamfer for set screw CSG cutout1 = new Cylinder((SetscrewSize)/2, SetScrewCutOutLength).toCSG() - .toZMax() - .roty(90) - .movez(linkThickness/2) - .rotz(SetScrewAngle) - + .toZMax() + .roty(90) + .movez(linkThickness/2) + .rotz(SetScrewAngle) + CSG cutout2 = new Cylinder((SetscrewSize)/2+chamfer, SetScrewCutOutLength/2).toCSG() - .toZMax() - .roty(90) - .movez(linkThickness/2) - .movex(linkRadius) - .rotz(SetScrewAngle) - + .toZMax() + .roty(90) + .movez(linkThickness/2) + .movex(linkRadius) + .rotz(SetScrewAngle) + CSG Flatwall = new Cube(numbers.LinkLength,linkWidth,linkThickness).toCSG() - .toZMax() - .movez(linkThickness) - .movex(numbers.LinkLength/2) + .toZMax() + .movez(linkThickness) + .movex(numbers.LinkLength/2) CSG Flatwall2 = new Cube(numbers.LinkLength,linkWidth,linkThickness).toCSG() - .toZMax() - .movez(linkThickness) - .movex(numbers.LinkLength/2) - .movey(chamfer) - + .toZMax() + .movez(linkThickness) + .movex(numbers.LinkLength/2) + .movey(chamfer) + CSG Flatwall3 = new Cube(numbers.LinkLength,linkWidth,linkThickness).toCSG() - .toZMax() - .movez(linkThickness) - .movex(numbers.LinkLength/2) - .movey(-linkWidth) - .movey(-chamfer) - + .toZMax() + .movez(linkThickness) + .movex(numbers.LinkLength/2) + .movey(-linkWidth) + .movey(-chamfer) + CSG p1 = ((Flatwall.intersect(cutout1)).difference(Flatwall2)) CSG p2 = (cutout2.difference(Flatwall).difference(Flatwall3)) - + CSG SetScrewChamferleft = p2.union(p1).hull() CSG SetScrewChamferright = SetScrewChamferleft.mirrory() // Assemble the whole link - CSG link = lowerEnd - .union(linkBlock) - .hull() - .union(mountLug) - .difference(leftCorner) - .difference(rightCorner) - .difference(LowerInnerCornerChamferCutRight) - .difference(LowerInnerCornerChamferCutLeft) + CSG link = core .difference(ServoHornCutout) - .difference(mountAssebmbly) - .difference(decritiveDivit) - .difference(decoration) .difference(SquareNutCutOut.rotz(SetScrewAngle)) .difference(SquareNutCutOut.rotz(-SetScrewAngle)) .difference(SetScrewCutOut.rotz(SetScrewAngle)) @@ -447,9 +391,8 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ .difference(SquareNutChamfer.rotz(SetScrewAngle)) .difference(SetScrewChamferleft) .difference(SetScrewChamferright) - .difference(bolt) //link.setIsWireFrame(true) - link.setColor(Color.RED) + link.setColor(Color.DARKRED) return link//.union(stl) //return stl @@ -505,15 +448,11 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ * * link.setColor(Color.RED) return link//.union(stl) } */ - - - public CSG passiveLink(double rotationCenterToBoltCenter,CSG bolt) { + + public CSG linkCore(double rotationCenterToBoltCenter,CSG bolt) { double defaultValue = numbers.LinkLength - endOfPassiveLinkToBolt - CSG stl= Vitamins.get(ScriptingEngine.fileFromGit( - "https://github.com/OperationSmallKat/Marcos.git", - "IdleLinkLeg.stl")) double chamfer = numbers.Chamfer2 double smallChamfer = numbers.Chamfer1 double linkWidth = numbers.LinkWidth @@ -562,13 +501,7 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ mountLug=mountLug.difference(mountLug.getBoundingBox().movez(linkThickness)) .movex(rotationCenterToBoltCenter+endOfPassiveLinkToBolt) - CSG IdlePinCutoutChamfer = ChamferedCylinder(IdlePinRad+smallChamfer,idlePinHeight+smallChamfer,smallChamfer) - .toZMax() - .movez(smallChamfer) - // Idle pin cutout - CSG IdlePinCutout = ChamferedCylinder(IdlePinRad,idlePinHeight,smallChamfer) - //.movez(-smallChamfer) - .union(IdlePinCutoutChamfer) + CSG MountHeadHoleCutoutChamfer = ChamferedCylinder(mountHeadRad+smallChamfer,linkThickness+smallChamfer,smallChamfer) .toZMin() .movez(linkThickness-smallChamfer) @@ -582,6 +515,64 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ //.union(MountHeadHoleCutoutChamfer) .union(boltHole) .movex(rotationCenterToBoltCenter) + + CSG decritiveDivit = ChamferedCylinder(decritiveRad+chamfer,chamfer*2+1,chamfer) + .movez(linkThickness-chamfer) + CSG decoration = decorationGen(rotationCenterToBoltCenter) + + // Assemble the whole link + CSG link = lowerEnd + .union(linkBlock) + .hull() + .union(mountLug) + .difference(leftCorner) + .difference(rightCorner) + .difference(LowerInnerCornerChamferCutRight) + .difference(LowerInnerCornerChamferCutLeft) + .difference(mountAssebmbly) + .difference(decritiveDivit) + .difference(decoration) + + //link.setIsWireFrame(true) + link.setColor(Color.DARKRED) + return link//.union(stl) + } + + public CSG passiveLink(double rotationCenterToBoltCenter,CSG bolt) { + CSG core= linkCore(rotationCenterToBoltCenter, bolt) + + double defaultValue = numbers.LinkLength - endOfPassiveLinkToBolt + CSG stl= Vitamins.get(ScriptingEngine.fileFromGit( + "https://github.com/OperationSmallKat/Marcos.git", + "IdleLinkLeg.stl")) + double chamfer = numbers.Chamfer2 + double smallChamfer = numbers.Chamfer1 + double linkWidth = numbers.LinkWidth + double linkThickness = numbers.LinkHeight + double filletRad=numbers.Fillet3 + double LinkMountingCutOutWidth=numbers.LinkMountingCutOutWidth + double blockx=rotationCenterToBoltCenter-numbers.LinkMountingCutOutLength-numbers.Tolerance+endOfPassiveLinkToBolt+filletRad + double IdlePinRad=(numbers.IdlePinDiamter+numbers.LooseTolerance)/2.0 + double idlePinHeight =numbers.IdlePinThickness+numbers.LooseTolerance + double mountHeadRad =( numbers.MountingScrewHeadDiamter+numbers.LooseTolerance)/2.0 + double mountRad=( numbers.MountingScrewDiamter+numbers.LooseTolerance)/2.0 + double decritiveRad = numbers.ServoHornDiameter/4.0 + double zipTieLugDepth = 4 + double zipTieWidth=3 + double zipTieLugDIstanceFromEnd = 3.7 + double zipTieClerence =1.2 + double zipTieLugX=rotationCenterToBoltCenter-endOfPassiveLinkToBolt-zipTieLugDIstanceFromEnd + + CSG IdlePinCutoutChamfer = ChamferedCylinder(IdlePinRad+smallChamfer,idlePinHeight+smallChamfer,smallChamfer) + .toZMax() + .movez(smallChamfer) + // Idle pin cutout + CSG IdlePinCutout = ChamferedCylinder(IdlePinRad,idlePinHeight,smallChamfer) + //.movez(-smallChamfer) + .union(IdlePinCutoutChamfer) + + + CSG zipLug = new RoundedCube(zipTieWidth+chamfer*2,zipTieLugDepth-zipTieClerence,linkThickness-(zipTieClerence*2)) .cornerRadius(chamfer) .toCSG() @@ -606,30 +597,18 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ zipTieCut=zipTieCut.movey(linkWidth/2) .movex(zipTieLugX) CSG rightZipTie=zipTieCut.mirrory() - CSG decritiveDivit = ChamferedCylinder(decritiveRad+chamfer,chamfer*2+1,chamfer) - .movez(linkThickness-chamfer) - CSG decoration = decorationGen(rotationCenterToBoltCenter) // Assemble the whole link - CSG link = lowerEnd - .union(linkBlock) - .hull() - .union(mountLug) - .difference(leftCorner) - .difference(rightCorner) - .difference(LowerInnerCornerChamferCutRight) - .difference(LowerInnerCornerChamferCutLeft) + CSG link = core .difference(IdlePinCutout) - .difference(mountAssebmbly) - .difference(decritiveDivit) .difference(zipTieCut) .difference(rightZipTie) - .difference(decoration) - //link.setIsWireFrame(true) - link.setColor(Color.RED) + link.setColor(Color.DARKRED) return link//.union(stl) } + + CSG decorationGen(double rotationCenterToBoltCenter) { double backOffset = 4 @@ -666,6 +645,17 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ boolean front=false; boolean isDummyGearWrist = false; double parametric = numbers.LinkLength-endOfPassiveLinkToBolt + + double l0offset =38.0-(numbers.LinkLength-endOfPassiveLinkToBolt) + double l1offset = 55.0 -(numbers.LinkLength-endOfPassiveLinkToBolt) + + if(linkIndex==0) { + parametric=d.getDH_R(linkIndex)-l0offset + } + if(linkIndex==1) { + parametric=d.getDH_R(linkIndex)-l1offset + } + if(d.getScriptingName().startsWith("Dummy")) { isDummyGearWrist=true; } @@ -695,7 +685,7 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ double link1Rotz=-90 double MototRetractDist =15 String motorKey = "Motor"+d.getScriptingName()+":"+linkIndex - + String leftMotorScrewKey = "LeftMotorScrew"+d.getScriptingName()+":"+linkIndex String rightMotorScrewKey = "RightMotorScrew"+d.getScriptingName()+":"+linkIndex String leftLinkScrewKey = "LeftLinkScrew"+d.getScriptingName()+":"+linkIndex @@ -704,44 +694,44 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ String rightLinkNutKey = "RightLinkNut"+d.getScriptingName()+":"+linkIndex String leftCalibrationNutKey = "LeftCalibrationNut"+d.getScriptingName()+":"+linkIndex String rightCalibrationNutKey = "RightCalibrationNut"+d.getScriptingName()+":"+linkIndex - + String leftCalibrationScrewKey = "LeftCalibrationScrew"+d.getScriptingName()+":"+linkIndex String rightCalibrationScrewKey = "RightCalibrationScrew"+d.getScriptingName()+":"+linkIndex - + String motorDoorScrewKey = "MotorDoorScrew"+d.getScriptingName()+":"+linkIndex String leftmotorDoorScrewKey = "LeftMotorDoorScrew"+d.getScriptingName()+":"+linkIndex String rightmotorDoorScrewKey = "RightMotorDoorScrew"+d.getScriptingName()+":"+linkIndex - - + + bom.set(motorKey,conf.getElectroMechanicalType(),conf.getElectroMechanicalSize(),new TransformNR()) - + bom.set(leftMotorScrewKey,"PhillipsRoundedHeadThreadFormingScrews","M2x8",new TransformNR()) bom.set(rightMotorScrewKey,"PhillipsRoundedHeadThreadFormingScrews","M2x8",new TransformNR()) - + bom.set(leftLinkScrewKey,"chamferedScrew","M3x16",new TransformNR()) bom.set(rightLinkScrewKey,"chamferedScrew","M3x16",new TransformNR()) - + bom.set(leftLinkNutKey,"squareNut","M3",new TransformNR()) bom.set(rightLinkNutKey,"squareNut","M3",new TransformNR()) - + bom.set(leftCalibrationNutKey,"squareNut","M3",new TransformNR()) bom.set(rightCalibrationNutKey,"squareNut","M3",new TransformNR()) - - + + bom.set(leftCalibrationScrewKey,"conePointSetScrew","M3x8",new TransformNR()) bom.set(rightCalibrationScrewKey,"conePointSetScrew","M3x8",new TransformNR()) - LengthParameter offset = new LengthParameter("printerOffset",0.0,[2,0]) - LengthParameter facets = new LengthParameter("Bolt Hole Facet Count",10,[40,10]) + LengthParameter offset = new LengthParameter("printerOffset",0.0,[2, 0]) + LengthParameter facets = new LengthParameter("Bolt Hole Facet Count",10,[40, 10]) facets.setMM(30) offset.setMM(numbers.LooseTolerance) CSG boltl = bom.get(leftLinkScrewKey) CSG boltr = bom.get(rightLinkScrewKey) - + if(linkIndex==0) { - + bom.set(leftmotorDoorScrewKey,"PhillipsRoundedHeadThreadFormingScrews","M2x8",new TransformNR()) bom.set(rightmotorDoorScrewKey,"PhillipsRoundedHeadThreadFormingScrews","M2x8",new TransformNR()) - + motor=motor.rotz(left?180:0) motor=motor.roty(front?180:0) // the first link motor is located in the body @@ -767,7 +757,7 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ // note the hore is moved to the centerline distance value before the transform to link space if(!isDummyGearWrist) { CSG movedDrive = calibrationLink(parametric,boltl) - .movez(distanceToMotorTop)//.rotz(180) + .movez(distanceToMotorTop)//.rotz(180) double xrot=180 xrot+=linkIndex==0&&(!front)?180:0 xrot+=linkIndex!=0&&(!left)?180:0 @@ -938,7 +928,7 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ double kinematicsLen = d.getDH_R(linkIndex) double staticOffset = 55.500-numbers.LinkLength-endOfPassiveLinkToBolt double calculated = kinematicsLen-staticOffset - + double xrot=0 CSG link = passiveLink(parametric,boltr) .movez(distanceToMotorTop) @@ -977,7 +967,9 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ CSG getNeckLink() { double neckLenFudge = 4.5 double parametric = numbers.LinkLength-endOfPassiveLinkToBolt - CSG boltl = bom.get("RightLinkScrewTail:1") + String rightLinkScrewKey="RightLinkScrewTail:1" + bom.set(rightLinkScrewKey,"chamferedScrew","M3x16",new TransformNR()) + CSG boltl = bom.get(rightLinkScrewKey) return passiveLink(parametric+neckLenFudge,boltl) .rotx(180) .movez(-15.1) @@ -986,15 +978,15 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ boolean left=false; boolean front=false; boolean isDummyGearWrist = false; - + String leftLinkScrewKey = "LeftLinkScrew"+d.getScriptingName()+":"+linkIndex String rightLinkScrewKey = "RightLinkScrew"+d.getScriptingName()+":"+linkIndex String leftLinkNutKey = "LeftLinkNut"+d.getScriptingName()+":"+linkIndex String rightLinkNutKey = "RightLinkNut"+d.getScriptingName()+":"+linkIndex - + String MountScrewKey = "MountScrew"+d.getScriptingName()+":"+linkIndex String MountNutKey = "MountNut"+d.getScriptingName()+":"+linkIndex - + if(d.getScriptingName().startsWith("Dummy")) { isDummyGearWrist=true; } @@ -1026,10 +1018,9 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ } if(linkIndex==1) { bom.set(leftLinkScrewKey,"capScrew","M3x16",new TransformNR()) - bom.set(rightLinkScrewKey,"chamferedScrew","M3x16",new TransformNR()) bom.set(leftLinkNutKey,"squareNut","M3",new TransformNR()) bom.set(rightLinkNutKey,"squareNut","M3",new TransformNR()) - + String name= d.getScriptingName(); CSG link = getNeckLink() @@ -1124,12 +1115,12 @@ class cadGenMarcos implements ICadGenerator,IgenerateBed{ bom.set("MotherboardScrew2","PhillipsRoundedHeadThreadFormingScrews","M3x6",new TransformNR()) bom.set("MotherboardScrew3","PhillipsRoundedHeadThreadFormingScrews","M3x6",new TransformNR()) bom.set("MotherboardScrew4","PhillipsRoundedHeadThreadFormingScrews","M3x6",new TransformNR()) - + bom.set("CoverScrew1","chamferedScrew","M3x16",new TransformNR()) bom.set("CoverScrew2","chamferedScrew","M3x16",new TransformNR()) bom.set("CoverScrew3","chamferedScrew","M3x16",new TransformNR()) bom.set("CoverScrew4","chamferedScrew","M3x16",new TransformNR()) - + DHParameterKinematics dh = arg0.getLegs().get(0); double zCenterLine = dh.getRobotToFiducialTransform().getZ()+numbers.ServoThickness/2.0 @@ -1319,7 +1310,10 @@ def gen= new cadGenMarcos(resinPrintServoMount,numbers) //MobileBase mb = (MobileBase)DeviceManager.getSpecificDevice("Marcos"); //gen.setMobileBase(mb) //DHParameterKinematics limb = gen.getByName(mb,"RightFront") -//return [gen.generateCad(limb,0)] -//return [gen.calibrationLink(32-4.5)] +//return [ +// gen.generateCad(limb,0) +// //,gen.generateCad(limb,1) +//] + return gen diff --git a/manufacturing/bom.csv b/manufacturing/bom.csv index e0255045..0fa90441 100644 --- a/manufacturing/bom.csv +++ b/manufacturing/bom.csv @@ -1,8 +1,8 @@ name,qty,source hobbyServo:mg92b,16,https://www.aliexpress.us/item/3256801883704529.html?spm=a2g0o.detail.1000014.1.7a771b29SLCuHw -chamferedScrew:M3x16,4,https://www.mcmaster.com/91294A134/ +chamferedScrew:M3x16,37,https://www.mcmaster.com/91294A134/ PhillipsRoundedHeadThreadFormingScrews:M2x8,56,https://www.mcmaster.com/90380A327/ -squareNut:M3,72,https://www.mcmaster.com/97259A101/ +squareNut:M3,70,https://www.mcmaster.com/97259A101/ PhillipsRoundedHeadThreadFormingScrews:M3x6,4,https://www.mcmaster.com/99461A939/ -capScrew:M3x16,40,https://www.mcmaster.com/91294A134/ +capScrew:M3x16,4,https://www.mcmaster.com/91290A120/ conePointSetScrew:M3x8,32,https://www.mcmaster.com/91210A101/ diff --git a/manufacturing/bom.json b/manufacturing/bom.json index 8899cefc..df5e1497 100644 --- a/manufacturing/bom.json +++ b/manufacturing/bom.json @@ -361,13 +361,11 @@ } } } - } - ], - "PhillipsRoundedHeadThreadFormingScrews:M2x8": [ + }, { - "name": "LeftMotorScrewLeftRear:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewTail:1", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -383,9 +381,9 @@ } }, { - "name": "RightMotorScrewLeftRear:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewLeftRear:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -401,9 +399,9 @@ } }, { - "name": "LeftMotorDoorScrewLeftRear:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewLeftRear:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -419,9 +417,9 @@ } }, { - "name": "RightMotorDoorScrewLeftRear:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewLeftRear:1", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -437,9 +435,9 @@ } }, { - "name": "LeftMotorScrewLeftRear:1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewLeftRear:1", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -455,9 +453,9 @@ } }, { - "name": "RightMotorScrewLeftRear:1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewLeftRear:2", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -473,9 +471,9 @@ } }, { - "name": "MotorDoorScrewLeftRear:1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewLeftRear:2", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -491,9 +489,9 @@ } }, { - "name": "LeftMotorScrewLeftRear:2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewRightFront:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -509,9 +507,9 @@ } }, { - "name": "RightMotorScrewLeftRear:2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewRightFront:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -527,9 +525,9 @@ } }, { - "name": "MotorDoorScrewLeftRear:2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewRightFront:1", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -545,9 +543,9 @@ } }, { - "name": "LeftMotorScrewRightFront:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewRightFront:1", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -563,9 +561,9 @@ } }, { - "name": "RightMotorScrewRightFront:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewRightFront:2", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -581,9 +579,9 @@ } }, { - "name": "LeftMotorDoorScrewRightFront:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewRightFront:2", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -599,9 +597,9 @@ } }, { - "name": "RightMotorDoorScrewRightFront:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewLeftFront:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -617,9 +615,9 @@ } }, { - "name": "LeftMotorScrewRightFront:1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewLeftFront:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -635,9 +633,9 @@ } }, { - "name": "RightMotorScrewRightFront:1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewLeftFront:1", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -653,9 +651,9 @@ } }, { - "name": "MotorDoorScrewRightFront:1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewLeftFront:1", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -671,9 +669,9 @@ } }, { - "name": "LeftMotorScrewRightFront:2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewLeftFront:2", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -689,9 +687,9 @@ } }, { - "name": "RightMotorScrewRightFront:2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewLeftFront:2", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -707,9 +705,9 @@ } }, { - "name": "MotorDoorScrewRightFront:2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewRightRear:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -725,9 +723,9 @@ } }, { - "name": "LeftMotorScrewLeftFront:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewRightRear:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -743,9 +741,9 @@ } }, { - "name": "RightMotorScrewLeftFront:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewRightRear:1", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -761,9 +759,9 @@ } }, { - "name": "LeftMotorDoorScrewLeftFront:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewRightRear:1", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -779,9 +777,9 @@ } }, { - "name": "RightMotorDoorScrewLeftFront:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewRightRear:2", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -797,9 +795,9 @@ } }, { - "name": "LeftMotorScrewLeftFront:1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewRightRear:2", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -815,9 +813,9 @@ } }, { - "name": "RightMotorScrewLeftFront:1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewDummyLeftRear:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -833,9 +831,9 @@ } }, { - "name": "MotorDoorScrewLeftFront:1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewDummyLeftRear:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -851,9 +849,9 @@ } }, { - "name": "LeftMotorScrewLeftFront:2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewDummyRightFront:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -869,9 +867,9 @@ } }, { - "name": "RightMotorScrewLeftFront:2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewDummyRightFront:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -887,9 +885,9 @@ } }, { - "name": "MotorDoorScrewLeftFront:2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewDummyLeftFront:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -905,9 +903,9 @@ } }, { - "name": "LeftMotorScrewRightRear:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewDummyLeftFront:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -923,9 +921,9 @@ } }, { - "name": "RightMotorScrewRightRear:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "LeftLinkScrewDummyRightRear:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -941,9 +939,9 @@ } }, { - "name": "LeftMotorDoorScrewRightRear:0", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M2x8", + "name": "RightLinkScrewDummyRightRear:0", + "type": "chamferedScrew", + "size": "M3x16", "pose": { "x": 0.0, "y": 0.0, @@ -957,9 +955,11 @@ } } } - }, + } + ], + "PhillipsRoundedHeadThreadFormingScrews:M2x8": [ { - "name": "RightMotorDoorScrewRightRear:0", + "name": "LeftMotorScrewLeftRear:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -977,7 +977,7 @@ } }, { - "name": "LeftMotorScrewRightRear:1", + "name": "RightMotorScrewLeftRear:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -995,7 +995,7 @@ } }, { - "name": "RightMotorScrewRightRear:1", + "name": "LeftMotorDoorScrewLeftRear:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1013,7 +1013,7 @@ } }, { - "name": "MotorDoorScrewRightRear:1", + "name": "RightMotorDoorScrewLeftRear:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1031,7 +1031,7 @@ } }, { - "name": "LeftMotorScrewRightRear:2", + "name": "LeftMotorScrewLeftRear:1", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1049,7 +1049,7 @@ } }, { - "name": "RightMotorScrewRightRear:2", + "name": "RightMotorScrewLeftRear:1", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1067,7 +1067,7 @@ } }, { - "name": "MotorDoorScrewRightRear:2", + "name": "MotorDoorScrewLeftRear:1", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1085,7 +1085,7 @@ } }, { - "name": "LeftMotorScrewDummyLeftRear:0", + "name": "LeftMotorScrewLeftRear:2", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1103,7 +1103,7 @@ } }, { - "name": "RightMotorScrewDummyLeftRear:0", + "name": "RightMotorScrewLeftRear:2", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1121,7 +1121,7 @@ } }, { - "name": "LeftMotorDoorScrewDummyLeftRear:0", + "name": "MotorDoorScrewLeftRear:2", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1139,7 +1139,7 @@ } }, { - "name": "RightMotorDoorScrewDummyLeftRear:0", + "name": "LeftMotorScrewRightFront:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1157,7 +1157,7 @@ } }, { - "name": "LeftMotorScrewDummyRightFront:0", + "name": "RightMotorScrewRightFront:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1175,7 +1175,7 @@ } }, { - "name": "RightMotorScrewDummyRightFront:0", + "name": "LeftMotorDoorScrewRightFront:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1193,7 +1193,7 @@ } }, { - "name": "LeftMotorDoorScrewDummyRightFront:0", + "name": "RightMotorDoorScrewRightFront:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1211,7 +1211,7 @@ } }, { - "name": "RightMotorDoorScrewDummyRightFront:0", + "name": "LeftMotorScrewRightFront:1", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1229,7 +1229,7 @@ } }, { - "name": "LeftMotorScrewDummyLeftFront:0", + "name": "RightMotorScrewRightFront:1", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1247,7 +1247,7 @@ } }, { - "name": "RightMotorScrewDummyLeftFront:0", + "name": "MotorDoorScrewRightFront:1", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1265,7 +1265,7 @@ } }, { - "name": "LeftMotorDoorScrewDummyLeftFront:0", + "name": "LeftMotorScrewRightFront:2", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1283,7 +1283,7 @@ } }, { - "name": "RightMotorDoorScrewDummyLeftFront:0", + "name": "RightMotorScrewRightFront:2", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1301,7 +1301,7 @@ } }, { - "name": "LeftMotorScrewDummyRightRear:0", + "name": "MotorDoorScrewRightFront:2", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1319,7 +1319,7 @@ } }, { - "name": "RightMotorScrewDummyRightRear:0", + "name": "LeftMotorScrewLeftFront:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1337,7 +1337,7 @@ } }, { - "name": "LeftMotorDoorScrewDummyRightRear:0", + "name": "RightMotorScrewLeftFront:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1355,7 +1355,7 @@ } }, { - "name": "RightMotorDoorScrewDummyRightRear:0", + "name": "LeftMotorDoorScrewLeftFront:0", "type": "PhillipsRoundedHeadThreadFormingScrews", "size": "M2x8", "pose": { @@ -1371,13 +1371,11 @@ } } } - } - ], - "squareNut:M3": [ + }, { - "name": "LeftLinkNutLeftRear:0", - "type": "squareNut", - "size": "M3", + "name": "RightMotorDoorScrewLeftFront:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1393,9 +1391,9 @@ } }, { - "name": "RightLinkNutLeftRear:0", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorScrewLeftFront:1", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1411,9 +1409,9 @@ } }, { - "name": "LeftCalibrationNutLeftRear:0", - "type": "squareNut", - "size": "M3", + "name": "RightMotorScrewLeftFront:1", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1429,9 +1427,9 @@ } }, { - "name": "RightCalibrationNutLeftRear:0", - "type": "squareNut", - "size": "M3", + "name": "MotorDoorScrewLeftFront:1", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1447,9 +1445,9 @@ } }, { - "name": "LeftLinkNutLeftRear:1", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorScrewLeftFront:2", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1465,9 +1463,9 @@ } }, { - "name": "RightLinkNutLeftRear:1", - "type": "squareNut", - "size": "M3", + "name": "RightMotorScrewLeftFront:2", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1483,9 +1481,9 @@ } }, { - "name": "LeftCalibrationNutLeftRear:1", - "type": "squareNut", - "size": "M3", + "name": "MotorDoorScrewLeftFront:2", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1501,9 +1499,9 @@ } }, { - "name": "RightCalibrationNutLeftRear:1", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorScrewRightRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1519,9 +1517,9 @@ } }, { - "name": "LeftLinkNutLeftRear:2", - "type": "squareNut", - "size": "M3", + "name": "RightMotorScrewRightRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1537,9 +1535,9 @@ } }, { - "name": "RightLinkNutLeftRear:2", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorDoorScrewRightRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1555,9 +1553,9 @@ } }, { - "name": "LeftCalibrationNutLeftRear:2", - "type": "squareNut", - "size": "M3", + "name": "RightMotorDoorScrewRightRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1573,9 +1571,9 @@ } }, { - "name": "RightCalibrationNutLeftRear:2", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorScrewRightRear:1", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1591,9 +1589,9 @@ } }, { - "name": "LeftLinkNutRightFront:0", - "type": "squareNut", - "size": "M3", + "name": "RightMotorScrewRightRear:1", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1609,9 +1607,9 @@ } }, { - "name": "RightLinkNutRightFront:0", - "type": "squareNut", - "size": "M3", + "name": "MotorDoorScrewRightRear:1", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1627,9 +1625,9 @@ } }, { - "name": "LeftCalibrationNutRightFront:0", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorScrewRightRear:2", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1645,9 +1643,9 @@ } }, { - "name": "RightCalibrationNutRightFront:0", - "type": "squareNut", - "size": "M3", + "name": "RightMotorScrewRightRear:2", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1663,9 +1661,9 @@ } }, { - "name": "LeftLinkNutRightFront:1", - "type": "squareNut", - "size": "M3", + "name": "MotorDoorScrewRightRear:2", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1681,9 +1679,9 @@ } }, { - "name": "RightLinkNutRightFront:1", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorScrewDummyLeftRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1699,9 +1697,9 @@ } }, { - "name": "LeftCalibrationNutRightFront:1", - "type": "squareNut", - "size": "M3", + "name": "RightMotorScrewDummyLeftRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1717,9 +1715,9 @@ } }, { - "name": "RightCalibrationNutRightFront:1", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorDoorScrewDummyLeftRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1735,9 +1733,9 @@ } }, { - "name": "LeftLinkNutRightFront:2", - "type": "squareNut", - "size": "M3", + "name": "RightMotorDoorScrewDummyLeftRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1753,9 +1751,9 @@ } }, { - "name": "RightLinkNutRightFront:2", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorScrewDummyRightFront:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1771,9 +1769,9 @@ } }, { - "name": "LeftCalibrationNutRightFront:2", - "type": "squareNut", - "size": "M3", + "name": "RightMotorScrewDummyRightFront:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1789,9 +1787,9 @@ } }, { - "name": "RightCalibrationNutRightFront:2", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorDoorScrewDummyRightFront:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1807,9 +1805,9 @@ } }, { - "name": "LeftLinkNutLeftFront:0", - "type": "squareNut", - "size": "M3", + "name": "RightMotorDoorScrewDummyRightFront:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1825,9 +1823,9 @@ } }, { - "name": "RightLinkNutLeftFront:0", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorScrewDummyLeftFront:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1843,9 +1841,9 @@ } }, { - "name": "LeftCalibrationNutLeftFront:0", - "type": "squareNut", - "size": "M3", + "name": "RightMotorScrewDummyLeftFront:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1861,9 +1859,9 @@ } }, { - "name": "RightCalibrationNutLeftFront:0", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorDoorScrewDummyLeftFront:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1879,9 +1877,9 @@ } }, { - "name": "LeftLinkNutLeftFront:1", - "type": "squareNut", - "size": "M3", + "name": "RightMotorDoorScrewDummyLeftFront:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1897,9 +1895,9 @@ } }, { - "name": "RightLinkNutLeftFront:1", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorScrewDummyRightRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1915,9 +1913,9 @@ } }, { - "name": "LeftCalibrationNutLeftFront:1", - "type": "squareNut", - "size": "M3", + "name": "RightMotorScrewDummyRightRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1933,9 +1931,9 @@ } }, { - "name": "RightCalibrationNutLeftFront:1", - "type": "squareNut", - "size": "M3", + "name": "LeftMotorDoorScrewDummyRightRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1951,9 +1949,9 @@ } }, { - "name": "LeftLinkNutLeftFront:2", - "type": "squareNut", - "size": "M3", + "name": "RightMotorDoorScrewDummyRightRear:0", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M2x8", "pose": { "x": 0.0, "y": 0.0, @@ -1967,9 +1965,11 @@ } } } - }, + } + ], + "squareNut:M3": [ { - "name": "RightLinkNutLeftFront:2", + "name": "LeftLinkNutLeftRear:0", "type": "squareNut", "size": "M3", "pose": { @@ -1987,7 +1987,7 @@ } }, { - "name": "LeftCalibrationNutLeftFront:2", + "name": "RightLinkNutLeftRear:0", "type": "squareNut", "size": "M3", "pose": { @@ -2005,7 +2005,7 @@ } }, { - "name": "RightCalibrationNutLeftFront:2", + "name": "LeftCalibrationNutLeftRear:0", "type": "squareNut", "size": "M3", "pose": { @@ -2023,7 +2023,7 @@ } }, { - "name": "LeftLinkNutRightRear:0", + "name": "RightCalibrationNutLeftRear:0", "type": "squareNut", "size": "M3", "pose": { @@ -2041,7 +2041,7 @@ } }, { - "name": "RightLinkNutRightRear:0", + "name": "LeftLinkNutLeftRear:1", "type": "squareNut", "size": "M3", "pose": { @@ -2059,7 +2059,7 @@ } }, { - "name": "LeftCalibrationNutRightRear:0", + "name": "RightLinkNutLeftRear:1", "type": "squareNut", "size": "M3", "pose": { @@ -2077,7 +2077,7 @@ } }, { - "name": "RightCalibrationNutRightRear:0", + "name": "LeftCalibrationNutLeftRear:1", "type": "squareNut", "size": "M3", "pose": { @@ -2095,7 +2095,7 @@ } }, { - "name": "LeftLinkNutRightRear:1", + "name": "RightCalibrationNutLeftRear:1", "type": "squareNut", "size": "M3", "pose": { @@ -2113,7 +2113,7 @@ } }, { - "name": "RightLinkNutRightRear:1", + "name": "LeftLinkNutLeftRear:2", "type": "squareNut", "size": "M3", "pose": { @@ -2131,7 +2131,7 @@ } }, { - "name": "LeftCalibrationNutRightRear:1", + "name": "RightLinkNutLeftRear:2", "type": "squareNut", "size": "M3", "pose": { @@ -2149,7 +2149,7 @@ } }, { - "name": "RightCalibrationNutRightRear:1", + "name": "LeftCalibrationNutLeftRear:2", "type": "squareNut", "size": "M3", "pose": { @@ -2167,7 +2167,7 @@ } }, { - "name": "LeftLinkNutRightRear:2", + "name": "RightCalibrationNutLeftRear:2", "type": "squareNut", "size": "M3", "pose": { @@ -2185,7 +2185,7 @@ } }, { - "name": "RightLinkNutRightRear:2", + "name": "LeftLinkNutRightFront:0", "type": "squareNut", "size": "M3", "pose": { @@ -2203,7 +2203,7 @@ } }, { - "name": "LeftCalibrationNutRightRear:2", + "name": "RightLinkNutRightFront:0", "type": "squareNut", "size": "M3", "pose": { @@ -2221,7 +2221,7 @@ } }, { - "name": "RightCalibrationNutRightRear:2", + "name": "LeftCalibrationNutRightFront:0", "type": "squareNut", "size": "M3", "pose": { @@ -2239,7 +2239,7 @@ } }, { - "name": "LeftLinkNutDummyLeftRear:0", + "name": "RightCalibrationNutRightFront:0", "type": "squareNut", "size": "M3", "pose": { @@ -2257,7 +2257,7 @@ } }, { - "name": "RightLinkNutDummyLeftRear:0", + "name": "LeftLinkNutRightFront:1", "type": "squareNut", "size": "M3", "pose": { @@ -2275,7 +2275,7 @@ } }, { - "name": "LeftCalibrationNutDummyLeftRear:0", + "name": "RightLinkNutRightFront:1", "type": "squareNut", "size": "M3", "pose": { @@ -2293,7 +2293,7 @@ } }, { - "name": "RightCalibrationNutDummyLeftRear:0", + "name": "LeftCalibrationNutRightFront:1", "type": "squareNut", "size": "M3", "pose": { @@ -2311,7 +2311,7 @@ } }, { - "name": "LeftLinkNutDummyRightFront:0", + "name": "RightCalibrationNutRightFront:1", "type": "squareNut", "size": "M3", "pose": { @@ -2329,7 +2329,7 @@ } }, { - "name": "RightLinkNutDummyRightFront:0", + "name": "LeftLinkNutRightFront:2", "type": "squareNut", "size": "M3", "pose": { @@ -2347,7 +2347,7 @@ } }, { - "name": "LeftCalibrationNutDummyRightFront:0", + "name": "RightLinkNutRightFront:2", "type": "squareNut", "size": "M3", "pose": { @@ -2365,7 +2365,7 @@ } }, { - "name": "RightCalibrationNutDummyRightFront:0", + "name": "LeftCalibrationNutRightFront:2", "type": "squareNut", "size": "M3", "pose": { @@ -2383,7 +2383,7 @@ } }, { - "name": "LeftLinkNutDummyLeftFront:0", + "name": "RightCalibrationNutRightFront:2", "type": "squareNut", "size": "M3", "pose": { @@ -2401,7 +2401,7 @@ } }, { - "name": "RightLinkNutDummyLeftFront:0", + "name": "LeftLinkNutLeftFront:0", "type": "squareNut", "size": "M3", "pose": { @@ -2419,7 +2419,7 @@ } }, { - "name": "LeftCalibrationNutDummyLeftFront:0", + "name": "RightLinkNutLeftFront:0", "type": "squareNut", "size": "M3", "pose": { @@ -2437,7 +2437,7 @@ } }, { - "name": "RightCalibrationNutDummyLeftFront:0", + "name": "LeftCalibrationNutLeftFront:0", "type": "squareNut", "size": "M3", "pose": { @@ -2455,7 +2455,7 @@ } }, { - "name": "LeftLinkNutDummyRightRear:0", + "name": "RightCalibrationNutLeftFront:0", "type": "squareNut", "size": "M3", "pose": { @@ -2473,7 +2473,7 @@ } }, { - "name": "RightLinkNutDummyRightRear:0", + "name": "LeftLinkNutLeftFront:1", "type": "squareNut", "size": "M3", "pose": { @@ -2491,7 +2491,7 @@ } }, { - "name": "LeftCalibrationNutDummyRightRear:0", + "name": "RightLinkNutLeftFront:1", "type": "squareNut", "size": "M3", "pose": { @@ -2509,7 +2509,7 @@ } }, { - "name": "RightCalibrationNutDummyRightRear:0", + "name": "LeftCalibrationNutLeftFront:1", "type": "squareNut", "size": "M3", "pose": { @@ -2527,7 +2527,7 @@ } }, { - "name": "MountNutHead:1", + "name": "RightCalibrationNutLeftFront:1", "type": "squareNut", "size": "M3", "pose": { @@ -2545,7 +2545,7 @@ } }, { - "name": "LeftLinkNutHead:1", + "name": "LeftLinkNutLeftFront:2", "type": "squareNut", "size": "M3", "pose": { @@ -2563,7 +2563,7 @@ } }, { - "name": "RightLinkNutHead:1", + "name": "RightLinkNutLeftFront:2", "type": "squareNut", "size": "M3", "pose": { @@ -2581,7 +2581,7 @@ } }, { - "name": "MountNutTail:1", + "name": "LeftCalibrationNutLeftFront:2", "type": "squareNut", "size": "M3", "pose": { @@ -2599,7 +2599,7 @@ } }, { - "name": "LeftLinkNutTail:1", + "name": "RightCalibrationNutLeftFront:2", "type": "squareNut", "size": "M3", "pose": { @@ -2617,7 +2617,7 @@ } }, { - "name": "RightLinkNutTail:1", + "name": "LeftLinkNutRightRear:0", "type": "squareNut", "size": "M3", "pose": { @@ -2635,7 +2635,7 @@ } }, { - "name": "MountNutHead:0", + "name": "RightLinkNutRightRear:0", "type": "squareNut", "size": "M3", "pose": { @@ -2653,7 +2653,7 @@ } }, { - "name": "MountNutTail:0", + "name": "LeftCalibrationNutRightRear:0", "type": "squareNut", "size": "M3", "pose": { @@ -2669,31 +2669,11 @@ } } } - } - ], - "PhillipsRoundedHeadThreadFormingScrews:M3x6": [ - { - "name": "MotherboardScrew1", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M3x6", - "pose": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "rotation": { - "storage": { - "q0": 1.0, - "q1": 0.0, - "q2": 0.0, - "q3": 0.0 - } - } - } }, { - "name": "MotherboardScrew2", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M3x6", + "name": "RightCalibrationNutRightRear:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2709,9 +2689,9 @@ } }, { - "name": "MotherboardScrew3", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M3x6", + "name": "LeftLinkNutRightRear:1", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2727,9 +2707,9 @@ } }, { - "name": "MotherboardScrew4", - "type": "PhillipsRoundedHeadThreadFormingScrews", - "size": "M3x6", + "name": "RightLinkNutRightRear:1", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2743,13 +2723,11 @@ } } } - } - ], - "capScrew:M3x16": [ + }, { - "name": "LeftLinkScrewLeftRear:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftCalibrationNutRightRear:1", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2765,9 +2743,9 @@ } }, { - "name": "RightLinkScrewLeftRear:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightCalibrationNutRightRear:1", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2783,9 +2761,9 @@ } }, { - "name": "LeftLinkScrewLeftRear:1", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftLinkNutRightRear:2", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2801,9 +2779,9 @@ } }, { - "name": "RightLinkScrewLeftRear:1", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightLinkNutRightRear:2", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2819,9 +2797,9 @@ } }, { - "name": "LeftLinkScrewLeftRear:2", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftCalibrationNutRightRear:2", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2837,9 +2815,9 @@ } }, { - "name": "RightLinkScrewLeftRear:2", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightCalibrationNutRightRear:2", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2855,9 +2833,9 @@ } }, { - "name": "LeftLinkScrewRightFront:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftLinkNutDummyLeftRear:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2873,9 +2851,9 @@ } }, { - "name": "RightLinkScrewRightFront:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightLinkNutDummyLeftRear:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2891,9 +2869,9 @@ } }, { - "name": "LeftLinkScrewRightFront:1", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftCalibrationNutDummyLeftRear:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2909,9 +2887,9 @@ } }, { - "name": "RightLinkScrewRightFront:1", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightCalibrationNutDummyLeftRear:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2927,9 +2905,9 @@ } }, { - "name": "LeftLinkScrewRightFront:2", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftLinkNutDummyRightFront:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2945,9 +2923,9 @@ } }, { - "name": "RightLinkScrewRightFront:2", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightLinkNutDummyRightFront:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2963,9 +2941,9 @@ } }, { - "name": "LeftLinkScrewLeftFront:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftCalibrationNutDummyRightFront:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2981,9 +2959,9 @@ } }, { - "name": "RightLinkScrewLeftFront:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightCalibrationNutDummyRightFront:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -2999,9 +2977,9 @@ } }, { - "name": "LeftLinkScrewLeftFront:1", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftLinkNutDummyLeftFront:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3017,9 +2995,9 @@ } }, { - "name": "RightLinkScrewLeftFront:1", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightLinkNutDummyLeftFront:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3035,9 +3013,9 @@ } }, { - "name": "LeftLinkScrewLeftFront:2", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftCalibrationNutDummyLeftFront:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3053,9 +3031,9 @@ } }, { - "name": "RightLinkScrewLeftFront:2", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightCalibrationNutDummyLeftFront:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3071,9 +3049,9 @@ } }, { - "name": "LeftLinkScrewRightRear:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftLinkNutDummyRightRear:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3089,9 +3067,9 @@ } }, { - "name": "RightLinkScrewRightRear:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightLinkNutDummyRightRear:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3107,9 +3085,9 @@ } }, { - "name": "LeftLinkScrewRightRear:1", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftCalibrationNutDummyRightRear:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3125,9 +3103,9 @@ } }, { - "name": "RightLinkScrewRightRear:1", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightCalibrationNutDummyRightRear:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3143,9 +3121,9 @@ } }, { - "name": "LeftLinkScrewRightRear:2", - "type": "chamferedScrew", - "size": "M3x16", + "name": "MountNutHead:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3161,9 +3139,9 @@ } }, { - "name": "RightLinkScrewRightRear:2", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftLinkNutHead:1", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3179,9 +3157,9 @@ } }, { - "name": "LeftLinkScrewDummyLeftRear:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightLinkNutHead:1", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3197,9 +3175,9 @@ } }, { - "name": "RightLinkScrewDummyLeftRear:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "MountNutTail:0", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3215,9 +3193,9 @@ } }, { - "name": "LeftLinkScrewDummyRightFront:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "LeftLinkNutTail:1", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3233,9 +3211,9 @@ } }, { - "name": "RightLinkScrewDummyRightFront:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "RightLinkNutTail:1", + "type": "squareNut", + "size": "M3", "pose": { "x": 0.0, "y": 0.0, @@ -3249,11 +3227,13 @@ } } } - }, + } + ], + "PhillipsRoundedHeadThreadFormingScrews:M3x6": [ { - "name": "LeftLinkScrewDummyLeftFront:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "MotherboardScrew1", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M3x6", "pose": { "x": 0.0, "y": 0.0, @@ -3269,9 +3249,9 @@ } }, { - "name": "RightLinkScrewDummyLeftFront:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "MotherboardScrew2", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M3x6", "pose": { "x": 0.0, "y": 0.0, @@ -3287,9 +3267,9 @@ } }, { - "name": "LeftLinkScrewDummyRightRear:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "MotherboardScrew3", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M3x6", "pose": { "x": 0.0, "y": 0.0, @@ -3305,9 +3285,9 @@ } }, { - "name": "RightLinkScrewDummyRightRear:0", - "type": "chamferedScrew", - "size": "M3x16", + "name": "MotherboardScrew4", + "type": "PhillipsRoundedHeadThreadFormingScrews", + "size": "M3x6", "pose": { "x": 0.0, "y": 0.0, @@ -3321,9 +3301,11 @@ } } } - }, + } + ], + "capScrew:M3x16": [ { - "name": "MountScrewHead:1", + "name": "MountScrewHead:0", "type": "capScrew", "size": "M3x16", "pose": { @@ -3359,25 +3341,7 @@ } }, { - "name": "RightLinkScrewHead:1", - "type": "chamferedScrew", - "size": "M3x16", - "pose": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "rotation": { - "storage": { - "q0": 1.0, - "q1": 0.0, - "q2": 0.0, - "q3": 0.0 - } - } - } - }, - { - "name": "MountScrewTail:1", + "name": "MountScrewTail:0", "type": "capScrew", "size": "M3x16", "pose": { @@ -3411,60 +3375,6 @@ } } } - }, - { - "name": "RightLinkScrewTail:1", - "type": "chamferedScrew", - "size": "M3x16", - "pose": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "rotation": { - "storage": { - "q0": 1.0, - "q1": 0.0, - "q2": 0.0, - "q3": 0.0 - } - } - } - }, - { - "name": "MountScrewHead:0", - "type": "capScrew", - "size": "M3x16", - "pose": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "rotation": { - "storage": { - "q0": 1.0, - "q1": 0.0, - "q2": 0.0, - "q3": 0.0 - } - } - } - }, - { - "name": "MountScrewTail:0", - "type": "capScrew", - "size": "M3x16", - "pose": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "rotation": { - "storage": { - "q0": 1.0, - "q1": 0.0, - "q2": 0.0, - "q3": 0.0 - } - } - } } ], "conePointSetScrew:M3x8": [