4 ms·
Interestingly I am myself doing a Ph.d. in photonics engineering, but I am almost entirely in signal processing and information theory. Anyway, thanks for the
by henrikeh 8y ago
Interestingly I am myself doing a Ph.d. in photonics engineering, but I am almost entirely in signal processing and information theory.
Anyway, thanks for the links and the thoughts! Amusingly almost all of the links were already visited! I've looked several times at your library for geometric constraint solving in Python and almost thought about using it for my own projects. In the end however I think SolveSpace is the best choice -- it is solid, actively developed and fast.
Your ambition of having the drawings be singularly specified by their constraints is absolutely admirable, but from my experience it is simple not feasible nor desirable. First, the optimization problem is difficult to solve and it will be difficult to specify it such that there is only one unique solution. Secondly, I think the human provided prototype (through a GUI) is a critical part of the design process which makes this technology usable. But I understand the desire to have drawings specified only by constraints.
In the long term, if I am allowed to dream, I'd like to see the development of a more general purpose constraint-based and parametric drawing library. Right now I am focused on PCB footprints, but many of same ideas are useful in electrical diagrams, optical diagrams, GUIs, page layout etc etc. We'll see how far I get ;)
- sleavey 8y agoNice to see my work is not completely unnoticed, but, you are right to take it with a grain of salt as I don't actively maintain any of the stuff I linked! The paper I previously linked discusses the problem of "solution selection" as you state: the problem of selecting from systems with multiple solutions (for example, when one specific side of a triangle is constrained onto another line, it can do so in one of two directions or "orientations" as the paper refers to them). The paper presents two strategies for selecting solutions: a selection heuristic approach, whereby the user defines that they want a certain class of cluster such as one with clockwise angles; and a prototype-based selection method where the solution which most closely resembles the user's sketch is selected. I prefer the latter approach, but that's unfortunately the one that is buggy in the library I found. I completely agree about how awesome it would be to have a parametric drawing library. That's actually what my overall goal was to be, eventually, once I got the optical layout problem solved - there's nothing really to stop such a library from being generalised to any kind of drawing. I was surprised that I couldn't find one already, to be honest, as it would no doubt be really useful in untold applications. If you manage to get something working, please let me know :-)