Creating 3d model building notation using ASCII This question is a little different to your typical questions but I think this is the best community to ask this in.

I've been interested in lego technic for most my life and have been trying to come up with a way to quickly and easily represent axles, pins, axle holes and pin holes on computers universally. I decided to  use plain ASCII since it is quicker and works on mobile devices and on desktops.

I made a good representation of the pins, axles and holes in one axis but the problem is: ASCII is 2D but lego technic is 3D, so rotated or flipped lego parts are very hard to represent and if the entire building axis changes then so do the part orientations.

Is there some way I can do this?

Here is my syntax:

facing the front:

+ axle hole
× axle
o pin hole
. pin

facing the side:

&lt; axle hole
= axle
Z pin hole
- pin

facing the side rotated 90 degrees:

V axle hole
! axle
N pin hole
| pin


if a symbol is underlined it means it is half thickness, if not it is worth 1L
As you’ve found, it’s hard to use a two-dimensional format, even from multiple viewpoints, to represent a 3D structure that’s not axis-aligned. I’m not sure I have a useful suggestion there—there’s a reason most 3D file formats support specifying translation/rotation/scaling of individual parts.

A different direction you might try would be using the existing work in the LDraw project; their file format is technically ASCII, and though it’s closer to a standard 3D format in that the fundamental parts (like studs) are built out of lists of vertices / triangles / etc., the higher-level pieces (bricks, plates, etc.) are built out of references to the fundamental ones, which sounds like it’s roughly along the lines of what you’re after. There’s an assortment of third-party design tools that provide GUIs on top of the LDraw parts library; of those, I’m partial to Bricksmith.