Some people like Inkscape. It has a graphical user interface, but also allows you to enter precise coordinates if you want (and it's scriptable). There is even a plug-in that allows you to enter LaTeX directly (for labels and such). For example, for his honors thesis, a recent IWU Physics major found an Inkscape component library for optics to be useful. — However, on my Mac laptop, I've made from scratch all of the components contained in my own version of this open-source library of optical components, which I've posted to https://stenciltown.omnigroup.com/users/MQMLab/ . My version is for use with an application called OmniGraffle, which I've used to make all of the optical schematics you'll see in my lab procedurals — and in the example schematic shown below (which I made by following a similar example provided by Henning Vahlbruch).