CADCAL+CALScript for Lisp programmers
CADCAL+CALScript is extremely interesting for Lisp programmers because it's not only written in Lisp and comes with an extensive library of Lisp functions, but it also allows you to create Lisp functions from simple scripts and make your existing Lisp functions "smart" simply by incorporating them into a CALScript script. You can read more about this here:
CADCAL+CALScript also comes with a large number of Lisp functions that save Lisp programmers a lot of work. An overview of the Lisp library is still to come; the website is still under construction, but here's a taster:
(XDATA-PUT <ename> <key> data)
<data> can be anything familiar from Lisp, except PICKSETS (these can be stored as lists of enames, if necessary; there's the function (SS->LIST <pickset> ) for this). This allows you to attach any data to an entity, including lists, nested lists, symbols, dotted pairs, and even entity names. For example, you can save an entire ENTGET list as XDATA:
(setq en (car (entsel))
el (entget (car (entsel))))
(xdata-put en "TEST" el)
This data can then be read again with (xdata-get <ename> <key> ), in this example with (xdata-get en "TEST"). Entity names remain intact even beyond the CAD session and refer to any newly assigned entity name when read.Analogous to XDATA-PUT and XDATA-GET, there are also (XDICTIONARY-PUT <ename> <key> <data> ) and XDICTIONARY-GET, and (DICTIONARY-PUT <name> <key> <data> ) and DICTIONARY-GET. With DICTIONARY-PUT, you can save your own system variables in the DWG.CADCAL+CALScript is free; download from https://www.calscript.com/home.html. Please let me know what you think.