Remix.run Logo
holg 10 hours ago

In the early 90s I wrote AutoLISP code for AutoCAD 9/10 that enabled a CSV → template → parametric drawing workflow. You could define components in spreadsheets, feed them through templates, and generate complete technical drawings automatically.

I've never seen anyone else use this approach. Now I've built an interpreter in Rust/WASM so it can run in the browser - partly nostalgia, partly preservation before this knowledge disappears entirely.

The lisp/ folder contains some LSP files from that era, others i recreated from memory.

Repo: https://github.com/holg/acadlisp/

What kind of drawings were you generating? Electrical schematics, mechanical parts, architecture? We also have some playground, to toy around with LISP and some function generator, to demonstrate Lisp usage for math...

casselc 3 hours ago | parent | next [-]

If you look at a map of the fiber-optic network in the US, my parents spent most of the 90s surveying the portion along the Gulf coast from Texas to Florida and up the Atlantic coast to New England for Sprint, MCI, Level 3, and other companies that no longer exist and AutoLISP was used to generate most of their drawings.

From what I can remember, we made a spreadsheet template that captured the title block information and a list of bearings and distances with some optional columns for field notes, landmarks/monuments, elevations and other measurements, etc. and I wrote some AutoLISP code that would generate an overview drawing and a set of scale drawings for the route. It figured out the bounds for each segment based on the scale and drawing size and then drew the route like a turtle and added the various callouts and a consistent title block and legend. There was also some ability to draw details about the railroad/pipeline whose right of way was being used, but I don't remember exactly how it worked.

My mom (secretarially trained typist, self-taught Lotus/Excel wiz, former drafting assistant at an RBOC) would enter everything into the template and use it to generate basis drawings which they might then tweak and finalize by hand. It dramatically reduced the amount of time they spent creating drawings to the point they could usually finish the drawings for a week of surveying in a couple of hours. I like to think of it as my small contribution to the Internet.

I was in high school at the time and taught myself AutoLISP from some combination of in-app docs/help and mall bookstore fare. Now I desperately want to go dig through floppy disks at my parents' place to see if any remnants remain to look back at how younger me did everything. It was the first truly useful software that I ever wrote, and in hindsight, might've planted the brainworm that led me to Clojure decades later :)

msisk6 an hour ago | parent | prev | next [-]

I wrote a ton of AutoLISP back in the day to do similar things to generate well logs for environmental and geotechnical reports. Fun stuff.

In 1990 I went to work at Autodesk and got to work on all kinds of stuff over the next decade -- AutoLISP was the bridge that got me into tech as a profession over the geology field work I was doing. It's been a wild ride.

mickdarling 6 hours ago | parent | prev | next [-]

Ah, AutoLisp, that brings back the memories.

I can tell you that a good number of the design drawings for the higher floors in the Venetian resort in Las Vegas were assembled with AutoLisp scripts. The scripts I created grabbed components from other drawings that were already made to assemble a first pass set of drawings for floors that hadn't been fully designed yet, since the floors all had components of other floors.

They were still in the design process for the upper floors, while the lower floors had already been finished and they were moving up the building.

51Cards 8 hours ago | parent | prev | next [-]

We were on the same page. I also built something similar for a Conveyor company here in Canada in the early 90's. We parameterized all their tech drawings (or at least the initial versions) from their component libraries. Was a great project. Not sure how long they used it, they eventually acquired the resources to support it internally (I was an independent AutoLISP contractor). Good times back then. I haven't done AutoLISP in years now but great to see it's still around.

holg 8 hours ago | parent [-]

Ha, so I wasn't alone! Conveyors are a perfect fit - standardized components, parametric variations. The pattern was obvious once you saw it. Good to know it worked for you too.

lambda 10 hours ago | parent | prev | next [-]

I get a 404 for that repo; is it private?

Also, the page you link to in the original post is in German; it might be nice to have an English page for the mostly English speaking audience here on HN

