From ed0b70e370bd8c4d75f7c73624a9cb861f641ef0 Mon Sep 17 00:00:00 2001
From: Grace Kwak <gracekwak25@gmail.com>
Date: Sat, 21 Aug 2021 13:07:23 -0700
Subject: [PATCH] add parameters to batterystackholder

---
 .../boat/BatteryStackHolderBuilder.py         | 16 +++++---
 .../builders/boat/BatteryStackMountBuilder.py |  2 +
 rocolib/library/BatteryStackHolder.yaml       | 39 +++++++++++++++----
 3 files changed, 44 insertions(+), 13 deletions(-)

diff --git a/rocolib/builders/boat/BatteryStackHolderBuilder.py b/rocolib/builders/boat/BatteryStackHolderBuilder.py
index 5bedcae..3bbd56d 100644
--- a/rocolib/builders/boat/BatteryStackHolderBuilder.py
+++ b/rocolib/builders/boat/BatteryStackHolderBuilder.py
@@ -1,18 +1,24 @@
 from rocolib.api.components.Component import Component
 from rocolib.api.Function import Function
 
+#A 5-sided rectangular beam enclosure
+
 c = Component()
 
 c.addParameter("numBatteries", 3, paramType="count", minValue=1, maxValue=10)
 
+c.addParameter("batterylength", 60, paramType="length")
+c.addParameter("batterywidth", 17, paramType="length")
+c.addParameter("batterydepth", 9, paramType="length")
+
 c.addSubcomponent("holder", "SimpleRectBeam", inherit=True, prefix=None)
-c.addConstConstraint(("holder", "length"), 60)
-c.addConstraint(("holder", "width"), "numBatteries", "9 * x")
-c.addConstConstraint(("holder", "depth"), 17)
+c.addConstraint(("holder", "length"), "batterylength")
+c.addConstraint(("holder", "width"), ("numBatteries", "batterydepth"), "x[0] * x[1]")
+c.addConstraint(("holder", "depth"), "batterywidth")
 
 c.addSubcomponent("bottom", "Rectangle", inherit=True)
-c.addConstraint(("bottom", "l"), ("numBatteries"), "9 * x")
-c.addConstConstraint(("bottom", "w"), 17)
+c.addConstraint(("bottom", "l"), ("numBatteries", "batterydepth"), "x[0] * x[1]")
+c.addConstraint(("bottom", "w"), "batterywidth")
 
 c.addConnection(("bottom", "t"), ("holder", "botedge0"), angle=90)
 c.addConnection(("bottom", "l"), ("holder", "botedge1"), tabWidth=5, angle=90)
diff --git a/rocolib/builders/boat/BatteryStackMountBuilder.py b/rocolib/builders/boat/BatteryStackMountBuilder.py
index 7757ba6..98db012 100644
--- a/rocolib/builders/boat/BatteryStackMountBuilder.py
+++ b/rocolib/builders/boat/BatteryStackMountBuilder.py
@@ -1,6 +1,8 @@
 from rocolib.api.components.Component import Component
 from rocolib.api.Function import Function
 
+#A 4-sided rectangular beam with a cutout for the battery terminals and wings for mounting
+
 c = Component()
 
 c.addParameter("boatwidth", 90, paramType="length")
diff --git a/rocolib/library/BatteryStackHolder.yaml b/rocolib/library/BatteryStackHolder.yaml
index ae7b3d0..dd4bc3a 100644
--- a/rocolib/library/BatteryStackHolder.yaml
+++ b/rocolib/library/BatteryStackHolder.yaml
@@ -74,6 +74,24 @@ parameters:
     defaultValue: true
     spec:
       valueType: bool
+  batterydepth:
+    defaultValue: 9
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
+  batterylength:
+    defaultValue: 60
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
+  batterywidth:
+    defaultValue: 17
+    spec:
+      minValue: 0
+      units: mm
+      valueType: (float, int)
   bottom._dx:
     defaultValue: 0
     spec:
@@ -140,7 +158,7 @@ parameters:
       minValue: 0
       units: mm
       valueType: (float, int)
-source: ../builders/boat/BatteryStackHolder.py
+source: ../builders/boat/BatteryStackHolderBuilder.py
 subcomponents:
   bottom:
     classname: Rectangle
@@ -161,9 +179,12 @@ subcomponents:
       _q_k:
         parameter: bottom._q_k
       l:
-        function: 9 * x
-        parameter: numBatteries
-      w: 17
+        function: x[0] * x[1]
+        parameter: &id001
+        - numBatteries
+        - batterydepth
+      w:
+        parameter: batterywidth
   holder:
     classname: SimpleRectBeam
     kwargs: {}
@@ -184,8 +205,10 @@ subcomponents:
         parameter: _q_k
       addTabs:
         parameter: addTabs
-      depth: 17
-      length: 60
+      depth:
+        parameter: batterywidth
+      length:
+        parameter: batterylength
       width:
-        function: 9 * x
-        parameter: numBatteries
+        function: x[0] * x[1]
+        parameter: *id001
-- 
GitLab