----------- December 2022 --------------

I started working on this project again. I made a promising (but ugly) prototype and I think this could be made into a commercially successful app.

My biggest fear is that my geometry code is not up for complicated elements with openings or weird cuts in them. Luckily the vast majority of building elements I know of are just boxes.

Anyway, I love working on this and I am excited to see were it goes.

----------- September 2022 -------------

A simple CAD tool for generating reinforcement plans for concrete building parts from 3d models.

  1. Load a 3d model
  2. Pick reference planes by clicking model faces
  3. Define: type, direction, diameter and amount of reinforcement for each plane
  4. Generate 2d views from the planes and export a PDF with all the views

This will probably not be an useful or finished app in the end. It is more of learning project for me. I want to create a simple CAD app framework that I can re-use for later projects, figure out how to create 2d views from a 3d model and how to create PDFs (see what libraries are available for that).

I also want to facilitate meta programming as much as possible and figure out what is possible and makes sense in that regard.

Written in C with the SOKOL libraries.

Recent Activity

A little bit late, but my wheel-reinvention-jam project is coming along well. &bewehr

Complete IFC (3d building file format used in the AEC industry) file reader generated from its EXPRESS description file.
I am able to render walls and slabs from the file, but not at the right location yet.

I didn't end up with something visual or interactive, but it was very insightful.
I was trying to make a CAD app and use metaprogramming for it as much as possible.

What I did:
1. Day: Trying out metadesk and think about how it might help with me creating an app. I realised it is good for describing data, but not so good in describing a program.

2. Day: Trying out sokol_gfx and sokol_app. Also wrote a metaprogram that just takes a DATA_main.c file (in which I write the app in) and turns it into a GEND_main.c file (GEND=generated). I did some keyword replacement just so the metaprogram does something.

3. Day: Started writing the app. I decided that I want a rectangle-struct for basically everything on the screen (backgrounds, buttons, text, ...). I didn't end up writing much code for it though.

4. Day: Now that everything is just this rectangle-object I can describe most of the program in a tree structure. So I did create a META_DATA block (it is a variadic macro so my IDE wouldn't mark it as syntax errors) that holds metadesk data describing rectangles (and other stuff). The metaprogram reads that block and adds the rectangle creation code to a location I marked in the code.

Conclusion: I now have a nice setup for adding arbitrary data in my program and generate code from it.
Running a metaprogram on your code, even when it doesn't do much, can help thinking on a higher level and I think it helps making your code shorter and focus on more relevant things.