diff --git a/rocolib/builders/boat/mounts/DoubleServoMountBuilder.py b/rocolib/builders/boat/mounts/DoubleServoMountBuilder.py index 7e1c6fdf83fd64c67aeb531e873a504e6d581d88..91b6a046376c568abd5f18497231eea4a3a5cba8 100644 --- a/rocolib/builders/boat/mounts/DoubleServoMountBuilder.py +++ b/rocolib/builders/boat/mounts/DoubleServoMountBuilder.py @@ -7,9 +7,9 @@ c.addParameter("depth", 70, paramType="length") # c.addConstraint(("boat", "boat.width"), "width") # c.addConstraint(("boat", "boat.depth"), "depth") -c.addSubcomponent("lServoMount", "SideServoMount", inherit=("depth","length")) +c.addSubcomponent("lServoMount", "SideServoMount", inherit=("depth","length","width")) c.inheritAllInterfaces("lServoMount") -c.addSubcomponent("rServoMount", "SideServoMount", inherit=("depth","length")) +c.addSubcomponent("rServoMount", "SideServoMount", inherit=("depth","length","width")) c.inheritAllInterfaces("rServoMount") #Bottom belt c.addSubcomponent("lservodown", "Rectangle") diff --git a/rocolib/builders/boat/mounts/ServoMountAndStackBuilder.py b/rocolib/builders/boat/mounts/ServoMountAndStackBuilder.py index b5b66938ab3c1dfb66b44ea053cf396f529f317c..779645d985d6b0041d5fa12a87d2e9098e449fdf 100644 --- a/rocolib/builders/boat/mounts/ServoMountAndStackBuilder.py +++ b/rocolib/builders/boat/mounts/ServoMountAndStackBuilder.py @@ -3,35 +3,28 @@ from rocolib.api.Function import Function c = Component() -c.addSubcomponent("doubleServoMount", "DoubleServoMount", inherit=True, prefix=None) +c.addSubcomponent("doubleServoMount", "DoubleServoMount", inherit=("lServoMount.depth","lServoMount.width"), prefix=None) c.inheritAllInterfaces("doubleServoMount") -c.addSubcomponent("espStack", "StackMount", inherit=True) -#c.inheritAllInterfaces("espStack") +c.addSubcomponent("espStack", "StackMount", inherit="stack.length", prefix=None) +c.inheritAllInterfaces("espStack") c.addSubcomponent("portsplit", "SplitEdge") c.inheritAllInterfaces("portsplit") -c.addConstConstraint(("portsplit", "toplength"), (168,)) #(("doubleServoMount", "lServoMount.depth"), ("espStack", "stack.length")), "(x[0] + x[1],)" -c.addConstConstraint(("portsplit", "botlength"), (61, 10, 24, 73)) #but the value of the new component's boat.length parameter is completely disconnected from the value of the boat component's boat.length parameter +c.addConstraint(("portsplit", "toplength"), ("lServoMount.depth", "lServoMount.width", "stack.length"), "(x[0]*2+x[1]*2+10*2+x[2],)") +c.addConstraint(("portsplit", "botlength"), ("lServoMount.depth", "lServoMount.width", "stack.length"), "(x[2], 10, x[0], x[0]+x[1]*2+10)") c.addConnection(("doubleServoMount", "lServoInterface"), ("portsplit", "botedge2")) #both face the same direction c.addConnection(("espStack", "leftArmInterface"), ("portsplit", "botedge0")) #both face the same direction c.addSubcomponent("starsplit", "SplitEdge") c.inheritAllInterfaces("starsplit") -c.addConstConstraint(("starsplit", "toplength"), (168,)) -c.addConstConstraint(("starsplit", "botlength"), (73, 24, 10, 61)) #but the value of the new component's boat.length parameter is completely disconnected from the value of the boat component's boat.length parameter +c.addConstraint(("starsplit", "toplength"), ("lServoMount.depth", "lServoMount.width", "stack.length"), "(x[0] * 2 + x[1] * 2 + 10 * 2 + x[2],)") +c.addConstraint(("starsplit", "botlength"), ("lServoMount.depth", "lServoMount.width", "stack.length"), "(x[0]+x[1]*2+10, x[0], 10, x[2])") c.addConnection(("doubleServoMount", "rServoInterface"), ("starsplit", "botedge1")) c.addConnection(("espStack", "rightArmInterface"), ("starsplit", "botedge3"), tabWidth=10) -# c.addSubcomponent("topStarSplit", "SplitEdge") -# c.addConstraint(("topStarSplit", "toplength"), ("topDistance"), "(x,)") -# c.addConstraint(("topStarSplit", "botlength"), ("topDistance", "espStack.stack.length"), "(x[0]-x[1], x[1])") #but the value of the new component's boat.length parameter is completely disconnected from the value of the boat component's boat.length parameter -# c.addConnection(("topStarSplit", "topedge0"), ("boatwithservo", "topStar")) #both face the same direction -# c.addConnection(("topStarSplit", "botedge1"), ("espStack", "rightArmInterface"), tabWidth=10) - c.inheritInterface("lmountandservosplit", ("portsplit","topedge0")) c.inheritInterface("rmountandservosplit", ("starsplit","topedge0")) -#c.inheritInterface("espMountTab", ("espStack", "rightArmInterface")) #need to add this onto the boat, not the splitEdge c.toLibrary("ServoMountAndStack") diff --git a/rocolib/library/DoubleServoMount.yaml b/rocolib/library/DoubleServoMount.yaml index 73a4d07747479afb05183f5997d29017e30209c7..9bfacee8505c7d614401269db2d4a145b8f3bc42 100644 --- a/rocolib/library/DoubleServoMount.yaml +++ b/rocolib/library/DoubleServoMount.yaml @@ -67,6 +67,12 @@ parameters: minValue: 0 units: mm valueType: (float, int) + lServoMount.width: + defaultValue: 20 + spec: + minValue: 0 + units: mm + valueType: (float, int) rServoMount.depth: defaultValue: 24 spec: @@ -79,13 +85,19 @@ parameters: minValue: 0 units: mm valueType: (float, int) + rServoMount.width: + defaultValue: 20 + spec: + minValue: 0 + units: mm + valueType: (float, int) width: defaultValue: 90 spec: minValue: 0 units: mm valueType: (float, int) -source: ../builders/boat/DoubleServoMountBuilder.py +source: ../builders/boat/mounts/DoubleServoMountBuilder.py subcomponents: lServoMount: classname: SideServoMount @@ -95,6 +107,8 @@ subcomponents: parameter: lServoMount.depth length: parameter: lServoMount.length + width: + parameter: lServoMount.width lservoacross: classname: Rectangle kwargs: {} @@ -123,6 +137,8 @@ subcomponents: parameter: rServoMount.depth length: parameter: rServoMount.length + width: + parameter: rServoMount.width rservoacross: classname: Rectangle kwargs: {} diff --git a/rocolib/library/ServoMountAndStack.yaml b/rocolib/library/ServoMountAndStack.yaml index 749f50e6e2d0287b923ecb6eb354f5c6b66082a1..0b35228c8afeb3175475c4db1604526c1a86b64e 100644 --- a/rocolib/library/ServoMountAndStack.yaml +++ b/rocolib/library/ServoMountAndStack.yaml @@ -42,6 +42,12 @@ interfaces: doubleServoMount.rServoMount.rightInterface: interface: rServoMount.rightInterface subcomponent: doubleServoMount + espStack.leftArmInterface: + interface: leftArmInterface + subcomponent: espStack + espStack.rightArmInterface: + interface: rightArmInterface + subcomponent: espStack lmountandservosplit: interface: topedge0 subcomponent: portsplit @@ -1249,230 +1255,60 @@ interfaces: interface: topedge99 subcomponent: starsplit parameters: - depth: - defaultValue: 70 - spec: - minValue: 0 - units: mm - valueType: (float, int) - espStack.depth: - defaultValue: 70 - spec: - minValue: 0 - units: mm - valueType: (float, int) - espStack.lArm._dx: - defaultValue: 0 - spec: - minValue: null - units: mm - valueType: (float, int) - espStack.lArm._dy: - defaultValue: 0 - spec: - minValue: null - units: mm - valueType: (float, int) - espStack.lArm._dz: - defaultValue: 0 - spec: - minValue: null - units: mm - valueType: (float, int) - espStack.lArm._q_a: - defaultValue: 1 - spec: - maxValue: 1 - minValue: -1 - valueType: (int, float) - espStack.lArm._q_i: - defaultValue: 0 - spec: - maxValue: 1 - minValue: -1 - valueType: (int, float) - espStack.lArm._q_j: - defaultValue: 0 - spec: - maxValue: 1 - minValue: -1 - valueType: (int, float) - espStack.lArm._q_k: - defaultValue: 0 - spec: - maxValue: 1 - minValue: -1 - valueType: (int, float) - espStack.rArm._dx: - defaultValue: 0 - spec: - minValue: null - units: mm - valueType: (float, int) - espStack.rArm._dy: - defaultValue: 0 - spec: - minValue: null - units: mm - valueType: (float, int) - espStack.rArm._dz: - defaultValue: 0 - spec: - minValue: null - units: mm - valueType: (float, int) - espStack.rArm._q_a: - defaultValue: 1 - spec: - maxValue: 1 - minValue: -1 - valueType: (int, float) - espStack.rArm._q_i: - defaultValue: 0 - spec: - maxValue: 1 - minValue: -1 - valueType: (int, float) - espStack.rArm._q_j: - defaultValue: 0 - spec: - maxValue: 1 - minValue: -1 - valueType: (int, float) - espStack.rArm._q_k: - defaultValue: 0 - spec: - maxValue: 1 - minValue: -1 - valueType: (int, float) - espStack.stack.brains: - defaultValue: esp32stack - spec: - valueType: str - espStack.stack.dy1: - defaultValue: 18 - spec: - parameterType: length - espStack.stack.length: - defaultValue: 61 - spec: - minValue: 0 - units: mm - valueType: (float, int) - espStack.width: - defaultValue: 70 - spec: - minValue: 0 - units: mm - valueType: (float, int) lServoMount.depth: defaultValue: 24 spec: minValue: 0 units: mm valueType: (float, int) - lServoMount.length: - defaultValue: 34 + lServoMount.width: + defaultValue: 20 spec: minValue: 0 units: mm valueType: (float, int) - rServoMount.depth: - defaultValue: 24 - spec: - minValue: 0 - units: mm - valueType: (float, int) - rServoMount.length: - defaultValue: 34 - spec: - minValue: 0 - units: mm - valueType: (float, int) - width: - defaultValue: 90 + stack.length: + defaultValue: 61 spec: minValue: 0 units: mm valueType: (float, int) -source: ../builders/boat/ServoMountAndStackBuilder.py +source: ../builders/boat/mounts/ServoMountAndStackBuilder.py subcomponents: doubleServoMount: classname: DoubleServoMount kwargs: {} parameters: - depth: - parameter: depth lServoMount.depth: parameter: lServoMount.depth - lServoMount.length: - parameter: lServoMount.length - rServoMount.depth: - parameter: rServoMount.depth - rServoMount.length: - parameter: rServoMount.length - width: - parameter: width + lServoMount.width: + parameter: lServoMount.width espStack: classname: StackMount kwargs: {} parameters: - depth: - parameter: espStack.depth - lArm._dx: - parameter: espStack.lArm._dx - lArm._dy: - parameter: espStack.lArm._dy - lArm._dz: - parameter: espStack.lArm._dz - lArm._q_a: - parameter: espStack.lArm._q_a - lArm._q_i: - parameter: espStack.lArm._q_i - lArm._q_j: - parameter: espStack.lArm._q_j - lArm._q_k: - parameter: espStack.lArm._q_k - rArm._dx: - parameter: espStack.rArm._dx - rArm._dy: - parameter: espStack.rArm._dy - rArm._dz: - parameter: espStack.rArm._dz - rArm._q_a: - parameter: espStack.rArm._q_a - rArm._q_i: - parameter: espStack.rArm._q_i - rArm._q_j: - parameter: espStack.rArm._q_j - rArm._q_k: - parameter: espStack.rArm._q_k - stack.brains: - parameter: espStack.stack.brains - stack.dy1: - parameter: espStack.stack.dy1 stack.length: - parameter: espStack.stack.length - width: - parameter: espStack.width + parameter: stack.length portsplit: classname: SplitEdge kwargs: {} parameters: botlength: - - 61 - - 10 - - 24 - - 73 - toplength: &id001 - - 168 + function: (x[2], 10, x[0], x[0]+x[1]*2+10) + parameter: &id001 + - lServoMount.depth + - lServoMount.width + - stack.length + toplength: + function: (x[0]*2+x[1]*2+10*2+x[2],) + parameter: *id001 starsplit: classname: SplitEdge kwargs: {} parameters: botlength: - - 73 - - 24 - - 10 - - 61 - toplength: *id001 + function: (x[0]+x[1]*2+10, x[0], 10, x[2]) + parameter: *id001 + toplength: + function: (x[0] * 2 + x[1] * 2 + 10 * 2 + x[2],) + parameter: *id001 diff --git a/rocolib/output/ServoMountAndStack/graph-anim.svg b/rocolib/output/ServoMountAndStack/graph-anim.svg index cb06156e22a340c54458975bb61a997c8a5abd62..348e573eb97ae1669832d01249ca2f2231dcc183 100644 --- a/rocolib/output/ServoMountAndStack/graph-anim.svg +++ b/rocolib/output/ServoMountAndStack/graph-anim.svg @@ -11,11 +11,11 @@ <line stroke="#000000" x1="115.00000000000001" x2="120.00000000000001" y1="98.00000000000001" y2="98.00000000000001"/> <line stroke="#000000" x1="0.0" x2="34.0" y1="98.00000000000001" y2="98.00000000000001"/> <line opacity="0.5" stroke="#0000ff" x1="34.0" x2="0.0" y1="74.0" y2="74.0"/> - <line stroke="#000000" x1="0.0" x2="0.0" y1="74.0" y2="1.0000000000000002"/> + <line stroke="#000000" x1="0.0" x2="0.0" y1="74.0" y2="0.0"/> <line stroke="#000000" x1="0.0" x2="0.0" y1="108.00000000000001" y2="98.00000000000001"/> <line stroke="#000000" x1="0.0" x2="0.0" y1="169.00000000000003" y2="169.00000000000003"/> - <line stroke="#000000" x1="0.0" x2="0.0" y1="1.0000000000000002" y2="169.00000000000003"/> - <line stroke="#000000" x1="0.0" x2="0.0" y1="1.0000000000000002" y2="1.0000000000000002"/> + <line stroke="#000000" x1="0.0" x2="0.0" y1="0.0" y2="169.00000000000003"/> + <line stroke="#000000" x1="0.0" x2="0.0" y1="0.0" y2="0.0"/> <line opacity="0.25" stroke="#0000ff" x1="36.138621999185304" x2="36.138621999185304" y1="108.00000000000001" y2="169.00000000000003"/> <line stroke="#000000" x1="0.0" x2="36.138621999185304" y1="169.00000000000003" y2="169.00000000000003"/> <line stroke="#000000" x1="36.138621999185304" x2="0.0" y1="108.00000000000001" y2="108.00000000000001"/> @@ -102,9 +102,9 @@ <line opacity="0.5" stroke="#0000ff" x1="130.0" x2="164.0" y1="98.00000000000001" y2="98.00000000000001"/> <line stroke="#000000" x1="130.0" x2="130.0" y1="64.00000000000001" y2="3.0000000000000004"/> <line stroke="#000000" x1="130.0" x2="130.0" y1="74.0" y2="64.00000000000001"/> - <line stroke="#000000" x1="130.0" x2="130.0" y1="171.00000000000003" y2="98.00000000000001"/> - <line stroke="#000000" x1="130.0" x2="130.0" y1="171.00000000000003" y2="171.00000000000003"/> - <line stroke="#000000" x1="130.0" x2="130.0" y1="3.0000000000000004" y2="171.00000000000003"/> + <line stroke="#000000" x1="130.0" x2="130.0" y1="172.00000000000003" y2="98.00000000000001"/> + <line stroke="#000000" x1="130.0" x2="130.0" y1="172.00000000000003" y2="172.00000000000003"/> + <line stroke="#000000" x1="130.0" x2="130.0" y1="3.0000000000000004" y2="172.00000000000003"/> <line stroke="#000000" x1="130.0" x2="130.0" y1="3.0000000000000004" y2="3.0000000000000004"/> <line stroke="#000000" x1="130.0" x2="130.0" y1="98.00000000000001" y2="118.00000000000001"/> <line stroke="#000000" x1="164.0" x2="164.0" y1="118.00000000000001" y2="98.00000000000001"/> diff --git a/rocolib/output/ServoMountAndStack/graph-autofold-default.dxf b/rocolib/output/ServoMountAndStack/graph-autofold-default.dxf index 42cea247808030e55fa8ee50040d05e00f9a29c5..138411e35f07f4533afaf447c6765d378bb152f2 100644 --- a/rocolib/output/ServoMountAndStack/graph-autofold-default.dxf +++ b/rocolib/output/ServoMountAndStack/graph-autofold-default.dxf @@ -1175,7 +1175,7 @@ cut 11 0.0 21 -1.0000000000000002 +0.0 31 0.0 0 @@ -1223,7 +1223,7 @@ cut 10 0.0 20 -1.0000000000000002 +0.0 30 0.0 11 @@ -1241,13 +1241,13 @@ cut 10 0.0 20 -1.0000000000000002 +0.0 30 0.0 11 0.0 21 -1.0000000000000002 +0.0 31 0.0 0 @@ -2823,7 +2823,7 @@ cut 10 130.0 20 -171.00000000000003 +172.00000000000003 30 0.0 11 @@ -2841,13 +2841,13 @@ cut 10 130.0 20 -171.00000000000003 +172.00000000000003 30 0.0 11 130.0 21 -171.00000000000003 +172.00000000000003 31 0.0 0 @@ -2865,7 +2865,7 @@ cut 11 130.0 21 -171.00000000000003 +172.00000000000003 31 0.0 0 diff --git a/rocolib/output/ServoMountAndStack/graph-autofold-graph.dxf b/rocolib/output/ServoMountAndStack/graph-autofold-graph.dxf index 65512a431585d28fe69d5bb6b1505ce317ccd891..1a7f73324d990f2b4a814ef5b11661f64e819185 100644 --- a/rocolib/output/ServoMountAndStack/graph-autofold-graph.dxf +++ b/rocolib/output/ServoMountAndStack/graph-autofold-graph.dxf @@ -1135,7 +1135,7 @@ LINE 11 0.0 21 -1.0000000000000002 +0.0 31 0.0 0 @@ -1183,7 +1183,7 @@ LINE 10 0.0 20 -1.0000000000000002 +0.0 30 0.0 11 @@ -1201,13 +1201,13 @@ LINE 10 0.0 20 -1.0000000000000002 +0.0 30 0.0 11 0.0 21 -1.0000000000000002 +0.0 31 0.0 0 @@ -2783,7 +2783,7 @@ LINE 10 130.0 20 -171.00000000000003 +172.00000000000003 30 0.0 11 @@ -2801,13 +2801,13 @@ LINE 10 130.0 20 -171.00000000000003 +172.00000000000003 30 0.0 11 130.0 21 -171.00000000000003 +172.00000000000003 31 0.0 0 @@ -2825,7 +2825,7 @@ LINE 11 130.0 21 -171.00000000000003 +172.00000000000003 31 0.0 0 diff --git a/rocolib/output/ServoMountAndStack/graph-lasercutter.svg b/rocolib/output/ServoMountAndStack/graph-lasercutter.svg index cd575c1796d20bbb5a8183826de4ced7004d528e..755cd98b8de0532c7a50c443ec33447ed78cd01d 100644 --- a/rocolib/output/ServoMountAndStack/graph-lasercutter.svg +++ b/rocolib/output/ServoMountAndStack/graph-lasercutter.svg @@ -11,11 +11,11 @@ <line stroke="#000000" x1="115.00000000000001" x2="120.00000000000001" y1="98.00000000000001" y2="98.00000000000001"/> <line stroke="#000000" x1="0.0" x2="34.0" y1="98.00000000000001" y2="98.00000000000001"/> <line stroke="#0000ff" stroke-dasharray="2 6" stroke-dashoffset="5" x1="34.0" x2="0.0" y1="74.0" y2="74.0"/> - <line stroke="#000000" x1="0.0" x2="0.0" y1="74.0" y2="1.0000000000000002"/> + <line stroke="#000000" x1="0.0" x2="0.0" y1="74.0" y2="0.0"/> <line stroke="#000000" x1="0.0" x2="0.0" y1="108.00000000000001" y2="98.00000000000001"/> <line stroke="#000000" x1="0.0" x2="0.0" y1="169.00000000000003" y2="169.00000000000003"/> - <line stroke="#000000" x1="0.0" x2="0.0" y1="1.0000000000000002" y2="169.00000000000003"/> - <line stroke="#000000" x1="0.0" x2="0.0" y1="1.0000000000000002" y2="1.0000000000000002"/> + <line stroke="#000000" x1="0.0" x2="0.0" y1="0.0" y2="169.00000000000003"/> + <line stroke="#000000" x1="0.0" x2="0.0" y1="0.0" y2="0.0"/> <line stroke="#0000ff" stroke-dasharray="2 6" stroke-dashoffset="5" x1="36.138621999185304" x2="36.138621999185304" y1="108.00000000000001" y2="169.00000000000003"/> <line stroke="#000000" x1="0.0" x2="36.138621999185304" y1="169.00000000000003" y2="169.00000000000003"/> <line stroke="#000000" x1="36.138621999185304" x2="0.0" y1="108.00000000000001" y2="108.00000000000001"/> @@ -102,9 +102,9 @@ <line stroke="#0000ff" stroke-dasharray="2 6" stroke-dashoffset="5" x1="130.0" x2="164.0" y1="98.00000000000001" y2="98.00000000000001"/> <line stroke="#000000" x1="130.0" x2="130.0" y1="64.00000000000001" y2="3.0000000000000004"/> <line stroke="#000000" x1="130.0" x2="130.0" y1="74.0" y2="64.00000000000001"/> - <line stroke="#000000" x1="130.0" x2="130.0" y1="171.00000000000003" y2="98.00000000000001"/> - <line stroke="#000000" x1="130.0" x2="130.0" y1="171.00000000000003" y2="171.00000000000003"/> - <line stroke="#000000" x1="130.0" x2="130.0" y1="3.0000000000000004" y2="171.00000000000003"/> + <line stroke="#000000" x1="130.0" x2="130.0" y1="172.00000000000003" y2="98.00000000000001"/> + <line stroke="#000000" x1="130.0" x2="130.0" y1="172.00000000000003" y2="172.00000000000003"/> + <line stroke="#000000" x1="130.0" x2="130.0" y1="3.0000000000000004" y2="172.00000000000003"/> <line stroke="#000000" x1="130.0" x2="130.0" y1="3.0000000000000004" y2="3.0000000000000004"/> <line stroke="#000000" x1="130.0" x2="130.0" y1="98.00000000000001" y2="118.00000000000001"/> <line stroke="#000000" x1="164.0" x2="164.0" y1="118.00000000000001" y2="98.00000000000001"/> diff --git a/rocolib/output/ServoMountAndStack/graph-silhouette.dxf b/rocolib/output/ServoMountAndStack/graph-silhouette.dxf index 88a2003d7b09dfcf0bf09eeefb6644091fe75c89..ecd7846eca5f29fb3c7a6c9e99a8daaf41833bbe 100644 --- a/rocolib/output/ServoMountAndStack/graph-silhouette.dxf +++ b/rocolib/output/ServoMountAndStack/graph-silhouette.dxf @@ -1135,7 +1135,7 @@ LINE 11 0.0 21 -1.0000000000000002 +0.0 31 0.0 0 @@ -1183,7 +1183,7 @@ LINE 10 0.0 20 -1.0000000000000002 +0.0 30 0.0 11 @@ -1201,13 +1201,13 @@ LINE 10 0.0 20 -1.0000000000000002 +0.0 30 0.0 11 0.0 21 -1.0000000000000002 +0.0 31 0.0 0 @@ -2783,7 +2783,7 @@ LINE 10 130.0 20 -171.00000000000003 +172.00000000000003 30 0.0 11 @@ -2801,13 +2801,13 @@ LINE 10 130.0 20 -171.00000000000003 +172.00000000000003 30 0.0 11 130.0 21 -171.00000000000003 +172.00000000000003 31 0.0 0 @@ -2825,7 +2825,7 @@ LINE 11 130.0 21 -171.00000000000003 +172.00000000000003 31 0.0 0