rocolib issueshttps://git.uclalemur.com/roco/rocolib/-/issues2023-09-30T06:28:34Zhttps://git.uclalemur.com/roco/rocolib/-/issues/43cli option: python code2023-09-30T06:28:34Zmehtankcli option: python codecli flag to output a block of python code that does the same thing as the cli command [ kind of like a set -x in a bash script ]cli flag to output a block of python code that does the same thing as the cli command [ kind of like a set -x in a bash script ]https://git.uclalemur.com/roco/rocolib/-/issues/42Aliases for x[i], x.get(), x[i].get() in function2023-09-30T00:57:40ZmehtankAliases for x[i], x.get(), x[i].get() in function- [ ] create vars x0,x1,...xn when given a list of params to Function
- [ ] create functions d / d0, d1, ... etc. when x / x[i] is a dict
- [ ] turn the dict into a SimpleNamespace to allow dotted access instead of .get()- [ ] create vars x0,x1,...xn when given a list of params to Function
- [ ] create functions d / d0, d1, ... etc. when x / x[i] is a dict
- [ ] turn the dict into a SimpleNamespace to allow dotted access instead of .get()https://git.uclalemur.com/roco/rocolib/-/issues/41different color line for internal cut (decoration) vs external cut2023-09-26T01:02:29Zmehtankdifferent color line for internal cut (decoration) vs external cutTo be able to set cut order internal then external for better laser cutter performanceTo be able to set cut order internal then external for better laser cutter performancehttps://git.uclalemur.com/roco/rocolib/-/issues/40Internal folds don't get drawn to SVG2023-09-23T04:38:47ZmehtankInternal folds don't get drawn to SVGThis was a choice, why?
https://git.uclalemur.com/roco/rocolib/-/blob/main/rocolib/api/composables/graph/DrawingEdge.py#L14
(Or maybe the real problem is the auto fold->flex at:
https://git.uclalemur.com/roco/rocolib/-/blob/main/roco...This was a choice, why?
https://git.uclalemur.com/roco/rocolib/-/blob/main/rocolib/api/composables/graph/DrawingEdge.py#L14
(Or maybe the real problem is the auto fold->flex at:
https://git.uclalemur.com/roco/rocolib/-/blob/main/rocolib/api/composables/graph/DrawingEdge.py#L32
)https://git.uclalemur.com/roco/rocolib/-/issues/39Reload library on save2023-09-23T04:36:39ZmehtankReload library on saveWhen a new component is created then added to the library with .save or .toLibrary, it can't be accessed (e.g. as a subcomponent) in that same session. The library should get reloaded after a save.When a new component is created then added to the library with .save or .toLibrary, it can't be accessed (e.g. as a subcomponent) in that same session. The library should get reloaded after a save.https://git.uclalemur.com/roco/rocolib/-/issues/38Non-hole decorations only take first line segment, not all2023-09-23T04:35:02ZmehtankNon-hole decorations only take first line segment, not allhttps://git.uclalemur.com/roco/rocolib/-/blob/main/rocolib/api/composables/graph/Face.py#L413
Should also loop in the not-hole elsehttps://git.uclalemur.com/roco/rocolib/-/blob/main/rocolib/api/composables/graph/Face.py#L413
Should also loop in the not-hole elsehttps://git.uclalemur.com/roco/rocolib/-/issues/37dimensions attributes instead of keys2022-09-21T22:56:20Zmehtankdimensions attributes instead of keyse.g. servo.motorheight instead of servo.get("motorheight")e.g. servo.motorheight instead of servo.get("motorheight")0.4.xhttps://git.uclalemur.com/roco/rocolib/-/issues/36Better debounce2022-09-21T22:55:07ZmehtankBetter debounceCurrent parameter change debounce is really awkwardCurrent parameter change debounce is really awkward0.4.xhttps://git.uclalemur.com/roco/rocolib/-/issues/35Cleanup + unify tab/joint handling2022-08-30T20:33:42ZmehtankCleanup + unify tab/joint handlingTabs and joints are just different ways of attaching EdgePorts, so should probably be handled accordingly.
- [ ] Remove Drawing classes/methods in favor of standard regular Face and HyperEdge types
- [ ] Auto-tabify #22
- [ ] Cleanup i...Tabs and joints are just different ways of attaching EdgePorts, so should probably be handled accordingly.
- [ ] Remove Drawing classes/methods in favor of standard regular Face and HyperEdge types
- [ ] Auto-tabify #22
- [ ] Cleanup implementation
- [ ] Figure out how to represent general design-specified connections vs unique user-specified joining options0.4.xhttps://git.uclalemur.com/roco/rocolib/-/issues/34Cleanup utils2022-08-30T20:29:02ZmehtankCleanup utilsmove utils/utils.py into utils/__init__.py, in preparation for custom package utils in #21move utils/utils.py into utils/__init__.py, in preparation for custom package utils in #210.4.xhttps://git.uclalemur.com/roco/rocolib/-/issues/33Fully symbolic mesh2022-08-23T16:57:01ZmehtankFully symbolic meshMake mesh fully symbolic so that parameters can be changed on the fly without complete rebuildingMake mesh fully symbolic so that parameters can be changed on the fly without complete rebuilding0.3.xhttps://git.uclalemur.com/roco/rocolib/-/issues/32How to handle builder files / rethink yaml details2022-09-21T22:54:20ZmehtankHow to handle builder files / rethink yaml detailsCurrently we save the location of the builder file in the generated library .yaml definition, because if a subcomponent definition changes somehow, then the yaml will need to be re-generated with the new subcomponent details.
Seems redu...Currently we save the location of the builder file in the generated library .yaml definition, because if a subcomponent definition changes somehow, then the yaml will need to be re-generated with the new subcomponent details.
Seems redundant -- can we store the relevant info from the builder file in the yaml instead so that we wouldn't need to simply re-run it on a non-breaking subcomponent change?0.4.xhttps://git.uclalemur.com/roco/rocolib/-/issues/30canMate logic2022-08-18T00:03:05ZmehtankcanMate logicshould both fromPort and toPort check if canMate each other? What happens if one says no and the other says yes?should both fromPort and toPort check if canMate each other? What happens if one says no and the other says yes?https://git.uclalemur.com/roco/rocolib/-/issues/29inheritAllInterfaces should skip already connected interfaces2022-08-17T21:11:49ZmehtankinheritAllInterfaces should skip already connected interfacesThe default is that interfaces can only be connected once. If an already connected interface wants to be connected, it can be manually added.The default is that interfaces can only be connected once. If an already connected interface wants to be connected, it can be manually added.https://git.uclalemur.com/roco/rocolib/-/issues/28Should SplitEdge only divide one edge into 2?2022-08-16T07:01:39ZmehtankShould SplitEdge only divide one edge into 2?Any other split can be built up from many such splitedges, and a component factory could be used to create them. That'd clean up the problem with creating lots of interfaces that may not exist.Any other split can be built up from many such splitedges, and a component factory could be used to create them. That'd clean up the problem with creating lots of interfaces that may not exist.https://git.uclalemur.com/roco/rocolib/-/issues/27Figure out how to make all parameters symbolic [ in particular dimensions obj...2022-08-23T16:57:15ZmehtankFigure out how to make all parameters symbolic [ in particular dimensions objects ]As far as I can see, we have 5 types of parameters: int, float-or-int, bool, tuple-or-list, str; str is currently only used to represent dimensions objects. Currently only the first two i.e. numerics are turned into sympy Symbols.
We...As far as I can see, we have 5 types of parameters: int, float-or-int, bool, tuple-or-list, str; str is currently only used to represent dimensions objects. Currently only the first two i.e. numerics are turned into sympy Symbols.
We can probably turn booleans into symbols without caring too much about it; sympy's error checking will probably throw an error if we make a mistake.
tuple-or-list should turn into a Sympy Array. Do we need to know the size? I think SplitEdge is the only place this is used. Edit: Also offsets / origins, but we could split that into dx / dy.
What about dimensions objects? We want them to be Parameterized, but then how do we do math on individual parameters? Maybe we can get away with having a dimensions object be a sympy Array too, and then some way of mapping the parameters to array indices that we can use in Functions.0.3.xhttps://git.uclalemur.com/roco/rocolib/-/issues/26non-destructive make2022-08-07T01:51:22Zmehtanknon-destructive makeensure that make doesn't irreversibly alter underlying subcomponents so that you can call make() multiple times in a row.ensure that make doesn't irreversibly alter underlying subcomponents so that you can call make() multiple times in a row.https://git.uclalemur.com/roco/rocolib/-/issues/24Define abstract classes using ABC2022-08-05T18:47:14ZmehtankDefine abstract classes using ABCe.g. Composable. Port?e.g. Composable. Port?0.4.xhttps://git.uclalemur.com/roco/rocolib/-/issues/22auto-tabify2022-08-30T20:33:51Zmehtankauto-tabifyIf two edges are connected, and their faces have already been placed but the edges do not coincide, automatically add tabs instead.
Probably would need to set some sort of "auto-tab" flag in makeOutput, similar to how tabs vs finger joi...If two edges are connected, and their faces have already been placed but the edges do not coincide, automatically add tabs instead.
Probably would need to set some sort of "auto-tab" flag in makeOutput, similar to how tabs vs finger joints are definedhttps://git.uclalemur.com/roco/rocolib/-/issues/21Allow other python packages to extend rocolib2022-09-19T06:34:08ZmehtankAllow other python packages to extend rocolibOther developers should be able to create `Component`, `Composable`, and `Port` subclasses, and component definitions (via library .py, library .yaml, or builder files), and release them together as an integrated package that plays nice ...Other developers should be able to create `Component`, `Composable`, and `Port` subclasses, and component definitions (via library .py, library .yaml, or builder files), and release them together as an integrated package that plays nice with the rocolib api (without needing to MR to the main rocolib repo).
- [ ] Component / Composable / Port subclasses
- [x] Component library definitions
- [ ] utils0.4.x