holg 10 hours ago | parent | next [-]

fixed it, thx for the notice

weare 9 hours ago | parent | prev [-]

[flagged]

robomartin 7 hours ago | parent | prev | next [-]

AutoLISP is how I learned LISP back in the 80's. I probably used it for about twenty years. I wrote a massive amount of code to automate ACAD use in three areas: Schematic Capture, PCB Layout and Broadcast Facility design and Construction.

The first two were complimentary. Before that I was laying out PCB's by hand using (who can remember?) Vector tools and Xacto knives. Switching to ACAD with AutoLISP-based automation was a game changer.

Broadcast facilities are not very different from data centers, in the sense that you have loads of racks filled with equipment. I would say that one of the key differences was that the equipment was not as homogenous as it might be in data centers. Back then I was very involved in some massive studio projects, both in terms of facility design (not the architecture, the design and installation of the technology) and custom software/hardware for the same industry. Once again, in the early days all wiring diagrams were being done the old fashion way, with pencil and D-size paper on a drawing table.

I started with ACAD version 1.0 or 1.1, I can't remember. This ran on an 8086 CPM computer build on an S-100 frame. It actually had an 8087 math coprocessor board and another board with 512K (you read that right) of RAM to mount as a RAM disk. The computer had 64K of RAM. So, yeah, early ACAD ran on a system with 64K of RAM.

The studio AutoLISP software was the most extensive. It took advantage of 3D features to do such things route cables between equipment in different racks and rooms as well as compute the required cable lengths. It would generate cable cut lists and labels for the wiring crew, etc.

This also included managing a symbol library for these designs, much as a tool like KiCAD or Altium (which has now officially gone to shit!) manages both schematic symbol and PCB footprints for ECAD work. The equipment definitions included such things as input/output signal types, required cable type, connector types, wiring schematic and rack mount models (for laying out where in the racks each device would be installed).

This is work that I evolved over years as we designed and built many installations across the country. It was a valuable internal tool with competitive advantages. We left that industry behind a very long time ago, but I remember that time fondly. Technology was evolving at breakneck speed and there were incredible opportunities to develop innovative solutions across the entire technology stack, from embedded all the way up to custom equipment.

holg 7 hours ago | parent [-]

This is beautiful. Schematic capture, PCB layout, broadcast facilities - and 3D cable routing with auto-generated cut lists and labels. That's the workflow taken to its full potential. 64K RAM, 8086 with math coprocessor, ACAD 1.0. Memory was such a pain back then. I eventually got a Quadra 700 (68MB) with A/UX - Unix on a Mac felt like the future. Fun fact: we got Betz's original XLISP (C) running in WASM for a benchmark. It destroys my Rust version. But speed was never the point - the CAD workflow was. And yours proves the pattern scaled far beyond what I did with electrical schematics.

robomartin 6 hours ago | parent [-]

This is what the facility design wiring diagrams looked like:

https://imgur.com/a/niXkSt7

It shows that per-connector metadata that was added to each equipment symbol. The metadata allowed AutoLISP to do some really cool and intelligent things.

The PCB layout tool had interesting constraints. One of the issues was that pad graphics took up way too much memory. So, what I had to do, was to layout PCB's using a symbol that consisted of two lines forming an X instead of real pads. The symbol name encoded the diameter, hole size, etc.

When the layout was done, I had to unload a bunch of modules and then run an AutoLISP routine that would find and replace all "PAD_NNNN_X" symbols with real "PAD_NNNN" symbols before plotting.

Once ACAD migrated to Windows this was no longer an issue. Of course, by that time, accessible ECAD tools were around. I think my last ACAD schematic and layout was somewhere around 1993. I just didn't have the money to invest in ECAD tools of the era, so my ACAD tool served a purpose.

stocksinsmocks 9 hours ago | parent | prev [-]

I have a lot of interest in this space for infrastructure design. Thanks for sharing.